Skip to content

Releases: libp2p/go-libp2p

v0.23.1

23 Sep 17:03
17a342c
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.23.0...v0.23.1

v0.23.0

20 Sep 20:46
f3f0e93
Compare
Choose a tag to compare

🔦 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

Read more

v0.22.0

19 Aug 09:06
ceece5a
Compare
Choose a tag to compare

🔦 Highlights

go-libp2p is a mono-repo now

This release finishes our long-term effort of consolidating repositories (#1556), turning go-libp2p into a mono-repo. In this release, we've moved the last 4 remaining repositories here:

As with our last consolidation release (v0.20.0), this means that some import paths might have changed. The recommended way of updating is the following:

  1. Run go get -u ./.... This will pull in updated dependencies, including updates for all the repositories listed above.
  2. Run staticcheck ./.... All repositories listed above were deprecated, and staticcheck will generate errors when they are imported.

Other noteworthy changes

  • When no Identity is passed to libp2p.New, we generate a private key for you. We now generate an Ed25519 key instead of a RSA key (#1576).
  • AutoRelay now actively polls for new candidates, instead of expecting the application to continuously deliver new candidates (#1569).

Changelog

Contributors

Contributor Commits Lines ± Files Changed
Marten Seemann 153 +46888/-13331 978
Raúl Kripalani 118 +23120/-4920 428
vyzo 144 +10129/-3665 230
Marco Munizaga 71 +6395/-2735 111
Steven Allen 101 +2548/-2839 213
Yusef Napora 6 +4968/-203 48
Cole Brown 57 +2169/-1338 95
Raúl Kripalani 2 +1000/-889 18
Jeromy 38 +1165/-672 167
Łukasz Magiera 27 +1313/-501 55
Juan Batiz-Benet 2 +1531/-9 21
Aarsh Shah 24 +377/-105 34
Masih H. Derkani 1 +196/-212 20
adam 4 +235/-49 9
Jakub Sztandera 9 +203/-73 13
Peter Argue 1 +166/-36 3
Vibhav Pant 4 +186/-12 7
Adrian Lanzafame 3 +180/-16 5
Oleg Jukovec 3 +180/-14 9
Lars Gierth 5 +151/-41 25
dignifiedquire 3 +122/-33 6
Gus Eggert 4 +75/-64 11
Claudia Richoux 1 +74/-55 4
Chinmay Kousik 1 +121/-4 6
Whyrusleeping 2 +120/-0 6
wzp 2 +86/-3 2
cpuchip 1 +65/-6 2
Roman Proskuryakov 2 +69/-0 2
Jorropo 3 +56/-11 8
Arceliar 2 +36/-28 2
Dave Collins 1 +28/-34 6
Christian Stewart 1 +37/-23 5
Maxim Merzhanov 1 +29/-24 1
Richard Ramos 1 +51/-0 2
galargh 3 +37/-11 4
Didrik Nordström 1 +35/-6 1
Vasco Santos 1 +20/-20 7
Jesse Bouwman 1 +19/-21 1
MGMCN 1 +9/-24 2
Brian Meek 1 +14/-17 4
Mars Zuo 1 +7/-18 1
c r 1 +11/-6 3
Cory Schwartz 1 +0/-17 1
Laurent Senta 1 +16/-0 1
Ian Davis 2 +14/-2 3
Piotr Galar 4 +7/-6 4
Matt Joiner 2 +10/-3 2
Dmitry Yu Okunev 1 +5/-7 5
corverroos 1 +7/-4 2
Marcin Rataj 1 +4/-7 1
Ignacio Hagopian 2 +7/-2 2
Julien Muret 1 +4/-4 2
Eclésio Junior 1 +8/-0 1
Stephan Eberle 1 +4/-3 1
muXxer 1 +3/-3 1
Sergey 1 +1/-3 1
Jun10ng 2 +2/-2 2
Jorik Schellekens 1 +2/-2 1
Eli Wang 1 +2/-2 1
Andreas Linde 1 +4/-0 1
whyrusleeping 1 +2/-1 1
star 1 +0/-2 1
bigs 1 +1/-1 1
Tarun Bansal 1 +1/-1 1
Mikerah 1 +1/-1 1
Mike Goelzer 1 +2/-0 1
Max Inden 1 +1/-1 1
Leo Balduf 1 +1/-1 1
Kevin Mai-Husan Chia 1 +1/-1 1
John B Nelson 1 +1/-1 1
Alex Stokes 1 +1/-1 1

v0.21.0

27 Jul 14:00
3b3605c
Compare
Choose a tag to compare

🔦 Highlights

Resource Management

  • Default resource management config limits will now autoscale depending on the machine size.
  • You can now specify an allowlisted set of multiaddrs that can still connect to you even if you've reached your normal limits (still limited by the allowlist limits).
  • Resource manager now exposes opencensus metrics and provides a default grafana dashboard.

Swarm Notifications are now synchronous

If your protocol depended on being given notifications in an async context and taking its time processing that, you will slow down your whole go-libp2p application. See #1562 for more details. This only matters if you implemented a network.Notifiee and registered to receive notifications on swarm network events.

Canonical Logs

  • go-libp2p now logs a small sample of connection events so you can get a feel of the system. Guide for how to hook this into fail2ban coming soon.

What's Changed

New Contributors

Full Changelog: v0.20.0...v0.21.0

More information here: #1514

v0.21.0-rc

05 Jul 15:08
66cd76d
Compare
Choose a tag to compare
v0.21.0-rc Pre-release
Pre-release

What's Changed

Lots of resource management improvements and various bug fixes.

New Contributors

Full Changelog: v0.20.0...v0.21.0-rc

v0.20.3

28 Jun 21:44
644dadc
Compare
Choose a tag to compare

This release fixes a bug in multistream select

What's Changed

Full Changelog: v0.20.2...v0.20.3

v0.20.2

24 Jun 17:44
Compare
Choose a tag to compare

This release fixes a bug in multistream and in WSS dialing.

Changelog

Full Changelog: v0.20.1...v0.20.2

v0.20.1

02 Jun 16:32
b54bace
Compare
Choose a tag to compare

This release fixes a bug in the yamux implementation that could occasionally lead to incorrect accounting of memory consumed by yamux streams.

Changelog

Full Changelog: v0.20.0...v0.20.1

v0.19.4

02 Jun 16:16
be5264f
Compare
Choose a tag to compare

This release fixes a bug in the yamux implementation that could occasionally lead to incorrect accounting of memory consumed by yamux streams.

Changelog

Full Changelog: v0.19.3...v0.19.4

v0.20.0

26 May 09:49
6c56eea
Compare
Choose a tag to compare

We're happy to announce the v0.20.0 release of go-libp2p.

🛠 BREAKING CHANGES

In this release, we've taken steps to reduce the go-libp2p-* repo sprawl, and move all transport-related repositories (and some others) to go-libp2p. Specifically, the following repositories were deprecated:

  • go-libp2p-blankhost
  • go-libp2p-swarm
  • go-libp2p-yamux
  • go-libp2p-mplex
  • go-libp2p-noise
  • go-libp2p-tls
  • go-tcp-transport
  • go-libp2p-quic-transport
  • go-ws-transport
  • go-libp2p-pnet
  • go-libp2p-nat
  • go-libp2p-transport-upgrader
  • go-conn-security-multistream
  • go-stream-muxer-multistream
  • go-reuseport-transport

For users of go-libp2p, this might mean that a few import paths have changed. The recommended way of updating is the following:

  1. Run go get -u ./.... This will pull in updated dependencies, including updates for all the repositories listed above.
  2. Run staticcheck ./.... All repositories listed above were deprecated, and staticcheck will generate errors when they are imported.

Changelog

Read more