v0.23.0
marten-seemann
released this
20 Sep 20:46
·
653 commits
to master
since this release
🔦 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 (#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: #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
- github.com/libp2p/go-libp2p:
- release v0.23.0 (#1764) (libp2p/go-libp2p#1764)
- chore: update deps (#1767) (libp2p/go-libp2p#1767)
- noise: switch to proto2, use the new NoiseExtensions protobuf (libp2p/go-libp2p#1762)
- webtransport: add custom resolver to add SNI (#1761) (libp2p/go-libp2p#1761)
- swarm: skip dialing WebTransport addresses when we have QUIC addresses (#1756) (libp2p/go-libp2p#1756)
- webtransport: have the server send the certificates (#1757) (libp2p/go-libp2p#1757)
- chore: Update .github/workflows/stale.yml [skip ci]
- noise: make it possible for the server to send early data (#1750) (libp2p/go-libp2p#1750)
- swarm: fix selection of transport for dialing (#1653) (libp2p/go-libp2p#1653)
- autorelay: Add a context.Context to WithPeerSource callback (#1736) (libp2p/go-libp2p#1736)
- webtransport: add and check the ?type=noise URL parameter (#1749) (libp2p/go-libp2p#1749)
- webtransport: disable HTTP origin check (#1752) (libp2p/go-libp2p#1752)
- noise: don't fail handshake when early data is received without handler (#1746) (libp2p/go-libp2p#1746)
- Add Resolver interface to transport (#1719) (libp2p/go-libp2p#1719)
- use new /libp2p/go-libp2p/core pkg (#1745) (libp2p/go-libp2p#1745)
- yamux: pass constructors for peer resource scopes to session constructor (#1739) (libp2p/go-libp2p#1739)
- tcp: add an option to enable metrics (disabled by default) (#1734) (libp2p/go-libp2p#1734)
- move go-libp2p-webtransport to p2p/transport/webtransport (libp2p/go-libp2p#1737)
- autorelay: fix race condition in TestBackoff (#1731) (libp2p/go-libp2p#1731)
- rcmgr: increase default connection memory limit to 32 MB (#1740) (libp2p/go-libp2p#1740)
- quic: update quic-go to v0.29.0 (#1723) (libp2p/go-libp2p#1723)
- noise: implement an API to send and receive early data (libp2p/go-libp2p#1728)
- identify: make the protocol version configurable (#1724) (libp2p/go-libp2p#1724)
- ci: add cross-version interop (#1725) (libp2p/go-libp2p#1725)
- Fix threshold calculation (#1722) (libp2p/go-libp2p#1722)
- simplify the release checklist (#1691) (libp2p/go-libp2p#1691)
- connmgr: use clock interface (#1720) (libp2p/go-libp2p#1720)
- quic: increase the buffer size used for encoding qlogs (#1715) (libp2p/go-libp2p#1715)
- quic: add a WithMetrics option (#1716) (libp2p/go-libp2p#1716)
- add default listen addresses for QUIC (#1615) (libp2p/go-libp2p#1615)
- feat: inject DNS resolver (#1607) (libp2p/go-libp2p#1607)
- connmgr: prefer peers with no streams when closing connections (#1675) (libp2p/go-libp2p#1675)
- quic: add DisableReuseport option (#1476) (libp2p/go-libp2p#1476)
- github.com/ipfs/go-cid (v0.2.0 -> v0.3.2):
- chore: release v0.3.2
- Revert "fix: bring back, but deprecate CodecToStr and Codecs"
- chore: release v0.2.1
- fix: bring back, but deprecate CodecToStr and Codecs
- update .github/workflows/go-check.yml
- update .github/workflows/go-test.yml
- run gofmt -s
- bump go.mod to Go 1.18 and run go fix
- chore: release v0.3.0
- fix: return nil Bytes() if the Cid in undef
- chore: Update .github/workflows/stale.yml [skip ci]
- Add MustParse (ipfs/go-cid#139)
- Update .github/workflows/stale.yml
- Add .github/workflows/stale.yml
- github.com/ipfs/go-datastore (v0.5.1 -> v0.6.0):
- Release v0.6.0 (#194) (ipfs/go-datastore#194)
- chore: Update .github/workflows/stale.yml [skip ci]
- Update .github/workflows/stale.yml
- feat: add Features + datastore scoping
- Add .github/workflows/stale.yml
- chore: Fix comment typo (#191) (ipfs/go-datastore#191)
- github.com/libp2p/go-libp2p-testing (v0.11.0 -> v0.12.0):
- release v0.12.0 (#67) (libp2p/go-libp2p-testing#67)
- chore: update to go-libp2p v0.22.0 (#66) (libp2p/go-libp2p-testing#66)
- remove the resource manager mocks (#65) (libp2p/go-libp2p-testing#65)
- github.com/libp2p/go-yamux/v4 (null -> v4.0.0):
- release v4.0.0 (#101) (libp2p/go-yamux#101)
- github.com/lucas-clemente/quic-go (v0.28.1 -> v0.29.0):
- add a logging.NullTracer and logging.NullConnectionTracer (lucas-clemente/quic-go#3512)
- add support for providing a custom Connection ID generator via Config (#3452) (lucas-clemente/quic-go#3452)
- fix typo in README
- fix datagram support detection (#3511) (lucas-clemente/quic-go#3511)
- use a single Go routine to send copies of CONNECTION_CLOSE packets (lucas-clemente/quic-go#3514)
- add YoMo to list of projects in README (#3513) (lucas-clemente/quic-go#3513)
- http3: fix listening on both QUIC and TCP (#3465) (lucas-clemente/quic-go#3465)
- Disable anti-amplification limit by address validation token (#3326) (lucas-clemente/quic-go#3326)
- fix typo in README
- implement a new API to let servers control client address verification (lucas-clemente/quic-go#3501)
- use a generic streams map for incoming streams (lucas-clemente/quic-go#3489)
- fix unreachable code after log.Fatal in fuzzing corpus generator (#3496) (lucas-clemente/quic-go#3496)
- use generic Min and Max functions (lucas-clemente/quic-go#3483)
- add QPACK (RFC 9204) to the list of supported RFCs (#3485) (lucas-clemente/quic-go#3485)
- add a function to distinguish between long and short header packets (#3498) (lucas-clemente/quic-go#3498)
- use a generic streams map for outgoing streams (#3488) (lucas-clemente/quic-go#3488)
- update the Go 1.19 qtls to v0.1.0 (#3490) (lucas-clemente/quic-go#3490)
- update golangci-lint action to v3, golangci-lint to v1.48.0 (#3499) (lucas-clemente/quic-go#3499)
- use a generic linked list (#3487) (lucas-clemente/quic-go#3487)
- drop support for Go 1.16 and 1.17 (#3482) (lucas-clemente/quic-go#3482)
- optimize FirstOutstanding in the sent packet history (#3467) (lucas-clemente/quic-go#3467)
- github.com/multiformats/go-base32 (v0.0.4 -> v0.1.0):
- chore: bump version to 0.1.0
- fix: fix staticcheck complaints
- update .github/workflows/go-check.yml
- update .github/workflows/go-test.yml
- update .github/workflows/automerge.yml
- run gofmt -s
- bump go.mod to Go 1.18 and run go fix
- github.com/multiformats/go-multiaddr (v0.6.0 -> v0.7.0):
- Release v0.7.0 (multiformats/go-multiaddr#183)
- use decimal numbers for multicodecs (multiformats/go-multiaddr#184)
- Fix comment on Decapsulate (multiformats/go-multiaddr#181)
- (multiformats/go-multiaddr#182)
- Add webrtc (#179) (multiformats/go-multiaddr#179)
- github.com/multiformats/go-multicodec (v0.5.0 -> v0.6.0):
- chore: version bump 0.6.0
- fix: replace io/ioutil with io
- update .github/workflows/go-check.yml
- update .github/workflows/go-test.yml
- bump go.mod to Go 1.18 and run go fix
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marten Seemann | 107 | +6536/-6071 | 405 |
Gus Eggert | 2 | +3180/-87 | 13 |
Marco Munizaga | 9 | +1086/-340 | 33 |
Guilhem Fanton | 1 | +216/-48 | 5 |
João Oliveirinha | 1 | +124/-38 | 11 |
Toby | 1 | +89/-36 | 4 |
Jorropo | 6 | +28/-78 | 11 |
KevinZønda | 1 | +81/-20 | 2 |
Benedikt Spies | 1 | +75/-12 | 8 |
Rod Vagg | 5 | +69/-9 | 9 |
Tshaka Eric Lekholoane | 1 | +57/-19 | 6 |
Steven Allen | 1 | +46/-26 | 8 |
ipfs-mgmt-read-write[bot] | 2 | +52/-0 | 2 |
libp2p-mgmt-read-write[bot] | 1 | +26/-0 | 1 |
Laurent Senta | 1 | +13/-6 | 1 |
mojatter | 1 | +9/-8 | 1 |
Marcel Gregoriadis | 1 | +9/-0 | 1 |
Chinmay Kousik | 1 | +7/-0 | 1 |
xiabin | 1 | +1/-1 | 1 |
fanweixiao | 1 | +1/-1 | 1 |
Bryan Stenson | 1 | +1/-1 | 1 |
Abirdcfly | 1 | +1/-1 | 1 |