NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3620 most downloaded on crates.io
Gossipsub protocol for libp2p
Last release 26 days ago
11 Sep 2026
Release timing varies
gaps range from 2 weeks to 8 months
Most releases are documented
notes for 46 of 53 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
54 releases · first in 2020
One column per quarter.
Fix unbounded growth of per-peer connected_peer.topics from GRAFT control messages (GHSA-g3g5-x568-qvqx). Backported from libp2p-gossipsub v0.49.5.
Fix unbounded growth of per-peer connected_peer.topics from GRAFT control messages
(GHSA-g3g5-x568-qvqx).
Backported from libp2p-gossipsub v0.49.5.
Change default TopicSubscriptionFilter from AllowAllSubscriptionFilter to MaxCountSubscriptionFilter<AllowAllSubscriptionFilter>
with default limits of 100 for both max_subscribed_topics and max_subscriptions_per_request,
providing built-in protection against excessive subscription requests.
See PR 6527.
Account for forwarded messages in topic_mesg_sent_* metrics.
See PR 6502
Simplify gossipsub control message validation by scanning protobuf bytes before decoding
to validate cumulative control message size, rather than decoding then counting individual IDs
to prevent memory amplification from decoding.
Introduce max_control_message_size (default 16KB) to limit total control bytes in an RPC.
Rename max_ihave_messages to max_ihave_messages_heartbeat.
Rename max_control_messages to max_control_messages_sent.
See PR #6486
Send all topic subscriptions in a single hello RPC when connecting to a new peer, aligning with the GossipSub spec and other implementations (Go, Nim, JS). See PR 6385.
Raise MSRV to 1.88.0. See PR 6273.
Revert migration to quick-protobuf, migrate back to prost.
See PR 6363.
Optimize IDONTWANT sending by avoiding broadcasts for already-seen messages and deduplicating recipient peers. See PR 6356
Rename metric topic_msg_sent_bytes to topic_msg_last_sent_bytes for accuracy.
See PR 6283
Add extra metrics for bytes received and sent, filtered and unfiltered for each topic. See PR 6192
Reduce log size by implementing custom Debug for RawMessage that logs data length instead of full byte arrays. See PR 6263
Log when sending and receiving messages. See PR 6234
Prevent mesh exceeding mesh_n_high. See PR 6184
Fix underflow when shuffling peers after prunning. See PR 6183
Implement gossipsub 1.3 partial messages extension. See PR 6275
Remove peer penalty for duplicate messages. See PR 6112
Remove Rpc from the public API.
See PR 6091
reduce allocations by replacing or_insert with or_insert_with
See PR 6136
Fix unsubscribe_backoff expecting number of seconds instead of Duration
See PR 6124
Fix incorrect default values in ConfigBuilder See PR 6113
Remove duplicated config set_topic_max_transmit_size method, prefer max_transmit_size_for_topic.
See PR 6173.
Switch the internal async-channel used to dispatch messages from NetworkBehaviour to the ConnectionHandler
with an internal priority queue. See PR 6175
gossipsub: do early return in for an empty input See PR 6208.
Refactor gossipsub with in-place negative-score peer removal. See PR 6209.
Remove wasm-bindgen feature and make wasm support implicit.
See PR 6102
Avoid direct casting from u128 to u64. See PR 6211.
Default TopicSubscriptionFilter to MaxCountSubscriptionFilter with caps of 2000 for max_subscribed_topics and max_subscriptions_per_request, capping p
TopicSubscriptionFilter to MaxCountSubscriptionFilter<AllowAllSubscriptionFilter>
with caps of 2000 for max_subscribed_topics and max_subscriptions_per_request,
capping per-peer subscription memory. Additionally, discard GRAFT control messages
for topics the peer has not previously SUBSCRIBEd to, while still applying the
existing backoff-violation scoring penalty where applicable.
See GHSA-g3g5-x568-qvqxHarden time arithmetic and bound remote PRUNE backoff. See CVE
Ignore invalid backoff values on peer prune. See CVE GHSA-gc42-3jg7-rxr2
chore(gossipsub): prepare v0.49.2
chore(gossipsub): prepare v0.49.2
Behaviour::with_metrics requirements, do not require DataTransform and TopicSubscriptionFilter to also impl Default
See PR 6097Fix applying P3 and P6 Score penalties when their weight is zero See PR 6097
Feature gate metrics related code. This changes some Behaviour constructor methods. See PR 6020
Feature gate metrics related code. This changes some Behaviour constructor methods.
See PR 6020
Send IDONTWANT before Publishing a new message. See PR 6017
Improve log messaging by renaming message to message_id. This change makes it log coherent to
the field and also improve duplication of message field.
See PR 5972
Fix a race condition for messages published which are already in the network. See PR 5928
Improve error messaging by renaming PublishError::InsufficientPeers to
PublishError::NoPeersSubscribedToTopic. This change makes it clearer that the error occurs
specifically when trying to publish to a topic with no subscribed peers, rather than a general
peer availability issue.
See PR 5912
Allow whitelisting topics for metrics to ensure metrics are recorded correctly for these topics. See PR 5895
Improve max_messages_per_rpc consistency by ensuring RPC control messages also adhere to the existing limits.
See PR 5826
Respect already received IDONTWANT messages when handling IWANT. See PR 5901
Fix messages were not forwarded to floodsub peers. See PR 5908
Fix messages were published to all floodsub peers regardless of their topic. See PR 5904
Upgrade prometheus-client to v0.23
See PR 5960.
Allow customizing max transmit size and mesh-n-* parameters per topic. See PR 5868
<!-- Update to libp2p-swarm v0.47.0 -->
Deprecate futures-ticker and use futures-timer instead. See PR 5674.
Allow broadcasting IDONTWANT messages when publishing to avoid downloading data that is already available.
See PR 5773
Add configurable idontwant_message_size_threshold parameter.
See PR 5770
Correct state inconsistencies with the mesh and fanout when unsubscribing. See PR 5690
Deprecate futures-ticker and use futures-timer instead.
See PR 5674.
Apply max_transmit_size to the inner message instead of the final payload.
See PR 5642.
Deprecate void crate.
See PR 5676.
Attempt to publish to at least mesh_n peers when flood publish is disabled. See PR 5578.
Introduce back pressure and penalize slow peers. Drop stale messages that timeout before being delivered. See PR 5595.
Change Behaviour::unsubscribe and Behaviour::report_message_validation_result
to bool they don't need to be a Result.
See PR 5595.
Fix cargo clippy warnings in rustc 1.84.0-beta.1.
See PR 5700.
Fix an issue where an InsufficientPeers error could occur under certain conditions, despite having peers subscribed to a topic.
See PR 5793.
<!-- Update to libp2p-core v0.43.0 -->
<!-- Update to libp2p-swarm v0.45.0 -->
<!-- Update to libp2p-swarm v0.45.0 -->
Deprecate Rpc in preparation for removing it from the public API because it is an internal type. See PR 4833.
Rpc in preparation for removing it from the public API because it is an internal type.
See PR 4833.Remove deprecated gossipsub::Config::idle_timeout in favor of SwarmBuilder::idle_connection_timeout. See PR 4642.
fast_message_id_fn mechanism from Config.
See PR 4285.gossipsub::Config::idle_timeout in favor of SwarmBuilder::idle_connection_timeout.
See PR 4642.EnabledHandler::poll(..).
See PR 4778.Deprecate gossipsub::Config::idle_timeout in favor of SwarmBuilder::idle_connection_timeout. See [PR 4648].
gossipsub::Config::idle_timeout in favor of SwarmBuilder::idle_connection_timeout.
See PR 4648.<!-- Internal changes:
-->
<!-- Internal changes
KeepAlive::Until-->
Add getter function to obtain TopicScoreParams. See [PR 4231].
TopicScoreParams.
See PR 4231.Remove deprecated items. See [PR 3862].
Deprecate metrics, protocol, subscription_filter, time_cache modules to make them private. See [PR 3777].
Gracefully disable handler on stream errors. Deprecate a few variants of HandlerError. See [PR 3625].
Signed messages now use sequential integers in the sequence number field. See [PR 3551].
Migrate from prost to quick-protobuf. This removes protoc dependency. See [PR 3312].
prost to quick-protobuf. This removes protoc dependency. See PR 3312.Update to prometheus-client v0.19.0. See [PR 3207].
Update to prometheus-client v0.19.0. See PR 3207.
Update to libp2p-core v0.39.0.
Update to libp2p-swarm v0.42.0.
Initialize ProtocolConfig via GossipsubConfig. See PR 3381.
Rename types as per discussion 2174.
Gossipsub has been renamed to Behaviour.
The Gossipsub prefix has been removed from various types like GossipsubConfig or GossipsubMessage.
It is preferred to import the gossipsub protocol as a module (use libp2p::gossipsub;), and refer to its types via gossipsub::.
For example: gossipsub::Behaviour or gossipsub::RawMessage. See PR 3303.
Update to libp2p-swarm v0.41.0.
Update to libp2p-core v0.38.0.
Update to libp2p-swarm v0.41.0.
Update to prost-codec v0.3.0.
Refactoring GossipsubCodec to use common protobuf Codec. See PR 3070.
Replace Gossipsub's NetworkBehaviour implementation inject_* methods with the new on_* methods.
See PR 3011.
Replace GossipsubHandler's ConnectionHandler implementation inject_* methods with the new on_* methods.
See PR 3085.
Update rust-version to reflect the actual MSRV: 1.62.0. See PR 3090.
Nothing published for this version
Update to libp2p-swarm v0.39.0.
Update to libp2p-swarm v0.39.0.
Update to libp2p-core v0.36.0.
Allow publishing with any impl Into<TopicHash> as a topic. See PR 2862.
Update prost requirement from 0.10 to 0.11 which no longer installs the protoc Protobuf compiler. Thus you will need protoc installed locally. See [PR
Update to libp2p-swarm v0.37.0.
Update to libp2p-core v0.34.0.
Update to libp2p-swarm v0.37.0.
Allow for custom protocol ID via GossipsubConfigBuilder::protocol_id(). See PR 2718.
Fix duplicate connection id. See [PR 2702].
Update to libp2p-swarm v0.36.0.
Update to libp2p-swarm v0.35.0.
Update to libp2p-swarm v0.34.0.
Update to libp2p-core v0.32.0.
Update to libp2p-swarm v0.34.0.
Move from open-metrics-client to prometheus-client (see PR 2442).
Emit gossip of all non-empty topics (see PR 2481).
Merge NetworkBehaviour's inject_* paired methods (see PR 2445).
Revert to wasm-timer (see PR 2506).
Do not overwrite msg's peers if put again into mcache (see PR 2493).
Migrate to Rust edition 2021 (see [PR 2339]).
Update dependencies.
Migrate to Rust edition 2021 (see PR 2339).
Add metrics for network and configuration performance analysis (see PR 2346).
Improve bandwidth performance by tracking IWANTs and reducing duplicate sends (see PR 2327).
Implement Serialize and Deserialize for MessageId and FastMessageId (see PR 2408)
Fix GossipsubConfigBuilder::build() requiring &self to live for 'static (see PR 2409)
Implement Unsubscribe backoff as per libp2p specs PR 383 (see PR 2403).
Add topic and mesh metrics (see [PR 2316]).
Add an event to register peers that do not support the gossipsub protocol PR 2241
Add an event to register peers that do not support the gossipsub protocol PR 2241
Make default features of libp2p-core optional.
PR 2181
Improve internal peer tracking. PR 2175
Update dependencies.
Allow message_id_fns to accept closures that capture variables.
PR 2103
Implement std::error::Error for error types. PR 2254
Nothing published for this version
Reduce log levels across the crate to lessen noisiness of libp2p-gossipsub (see [PR 2101]).
Update dependencies.
Reduce log levels across the crate to lessen noisiness of libp2p-gossipsub (see PR 2101).
Keep connections to peers in a mesh alive. Allow closing idle connections to peers not in a mesh [PR-2043].
Remove regex-filter feature flag thus always enabling regex::RegexSubscriptionFilter PR 2056.
regex-filter feature flag thus always enabling regex::RegexSubscriptionFilter PR
2056.- Update libp2p-swarm. - Update dependencies.
Update libp2p-swarm.
Update dependencies.
- Update libp2p-swarm. - Update dependencies.
Update libp2p-swarm.
Update dependencies.
Prevent non-published messages being added to caches. PR 1930
Prevent non-published messages being added to caches. PR 1930
Update dependencies.
Implement Gossipsub v1.1 specification. PR 1720
Update dependencies.
Implement Gossipsub v1.1 specification. PR 1720
Update libp2p-swarm and libp2p-core.
libp2p-swarm and libp2p-core.Update libp2p-swarm and libp2p-core.
libp2p-swarm and libp2p-core.- Update dependencies.
- Update dependencies.
Update libp2p-swarm and libp2p-core.
libp2p-swarm and libp2p-core.Add public API to list topics and peers. PR 1677.
- Updated dependencies.
Maintenance release fixing linter warnings.
- Updated dependencies.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →