Releases: paritytech/litep2p
Release list
v0.15.0
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-resolverandstr0m(#642) - deps: bump
str0mto 0.22 (#639) - webrtc: use a shared 16 KiB buffer for the
WebRtcTransportstream (#623)
Fixed
v0.14.3
This patch release is dedicated entirely to strengthening the WebRTC transport layer, specifically focusing on connection resilience and build stability.
Fixed
v0.14.2
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
v0.14.1
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
WebRtcListenerto 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
v0.13.2
[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
v0.13.1
[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_ACKhandshake for substream shutdown (#513) - transport: Expose failed addresses to the transport manager (#529)
Changed
- manager: Prioritize public addresses for dialing (#530)
v0.13.0
[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
[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
v0.12.1
[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
[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_PROVIDERqueries (#432) - kademlia: Workaround for dealing with not implemented
PUT_VALUEACKs (#430) - kademlia: Track success of
PUT_VALUEqueries (#427)
Fixed
- Identify: gracefully close substream after sending payload (#466)
- fix: transport context polling order (#456)
Changed
- refactor: implement builder pattern for TransportManager (#453)