Skip to content

Releases: paritytech/litep2p

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 09:40
a2bad25

This release focuses on WebRTC. It is the first release with official WebRTC support. Expect things to break and get fixed in subsequent point releases.

This release is also semver breaking on the error API. Error::CannotReadSystemDnsConfig now carries an opaque DnsInitError instead of a hickory-resolver error type, and the new Error::DnsResolverInit variant reports resolver construction failures. Error is now #[non_exhaustive], so external match expressions over it require a wildcard arm. Together these changes keep hickory-resolver out of the public API, making future resolver bumps semver compatible.

Added

  • webrtc: support wildcard listen addresses (#640)
  • bitswap: enable Keccak and BLAKE2b hashers for CIDs (#641)

Changed

  • deps: bump hickory-resolver and str0m (#642)
  • deps: bump str0m to 0.22 (#639)
  • webrtc: use a shared 16 KiB buffer for the WebRtcTransport stream (#623)

Fixed

  • dns: stop leaking hickory error types in litep2p's public API (#643)
  • webrtc: enforce strict client network identity verification (#637)
  • webrtc: fix input backpressure (#626)
  • webrtc: properly handle str0m::Event::Closed (#627)

v0.14.3

Choose a tag to compare

@github-actions github-actions released this 22 Jun 12:37
92c4c34

This patch release is dedicated entirely to strengthening the WebRTC transport layer, specifically focusing on connection resilience and build stability.

Fixed

  • fix(webrtc): decode errors during opening phase are not recoverable (#622)
  • fix(webrtc): build vendored OpenSSL for str0m (#620)
  • fix(webrtc): time out inbound and outbound opening data channels (#617)

v0.14.2

Choose a tag to compare

@github-actions github-actions released this 12 Jun 15:19
adf1137

This release hardens the Bitswap and WebRTC protocols against silent failure modes that could leave connections or pending work stuck without ever being reported to higher-level protocols.

Bitswap now handles SubstreamOpenFailure, DialFailure, and ConnectionClosed events, bringing it in line with the other protocols. Previously, a failed outbound substream would leave responses stacking onto a dead queue, causing the peer to silently stop being served until the local node was restarted.

WebRTC replaces several unwrap/expect calls in the connection event loop with proper error propagation, and now reports substream open failures to upper layers when the RTC association is no longer healthy, preventing protocols from hanging on a substream that will never open.

Fixed

  • bitswap: Handle substream open and connection failures to avoid stuck pending responses (#618)
  • webrtc: Avoid panics and properly close opening substreams (#616)

v0.14.1

Choose a tag to compare

@github-actions github-actions released this 10 Jun 14:07
c119e47

This release focuses on advancing the WebRTC transport layer toward production readiness, along with stability patches and CI improvements.

WebRTC has received substantial upgrades, including multiple listening addresses, backpressure handling, a spec-compliant multistream-select implementation, and critical bug fixes. While the implementation is still considered experimental, it is significantly closer to being production-ready.

Additionally, this release mitigates overflow issues for long-running mDNS nodes and introduces QUIC support for DNS dialing.

Added

  • feat(webrtc): update how webrtc certificate is handled (#610)
  • feat(webrtc): introduce WebRtcListener to support multiple listen addresses (#579)
  • feat(webrtc): producer backpressure (#575)
  • feat(webrtc): multistream-select protocol implementation (#573)
  • Add automated publishing to crates.io (#599)
  • support for dialing DNS addresses with QUIC (#542)

Changed

  • refactor(webrtc): update str0m dep (#569)
  • Replace unwrap/expect with proper error propagation (#535)
  • webrtc: Decode webrtc message from multiple SCTP messages (#594)

Fixed

  • fix(webrtx): ICE issue + substream shutdown procedure (#586)
  • fix(webrtc): use Protocol::WebRTCDirect after Multiaddr version bump (#578)
  • webrtc: Fix memory leak by detecting closed connections (#608)
  • mdns: Avoid overflows on long running nodes (#585)

v0.13.2

Choose a tag to compare

@dmitry-markin dmitry-markin released this 02 Mar 13:09
v0.13.2
3421d55

[0.13.2] - 2026-03-02

This is a hotfix release fixing ping protocol panic in debug builds. The release also includes WebRTC fixes.

Fixed

  • webrtc/fix: Ensure delay future is awaited (#548)
  • ping: Fix panic in debug builds (#551)
  • webrtc: Ensure nonstun packets cannot panic transport layer (#550)
  • webrtc: Avoid memory leaks by cleaning stale hashmap entries (#549)

v0.13.1

Choose a tag to compare

@dmitry-markin dmitry-markin released this 27 Feb 15:48
v0.13.1
1a7a185

[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

Choose a tag to compare

@dmitry-markin dmitry-markin released this 21 Jan 11:46
v0.13.0
7e048bf

[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

Choose a tag to compare

@lexnv lexnv released this 28 Nov 12:35
v0.12.2
b16c74c

[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

Choose a tag to compare

@dmitry-markin dmitry-markin released this 21 Nov 15:33
v0.12.1
3de3785

[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

Choose a tag to compare

@dmitry-markin dmitry-markin released this 11 Nov 13:27
v0.12.0
74194e2

[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)