-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Description
🗺 What's left for release
WebTransport: Tracking issue #1717
Yamux:
- Remeasure round trip time go-yamux#70
- Data race on stream.memory access go-yamux#95
- inconsistent locking order go-yamux#97
Misc:
- add default listen addresses for QUIC #1615
- quic: add
DisableReuseportoption #1476 - Reenable pubsub test: update go-libp2p to v0.22.0 go-libp2p-pubsub#498 (comment)
- DNS resolution should be moved to the transports #1597
- rcmgr: connection-level memory base limits are too small for performant QUIC transfers #1706
- noise: don't fail handshake when early data is received without handler #1746
🔦 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 (quic: add
DisableReuseportoption #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: Add Resolver interface to transport #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
- Stage 0 - Finishing Touches
- Go through relevant libp2p repos looking for unreleased changes that should make it into the release. If you find any, cut releases.
- 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.
- Stage 1 - Release
- 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.
- Make required changes to the release process.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
🎉 Done