Skip to content

Releases: paritytech/litep2p

v0.13.1

27 Feb 15:48
v0.13.1
1a7a185

Choose a tag to compare

[0.13.1] - 2026-02-27

This release includes multiple fixes of transports and protocols, fixing connection stability issues with other libraries (specifically, smoldot) and increasing success rates of dialing & opening substreams, especially in extreme cases when remote nodes have a lot of private addresses published to the DHT.

Fixed

  • ping: Conform to the spec & exclude from connection keep-alive (#416)
  • transport: Make accept async to close the gap on service races (#525)
  • transport: Limit dial concurrency and bound total dialing time (#538)
  • webrtc: Support FIN/FIN_ACK handshake for substream shutdown (#513)
  • transport: Expose failed addresses to the transport manager (#529)

Changed

  • manager: Prioritize public addresses for dialing (#530)

v0.13.0

21 Jan 11:46
v0.13.0
7e048bf

Choose a tag to compare

[0.13.0] - 2026-01-21

This release brings multiple fixes to both the transport and application-level protocols.

Specifically, it enhances WebSocket stability by resolving AsyncWrite errors and ensuring that partial writes during the negotiation phase no longer trigger connection failures.

At the same time, Bitswap client functionality is introduced, which makes this release semver breaking.

Added

  • Add Bitswap client (#501)

Fixed

  • notif/fix: Avoid CPU busy loops on litep2p full shutdown (#521)
  • protocol: Ensure transport manager knows about closed connections (#515)
  • substream: Decrement the bytes counter to avoid excessive flushing (#511)
  • crypto/noise: Improve stability of websockets by fixing AsyncWrite implementation (#518)
  • bitswap: Split block responses into batches under 2 MiB (#516)
  • crypto/noise: Fix connection negotiation logic on partial writes (#519)
  • substream/fix: Fix partial reads for ProtocolCodec::Identity (#512)
  • webrtc: Avoid panics returning error instead (#509)
  • bitswap: e2e test & max payload fix (#508)
  • tcp: Exit connections when events fail to propagate to protocols (#506)
  • webrtc: Avoid future being dropped when channel is full (#483)

v0.12.2

28 Nov 12:35
v0.12.2
b16c74c

Choose a tag to compare

[0.12.2] - 2025-11-28

This release allows all Bitswap CIDs (v1) to pass regardless of the used hash. It also enhances local address checks in the transport manager.

Changed

  • transport-service: Enhance logging with protocol names (#485)
  • bitswap: Reexports for CID (#486)
  • Allow all the Bitswap CIDs (v1) to pass regardless of used hash (#482)
  • transport/manager: Enhance local address checks (#480)

v0.12.1

21 Nov 15:33
v0.12.1
3de3785

Choose a tag to compare

[0.12.1] - 2025-11-21

This release adds support for connecting to multiple Kademlia DHT networks. The change is backward-compatible, no client code modifications should be needed compared to v0.12.0.

Changed

  • kad: Allow connecting to more than one DHT network (#473)
  • service: Log services that have closed (#474)

Fixed

  • update simple-dns (#470)

v0.12.0

11 Nov 13:27
v0.12.0
74194e2

Choose a tag to compare

[0.12.0] - 2025-11-11

This release adds KademliaEvent::PutRecordSuccess & KademliaEvent::AddProviderSuccess events to Kademlia, allowing to track whether publishing a record or a provider was successfull. While PutRecordSuccess was present in the previous versions of litep2p, it was actually never emitted. Note that AddProviderSuccess and QueryFailed are also generated during automatic provider refresh, so those may be emitted for QueryIds not known to the client code.

Added

  • kademlia: Track success of ADD_PROVIDER queries (#432)
  • kademlia: Workaround for dealing with not implemented PUT_VALUE ACKs (#430)
  • kademlia: Track success of PUT_VALUE queries (#427)

Fixed

  • Identify: gracefully close substream after sending payload (#466)
  • fix: transport context polling order (#456)

Changed

  • refactor: implement builder pattern for TransportManager (#453)

v0.11.1

28 Oct 13:47
v0.11.1
3f13b10

Choose a tag to compare

[0.11.1] - 2025-10-28

This release ensures that polling the yamux controller after an error does not lead to unexpected behavior.

Fixed

  • yamux/control: Ensure poll next inbound is not called after errors (#445)

v0.11.0

20 Oct 12:00
v0.11.0
8a02398

Choose a tag to compare

[0.11.0] - 2025-10-20

This release adds support for RSA remote network identity keys gated behind rsa feature. It also fixes mDNS initialization in the environment with no multicast addresses available and Bitswap compatibility with kubo IPFS client >= v0.37.0.

Added

  • Support RSA remote network identity keys (#423)

Fixed

  • bitswap: Reuse inbound substream for subsequent requests (#447)
  • mDNS: Do not fail initialization if the socket could not be created (#434)
  • Make RemotePublicKey public to enable signature verification (#435)
  • improve error handling in webRTC-related noise function (#377)

Changed

  • Upgrade rcgen 0.10.0 -> 0.14.5 (#450)
  • chore: update str0m dependency, update code based on breaking changes (#422)

v0.10.0

22 Jul 10:44
v0.10.0
a950f7a

Choose a tag to compare

[0.10.0] - 2025-07-22

This release adds the ability to use system DNS resolver and change Kademlia DNS memory store capacity. It also fixes the Bitswap protocol implementation and correctly handles the dropped notification substreams by unregistering them from the protocol list.

Added

  • kad: Expose memory store configuration (#407)
  • transport: Allow changing DNS resolver config (#384)

Fixed

  • notification: Unregister dropped protocols (#391)
  • bitswap: Fix protocol implementation (#402)
  • transport-manager: stricter supported multiaddress check (#403)

v0.9.5

10 Jun 14:53
v0.9.5
8a5420a

Choose a tag to compare

[0.9.5] - 2025-05-26

This release primarily focuses on strengthening the stability of the websocket transport. We've resolved an issue where higher-level buffering was causing the Noise protocol to fail when decoding messages.

We've also significantly improved connectivity between litep2p and Smoldot (the Substrate-based light client). Empty frames are now handled correctly, preventing handshake timeouts and ensuring smoother communication.

Finally, we've carried out several dependency updates to keep the library current with the latest versions of its underlying components.

Fixed

  • substream/fix: Allow empty payloads with 0-length frame (#395)
  • websocket: Fix connection stability on decrypt messages (#393)

Changed

  • crypto/noise: Show peerIDs that fail to decode (#392)
  • cargo: Bump yamux to 0.13.5 and tokio to 1.45.0 (#396)
  • ci: Enforce and apply clippy rules (#388)
  • build(deps): bump ring from 0.16.20 to 0.17.14 (#389)
  • Update hickory-resolver 0.24.2 -> 0.25.2 (#386)

v0.9.4

15 May 13:23
v0.9.4
6d61e2b

Choose a tag to compare

[0.9.4] - 2025-04-29

This release brings several improvements and fixes to litep2p, advancing its stability and readiness for production use.

Performance Improvements

This release addresses an issue where notification protocols failed to exit on handle drop, lowering CPU usage in scenarios like minimal-relay-chains from 7% to 0.1%.

Robustness Improvements

  • Kademlia:

    • Optimized address store by sorting addresses based on dialing score, bounding memory consumption and improving efficiency.
    • Limited FIND_NODE responses to the replication factor, reducing data stored in the routing table.
    • Address store improvements enhance robustness against routing table alterations.
  • Identify Codec:

    • Enhanced message decoding to manage malformed or unexpected messages gracefully.
  • Bitswap:

    • Introduced a write timeout for sending frames, preventing protocol hangs or delays.

Testing and Reliability

  • Fuzzing Harness: Added a fuzzing harness by SRLabs to uncover and resolve potential issues, improving code robustness. Thanks to @R9295 for the contribution!

  • Testing Enhancements: Improved notification state machine testing. Thanks to Dominique (@Imod7) for the contribution!

Dependency Management

  • Updated all dependencies for stable feature flags (default and "websocket") to their latest versions.

  • Reorganized dependencies under specific feature flags, shrinking the default feature set and avoiding exposure of outdated dependencies from experimental features.

Fixed

  • notifications: Exit protocols on handle drop to save up CPU of minimal-relay-chains (#376)
  • identify: Improve identify message decoding (#379)
  • crypto/noise: Set timeout limits for the noise handshake (#373)
  • kad: Improve robustness of addresses from the routing table (#369)
  • kad: Bound kademlia messages to the replication factor (#371)
  • codec: Decode smaller payloads for identity to None (#362)

Added

  • bitswap: Add write timeout for sending frames (#361)
  • notif/tests: check test state (#360)
  • SRLabs: Introduce simple fuzzing harness (#367)
  • SRLabs: Introduce Fuzzing Harness (#365)

Changed

  • features: Move quic related dependencies under feature flag (#359)
  • tests/substrate: Remove outdated substrate specific conformace testing (#370)
  • ci: Update stable dependencies (#375)
  • build(deps): bump hex-literal from 0.4.1 to 1.0.0 (#381)
  • build(deps): bump tokio from 1.44.1 to 1.44.2 in /fuzz/structure-aware (#378)
  • build(deps): bump Swatinem/rust-cache from 2.7.7 to 2.7.8 (#363)
  • build(deps): bump tokio from 1.43.0 to 1.43.1 (#368)
  • build(deps): bump openssl from 0.10.70 to 0.10.72 (#366)