go-libp2p
go-libp2p copied to clipboard
go-libp2p v0.23
🗺 What's left for release
WebTransport: Tracking issue https://github.com/libp2p/go-libp2p/issues/1717
Yamux:
- [x] https://github.com/libp2p/go-yamux/pull/70
- [x] https://github.com/libp2p/go-yamux/issues/95
- [x] https://github.com/libp2p/go-yamux/issues/97
Misc:
- [x] https://github.com/libp2p/go-libp2p/pull/1615
- [x] https://github.com/libp2p/go-libp2p/pull/1476
- [x] Reenable pubsub test: https://github.com/libp2p/go-libp2p-pubsub/pull/498#issuecomment-1227896682
- [x] https://github.com/libp2p/go-libp2p/issues/1597
- [x] https://github.com/libp2p/go-libp2p/issues/1706
- [x] https://github.com/libp2p/go-libp2p/pull/1746
https://github.com/orgs/libp2p/projects/3/views/2?filterQuery=release%3A%220.23%22
🔦 Highlights
WebTransport
go-libp2p now has experimental support for WebTransport, powered by webtransport-go. WebTransport is a brand-new transport protocol currently under development at the IETF and w3c, and already supported by Chrome. WebTransport allows browsers to establish an encrypted, stream-multiplexed connection (running on top of QUIC) to servers.
js-libp2p is currently working on a WebTransport client implementation: https://github.com/libp2p/js-libp2p-webtransport.
How to enable
Because support is still experimental, WebTransport has be explicitly enabled. When constructing a node, pass in the WebTransport transport, and configure a WebTransport listen address:
host, err := libp2p.New(
libp2p.DefaultTransports,
libp2p.Transport(webtransport.New),
libp2p.ListenAddrStrings("/ip4/0.0.0.0/udp/1234/quic/webtransport"),
)
Other
- It's now possible to disable reuseport for the QUIC transport (https://github.com/libp2p/go-libp2p/pull/1476). Note: If disabled, QUIC cannot be use for NAT hole punching.
- If no listen addresses are specified, a libp2p now listens on TCP and QUIC (both IPv4 and IPv6).
- Transports can now have a say in how a multiaddr is resolved: https://github.com/libp2p/go-libp2p/pull/1719. This allows transports to modify the multiaddr before the address is dialed. A transport can set the SNI field for TLS or decide to do its own domain name resolution.
- Yamux now regularly remeasures the RTT of the underlying connection. The RTT is used to auto-tune the size of the receive buffer.
- The QUIC and TCP transports now don't collect metrics, unless the
WithMetricsoption is passed to their constructor (QUIC change, TCP change).
Changelog
< changelog generated by scripts/mkreleaselog >
✅ Release Checklist
- [x] Stage 0 - Finishing Touches
- [x] Go through relevant libp2p repos looking for unreleased changes that should make it into the release. If you find any, cut releases.
- [x] Run
go get -u ./...to see if there are any out-of-date deps that look important. If there are, bubble them. Try to avoid directly updating indirect deps in go-libp2p'sgo.modwhen possible.
- [x] Stage 1 - Release
- [x] Publish the release through the GitHub UI, adding the release notes. Some users rely on this to receive notifications of new releases.
- [ ] Announce the release on the discuss.libp2p.io.
- [ ] Stage 2 - Update Upstream
- [ ] Update the examples to the final release
- [ ] Update the upstream dependencies to the final release and create PRs.
- [ ] filecoin-project/lotus
- [ ] ipfs/kubo
- [x] Make required changes to the release process.