-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
🗺 What's left for release
Planned release date: Aug 15th
QUIC:
- update quic-go to v0.37 (requires dropping support for Go 1.19): quic: update quic-go to v0.37.5 #2497
- quic: drop support for QUIC draft-29 #2369
- fix regression (more details to follow)
Misc:
- include update golang.org/x/exp, fixing slice sorting to match standard library multiformats/go-multiaddr#210, update go-multiaddr to v0.11.0
- use standard library sha256 implementation for Go 1.21 #2309
- peerstore: deprecate the database-backed peerstore #2475
🔦 Highlights
This is the first release that is compatible with Go 1.21.
Deprecation of the database-backed peerstore
The database-backed peerstore, pstoreds, is now deprecated. It will be removed in a future release of go-libp2p.
The main reason for a database-backed peerstore was that it easily allowed persisting peers across reboots of a go-libp2p node. However, this comes with the problem that entries for these peers will never be pruned. It also means significantly higher latencies compared to the in-memory peerstore. A better way of persisting (a subset of) peers for bootstrapping purposes is to regularly query the in-memory peerstore and to explicitly persist those entries.
See #2329 for more motivation and discussion.
Removal of mplex
The ecosystem is in the process of removing support for one of our stream multiplexers, mplex. The only supported stream multiplexer now is yamux. Kubo removed support for mplex recently. See libp2p/specs#553 for more details.
Note that due to go-libp2p modular design, it's still possible to use mplex (or any other custom multiplexer) using the libp2p.Muxer configuration option.
Removal of QUIC draft-29
QUIC draft-29 was a somewhat widely deployed draft version of QUIC before publication of RFC 9000. The multiaddr codepoint used /quic (RFC 9000 QUIC uses /quic-v1). go-libp2p has been using /quic-v1 for a long time, and is now dropping support for draft-29.
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. https://discuss.libp2p.io/t/go-libp2p-v0-30-0-released/2036
- Stage 2 - Update Upstream
- Update the examples to the final release: examples: update go-libp2p to v0.30.0 #2507
- Update the upstream dependencies to the final release and create PRs.
- filecoin-project/lotus: update go-libp2p to v0.30.0 filecoin-project/lotus#11189
- go-libp2p-kad-dht
- go-libp2p-pubsub (In case of breaking changes.)
- ipfs/kubo
- Add new release to interop tester in test-plans chore: add go-libp2p v0.30 and remove v0.27 and v0.28 test-plans#269
- Make required changes to the release process.