go-libp2p icon indicating copy to clipboard operation
go-libp2p copied to clipboard

go-libp2p v0.23

Open marten-seemann opened this issue 3 years ago • 0 comments

🗺 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 WithMetrics option 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's go.mod when 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.
  • [x] Make required changes to the release process.

marten-seemann avatar Aug 19 '22 07:08 marten-seemann