Releases: libp2p/go-libp2p
v0.38.1
What's Changed
- fix(autorelay): Move relayFinder peer disconnect cleanup to separate goroutine by @MarcoPolo in #3105
- ci: Install specific protoc version when generating protobufs by @MarcoPolo in #3112
- fix(httpauth): Correctly handle concurrent requests on server by @MarcoPolo in #3111
Refer the the release notes in v0.38.0 for all things new in v0.38.
Full Changelog: v0.38.0...v0.38.1
v0.38.0
Highlights
-
You can now use the same port for TCP and WebSocket. Refer to the
TestSharedTCPAddr
for an example on how to enable this. Currently this is
opt-in. In a future release, we may enable this as default behavior when you
leave the port unspecified or when you explicitly set the same port. -
The eventbus will now log error messages when it detects slow consumers. It's
important for slow consumers to not stall the eventbus, as this can cause the
core libp2p node to stall. Previously this was visible via metrics. This should
help identify hard-to-debug issues without requiring metrics to be configured.
What's changed
- peerstore: remove sync.Pool for expiringAddrs (#3093) sukun
- webtransport: close quic conn on dial error (#3104) sukun
- peerstore: fix addressbook benchmark timing (#3092) sukun
- swarm: record conn metrics only once (#3091) sukun
- fix(sampledconn): Correctly handle slow bytes and closed conns (#3080) Marco Munizaga
- fix(peerstore): pass options to addrbook constructor (#3090) sukun
- fix(swarm): remove stray print stmt (#3086) sukun
- feat(swarm): delay /webrtc-direct dials by 1 second (#3078) sukun
- ci: free disk space for interop tests (#3084) Piotr Galar
- chore: Update dependencies and fix deprecated function in relay example (#3023) Reymon
- chore: fix broken link to record envelope protobuf file (#3070) hishope
- chore(core): fix function name in interface comment (#3056) wangjingcun
- basichost: avoid modifying slice returned by AddrsFactory (#3068) Ivan Shvedunov
- feat(addrbook): allow passing options to memoryAddrBook (#3062) Daniel Norman
- chore(dashboard/alertmanager): update api version from v1 to v2 (#3054) Carlos Peliciari
- fix(tcpreuse): handle connection that failed to be sampled (#3036) Adin Schmahmann
- fix(tcpreuse): remove windows specific code (#3039) Marco Munizaga
- refactor(core/routing): split ContentRouting interface (#3048) Hector Sanjuan
- fix(holepunch/tracer): replace inline peer struct with peerInfo type (#3049) Carlos Peliciari
- fix(eventbus): Idempotent wildcardSub close (#3045) Marco Munizaga
- fix(identify): push should not dial a new connection (#3035) Marco Munizaga
- eventbus: dont panic on closing Subscription twice (#3034) sukun
- fix(swarm): incorrect error message format order (#3037) 未月
- feat: eventbus: log error on slow consumers (#3031) Marco Munizaga
- chore: make funding.json uppercase to follow meta convention (#3028) (marco/2983) Prithvi Shahi
- chore: add drips entry to funding.json for Filecoin rPGF round 2 (fix/deps) Prithvi Shahi
- tcp: parameterize metrics collector (#3026) Marco Munizaga
- feat(tcpreuse): add options for sharing TCP listeners amongst TCP, WS and WSS transports (#2984) Adin Schmahmann
- pnet: wrap underlying error when reading nonce fails (#2975) sukun
New Contributors
- @cokemine made their first contribution in #3037
- @wangjingcun made their first contribution in #3056
- @hishope made their first contribution in #3070
- @reymom made their first contribution in #3023
Full Changelog: v0.37.0...v0.38.0
v0.37.2
v0.37.1
Bug Fixes
- Fixes an issue with webrtc-direct listeners where the short handshake queue dropped some connection requests. For more details see: #3040
- Fixes a race condition when multistream lazy negotiation was used with rust-libp2p or js-libp2p for write only streams. See #3038 for details
What's Changed
- 0606295 refactor(libp2phttp): don't require specific port for the HTTP host example (#3047)
- ae0d78a fix: Defer resource usage cleanup until the very end (#3042)
- df02f4d chore: update go-multistream to v0.6.0 (#3041)
- 09ae179 fix: obsaddr: do not record observations over relayed conn (#3043)
- 2404f75 webrtc: handshake more connections in parallel (#3040)
- 994b69e fix: basichost: Use NegotiationTimeout as fallback timeout for NewStream (#3020)
Full Changelog: v0.37.0...dont-delete/release-v0371
v0.37.0
Breaking Changes
- The
libp2p.MultiaddrResolver
option now takes an interface rather than a
specific pointer. This decouples the resolver from a specific implementation
and also defines a better interface that is aware of bounds.- The swarm exports a new type
ResolverFromMaDNS
that implements this interface from a*madns.Resolver
. The one line diff is essentially:
-libp2p.MultiaddrResolver(rslv) +libp2p.MultiaddrResolver(swarm.ResolverFromMaDNS{Resolver: rslv})
- The swarm exports a new type
🔦 Highlights
HTTP Peer ID Authentication (#2854)
Authenticate a peer's identity over HTTP. This works on both libp2p stream backed HTTP transports and standard HTTP transports. There is also browser support in the js-libp2p module: https://github.com/libp2p/js-libp2p-http-fetch/tree/main.
See the spec for more details on how it works: https://github.com/libp2p/specs/blob/master/http/peer-id-auth.md
Experimental WithFxOption (#2956)
A new libp2p Config option lets you add custom Fx options to the libp2p constructor. Use this to get access to and provide libp2p services.
For example, this allows you to easily get a reference to the ID Service of a libp2p Node. Refer to this test for a concrete code example: https://github.com/libp2p/go-libp2p/blob/c4c3a34545aab54b5b825a7adbd6a3db2c680afa/fx_options_test.go#L50-L60
In the future we'd like to expose the Fx options libp2p uses to construct itself so that users can better customize their libp2p nodes and integrate it seamlessly into their applications.
Changelog
From v0.36.5 to v0.37.0
- feat: Add WithFxOption (#2956)
- Make BlackHoleState type public (#2917)
- connmgr: reduce log level for untagging untracked peers
- feat(websocket): switch the underlying http server logger to use ipfs/go-log (#2985)
- fix(websocket): re-enable websocket transport test (#2987)
- relay: make only 1 reservation per peer (#2974)
- libp2phttp: HTTP Peer ID Authentication (#2854)
- chore: update quic-go to v0.48.1
- Add backoff for updating local IP addresses on error (#2999) Reporting credit to @elecbug
- fix: swarm: refactor address resolution (#2990)
- peerstore: limit number of non connected peers in addrbook (#2971)
- swarm: add a peer dial latency metric (#2959)
- autonat: fix interaction with autorelay (#2967)
Full Changelog: v0.36.5...v0.37.0
New Contributors
- @joshklop made their first contribution in #2920
- @cpeliciari made their first contribution in #2917
- @bytetigers made their first contribution in #2938
- @2color made their first contribution in #2931
v0.36.5
What's Changed
- basichost: ensure no duplicates in Addrs output #2980
- autonatv2: recover from panics #2992
- chore: update go-multiaddr-dns to v0.4.0 #2994
Note
In the previous release, we called out a bug in go1.23 unbuffered timers that deadlocked go-libp2p. This has been fixed in go1.23.2. You can safely update your go.mod's go version to go1.23 now.
Full Changelog: v0.36.4...v0.36.5
v0.36.4
Note
Caution
Due to a golang/go#69312 in unbuffered timers introduced in go1.23, libp2p deadlocks if the go version in your go.mod file is go1.23. To fix this, either use the environment variable GODEBUG="asynctimerchan=1"
, or downgrade the go version in your go.mod file.
What's Changed
Full Changelog: v0.36.3...v0.36.4
v0.35.5
Note
- Due to a race condition in unbuffered timers introduced in go1.23, libp2p deadlocks if the go version in your go.mod file is go1.23. To fix this, either use the environment variable
GODEBUG=asynctimerchan=1
, or downgrade the go version in your go.mod file.
What's Changed
Full Changelog: v0.35.4...v0.35.5
v0.36.3
What's Changed
- Fix proto import paths by @joshklop in #2920
- Remove 32-bit tests by @MarcoPolo in #2900
- metrics: BlackHoleState type public by @cpeliciari in #2917
- ci: Out of the tarpit by @MarcoPolo in #2923
- test: Try to fix test timeout by @MarcoPolo in #2930
- ci: Fail on test timeout by @MarcoPolo in #2929
- ci: use go1.23, drop go1.21 by @sukunrt in #2933
- webrtc: wait for listener context before dropping connection by @sukunrt in #2932
- bug: fix slice append value by @bytetigers in #2938
- ci: uci/update-go by @web3-bot in #2937
- fix: QUIC/Webtransport Transports now will prefer their owned listeners for dialing out by @MarcoPolo in #2936
- fix: enable dctur when interface address is public by @2color in #2931
- Fix: WebSocket: Clone TLS config before creating a new listener by @MarcoPolo in #2943
New Contributors
- @joshklop made their first contribution in #2920
- @cpeliciari made their first contribution in #2917
- @bytetigers made their first contribution in #2938
- @2color made their first contribution in #2931
Full Changelog: v0.36.2...v0.36.3
v0.36.2
What's Changed
- Revert "Create funding.json" by @MarcoPolo in #2919
- basic_host: close swarm on Close by @sukunrt in #2916
- webrtc: close connection when remote closes by @sukunrt in #2914
- webrtc: reduce loglevel for pion logs by @sukunrt in #2915
Full Changelog: v0.36.1...v0.36.2