ipfs_libp2p 0.5.8
ipfs_libp2p: ^0.5.8 copied to clipboard
A comprehensive Dart implementation of the libp2p networking stack with modular architecture, multiple transports (TCP/UDX), Noise security, and peer-to-peer capabilities.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.5.8 - 2026-09-20 #
- Merged: semantic fixes from upstream
dart_libp2p1.0.3 while preserving this fork's implementation lineage. - Fixed: Yamux sessions now close (goAway/internalError) when the keepalive ping send fails, instead of remaining open as zombies.
- Fixed: Yamux flow-control credit is preserved when a window-update send fails, and the failure no longer kills the session read loop.
- Fixed: Identify now awaits protoBook updates before completing, removing a race where advertised protocols (e.g. pubsub capability) could lag behind the identify response.
- Fixed: Inbound stream negotiation now runs under the configured negotiation deadline.
- Fixed: Connection pruning respects protected-connection tags and classifies timeout errors correctly.
- Changed: AutoNAT v2 client and server use varint-delimited protobuf framing matching go-libp2p, with response-type validation and exact dial-data byte accounting.
- Added:
AutoNATv2.hasPeers; ambient AutoNAT v2 applies exponential backoff (10s-60s) when no AutoNAT-capable peers exist and emits an initial UNKNOWN reachability so AutoRelay can start immediately. - Fixed: AutoRelay starts RelayFinder eagerly when initial reachability is private/unknown; behind CGNAT an unknown->unknown transition never fires a change event, so RelayFinder previously never started.
- Changed: Circuit relay v2 client/relay and AutoRelay finder adopt upstream's reworked relayed-connection handling (STOP stream processing, circuit address construction, connection tracking).
- Tests: imported upstream coverage for identify, swarm, yamux, circuitv2, autorelay, autonat, tcp_connection, multistream and secured_connection.
0.5.7 - 2026-09-20 #
- Fixed:
YamuxSession.openStreamno longer blocks on the remote peer's stream ACK before returning the stream. Implementations such as js-yamux send the ACK lazily (piggybacked on the acceptor's first outgoing frame), which deadlocked every outbound stream against js-libp2p/Helia peers during multistream negotiation. The stream is now opened immediately after the SYN frame, matching go-yamux semantics; the ACK is consumed asynchronously by the session read loop. - Fixed: EOF during the secured-connection read loop no longer throws
RangeError— a finer-level log dereferenced the empty length-prefix buffer before the EOF check, which surfaced clean transport shutdown as a session error.
0.5.6 - 2026-02-03 #
- Fixed: Replaced broken ASCII architecture diagram in README.md.
0.5.5 - 2026-02-03 #
- Fixed: Corrected character encoding issues in README.md (Mojibake).
- Security: Upgraded
pointycastleto^4.0.0for improved security. - Changed: Major dependency upgrades for
lintsand other dev dependencies.
0.5.4 - 2026-02-03 #
Fixed #
- Fixed analysis warnings and errors for publishing.
- Improved connection health monitoring logic.
- Resolved recursive call in ECDSA key generation.
0.5.3 - 2025-08-16 #
0.5.2 - 2025-07-29 #
Added #
- Comprehensive documentation in
/docdirectory - Architecture overview and component documentation
- Configuration guide with flexible options system
- Transport layer documentation (TCP and UDX)
- Security protocol documentation (Noise)
- Multiplexing documentation (Yamux)
- Protocol documentation (Ping, Identify, etc.)
- Peerstore management documentation
- Event bus system documentation
- Resource manager documentation
- Cookbook with practical examples
- Getting started guide with step-by-step instructions
- README.md with project overview and quick start guide
- MIT LICENSE file
Changed #
- Improved project structure and organization
- Enhanced documentation coverage across all components
- Better code examples and usage patterns
Fixed #
- Documentation links and cross-references
- Code examples in documentation
Contributing #
When contributing to this project, please update this changelog by adding a new entry under the [Unreleased] section. Follow the existing format and include:
- Added: for new features
- Changed: for changes in existing functionality
- Deprecated: for soon-to-be removed features
- Removed: for now removed features
- Fixed: for any bug fixes
- Security: in case of vulnerabilities
Release Process #
- Update version in
pubspec.yaml - Add new changelog entry under
[Unreleased] - Move
[Unreleased]content to new version section - Update release date
- Tag the release in git