Go-libp2p v0.30.0 released

This is the first release that is compatible with Go 1.21. It drops compatibility with (the now outdated) Go 1.19.

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 remove the database-backed peerstore · Issue #2329 · libp2p/go-libp2p · GitHub 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 (a go-libp2p user) removed support for mplex recently. See Tracking issue: mplex deprecation · Issue #553 · libp2p/specs · GitHub for more details.

Note that due to go-libp2p’s 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 (since v0.24.0), and is now dropping support for draft-29.

For more details and the full changelog please see: Release v0.30.0 · libp2p/go-libp2p · GitHub