v0.18.0
marten-seemann
released this
18 Mar 08:05
·
3325 commits
to master
since this release
We're happy to announce the v0.18.0 release of go-libp2p.
🛠 Breaking Changes
In this release, we're continuing our repo consolidation. We've moved the following repositories into go-libp2p:
- go-libp2p-autonat
- go-libp2p-discovery
- go-libp2p-connmgr
- go-addr-utils
- go-libp2p-netutil
- go-sockaddr
If you've been using functions from these repositories, please make sure to point those to go-libp2p.
🔦 Highlights
The main feature of v0.18.0 is the Resource Manager. The Resource Manager allows the configuration of (among others):
- the number of incoming / outgoing connections
- the number of incoming / outgoing streams
- the number of streams per protocol, and per service
- memory usage
For details on how this works, and how to change limits, refer to the README of the Resource Manager.
In this release, we've finished the transition from ipfs/go-log@v1 to ipfs/go-log@v2. One less dependency!
Changelog
- github.com/libp2p/go-libp2p:
- update go-libp2p-resource manager, release v0.18.0 (#1361) (libp2p/go-libp2p#1361)
- fix flaky BackoffConnector test (#1353) (libp2p/go-libp2p#1353)
- release v0.18.0-rc6 (#1350) (libp2p/go-libp2p#1350)
- update mplex (#1348) (libp2p/go-libp2p#1348)
- release v0.18.0-rc5 (libp2p/go-libp2p#1341)
- update README (#1330) (libp2p/go-libp2p#1330)
- fix parsing of IP addresses for zeroconf initialization (#1338) (libp2p/go-libp2p#1338)
- fix flaky TestBackoffConnector test (#1328) (libp2p/go-libp2p#1328)
- release v0.18.0-rc4 (libp2p/go-libp2p#1327)
- update go-libp2p-yamux and go-libp2p-quic-transport (#1326) (libp2p/go-libp2p#1326)
- fix (and speed up) flaky TestBackoffConnector test (#1316) (libp2p/go-libp2p#1316)
- increase the UDP receiver buffer size on CI (#1323) (libp2p/go-libp2p#1323)
- fix flaky TestAutoRelay test (#1322) (libp2p/go-libp2p#1322)
- deflake resource manager tests, take 2 (libp2p/go-libp2p#1318)
- fix race condition causing TestAutoNATServiceDialError test failure (#1312) (libp2p/go-libp2p#1312)
- disable flaky relay example test on CI (#1219) (libp2p/go-libp2p#1219)
- fix flaky resource manager tests (libp2p/go-libp2p#1315)
- update deps, fixing nil peer scope pointer issues in connection upgrading (libp2p/go-libp2p#1309)
- release v0.18.0-rc2 (libp2p/go-libp2p#1306)
- add semaphore to control push/delta concurrency (libp2p/go-libp2p#1305)
- update go-libp2p-swarm and go-libp2p-yamux (libp2p/go-libp2p#1304)
- update go-libp2p-resource-manager (libp2p/go-libp2p#1303)
- update yamux to v3.0.2 (libp2p/go-libp2p#1301)
- release v0.18.0-rc1 (libp2p/go-libp2p#1300)
- default connection manager (libp2p/go-libp2p#1299)
- Basic resource manager integration tests (libp2p/go-libp2p#1296)
- use the resource manager (libp2p/go-libp2p#1275)
- move the go-libp2p-connmgr here (libp2p/go-libp2p#1297)
- move go-libp2p-discovery here (libp2p/go-libp2p#1291)
- speed up identify tests (libp2p/go-libp2p#1294)
- don't close the connection when opening the identify stream fails (libp2p/go-libp2p#1293)
- use the netutil package that was moved to go-libp2p-testing (#1263) (libp2p/go-libp2p#1263)
- speed up the autorelay test, fix flaky TestAutoRelay test (libp2p/go-libp2p#1272)
- remove replace directives in the examples go.mod files (libp2p/go-libp2p#1292)
- fix flaky TestStreamsStress test (#1288) (libp2p/go-libp2p#1288)
- chore: update go-log to v2.5.0 (#1286) (libp2p/go-libp2p#1286)
- add an option for the swarm dial timeout (libp2p/go-libp2p#1271)
- use the transport.Upgrader interface (libp2p/go-libp2p#1277)
- fix typo in options.go (#1274) (libp2p/go-libp2p#1274)
- remove direct dependency on libp2p/go-addr-util (libp2p/go-libp2p#1279)
- fix flaky TestNotifications test (libp2p/go-libp2p#1278)
- move go-libp2p-autonat to p2p/host/autonat (libp2p/go-libp2p#1273)
- require the expiration field of the circuit v2 Reservation protobuf (libp2p/go-libp2p#1269)
- run reconnect test using QUIC (libp2p/go-libp2p#1268)
- remove goprocess from the mock package (libp2p/go-libp2p#1266)
- github.com/ipfs/go-log/v2 (v2.4.0 -> v2.5.0):
- release v2.5.0 (#131) (ipfs/go-log#131)
- config inspection (#129) (ipfs/go-log#129)
- update go.uber.org/zap to v1.19.1
- github.com/libp2p/go-libp2p-circuit (v0.4.0 -> v0.6.0):
- release v0.6.0 (#151) (libp2p/go-libp2p-circuit#151)
- chore: update go-log to v2 (#147) (libp2p/go-libp2p-circuit#147)
- release v0.5.0 (#150) (libp2p/go-libp2p-circuit#150)
- use the resource manager (libp2p/go-libp2p-circuit#148)
- use the transport.Upgrader interface (libp2p/go-libp2p-circuit#149)
- (libp2p/go-libp2p-circuit#143)
- add a Close method, remove the context from the constructor (libp2p/go-libp2p-circuit#141)
- chore: update go-libp2p-core, go-libp2p-swarm (libp2p/go-libp2p-circuit#140)
- remove the circuit v2 code (libp2p/go-libp2p-circuit#139)
- implement circuit v2 (libp2p/go-libp2p-circuit#136)
- remove deprecated types (libp2p/go-libp2p-circuit#135)
- fix race condition in TestActiveRelay (libp2p/go-libp2p-circuit#133)
- minor staticcheck fixes (libp2p/go-libp2p-circuit#126)
- Timeout Stream Read (libp2p/go-libp2p-circuit#124)
- github.com/libp2p/go-libp2p-core (v0.13.0 -> v0.14.0):
- release v0.14.0 (#235) (libp2p/go-libp2p-core#235)
- Network Resource Manager interface (#229) (libp2p/go-libp2p-core#229)
- update gopkg.in/yaml.v2 to v2.2.8 (#233) (libp2p/go-libp2p-core#233)
- introduce a transport.Upgrader interface (#232) (libp2p/go-libp2p-core#232)
- remove the transport.AcceptTimeout (#231) (libp2p/go-libp2p-core#231)
- remove the DialTimeout (#230) (libp2p/go-libp2p-core#230)
- remove duplicate io.Closer on Network interface (#228) (libp2p/go-libp2p-core#228)
- github.com/libp2p/go-libp2p-mplex (v0.4.1 -> v0.6.0):
- release v0.6.0 (#32) (libp2p/go-libp2p-mplex#32)
- update mplex (#31) (libp2p/go-libp2p-mplex#31)
- release v0.5.0 (#30) (libp2p/go-libp2p-mplex#30)
- implement the new network.MuxedConn interface (#29) (libp2p/go-libp2p-mplex#29)
- remove Makefile (libp2p/go-libp2p-mplex#25)
- github.com/libp2p/go-libp2p-quic-transport (v0.15.2 -> v0.16.1):
- release v0.16.1 (#261) (libp2p/go-libp2p-quic-transport#261)
- Prevent data race in allowWindowIncrease (#259) (libp2p/go-libp2p-quic-transport#259)
- release v0.16.0 (#258) (libp2p/go-libp2p-quic-transport#258)
- use the Resource Manager (libp2p/go-libp2p-quic-transport#249)
- chore: update go-netroute (#257) (libp2p/go-libp2p-quic-transport#257)
- chore: update klauspost/compress to v1.13.6 (#254) (libp2p/go-libp2p-quic-transport#254)
- chore: update go-log to v2.5.0 (#253) (libp2p/go-libp2p-quic-transport#253)
- don't start a Go routine for every connection dialed (libp2p/go-libp2p-quic-transport#252)
- migrate to standard Go tests, stop using Ginkgo (libp2p/go-libp2p-quic-transport#250)
- chore: remove Codecov config (#251) (libp2p/go-libp2p-quic-transport#251)
- reduce the maximum number of incoming streams to 256 (#243) (libp2p/go-libp2p-quic-transport#243)
- chore: update go-log to v2 (#242) (libp2p/go-libp2p-quic-transport#242)
- github.com/libp2p/go-libp2p-swarm (v0.9.0 -> v0.10.2):
- bump version to v0.10.2 (libp2p/go-libp2p-swarm#316)
- Refactor dial worker loop into an object and fix bug (libp2p/go-libp2p-swarm#315)
- release v0.10.1 (libp2p/go-libp2p-swarm#313)
- release the stream scope if the conn fails to open a new stream (libp2p/go-libp2p-swarm#312)
- release v0.10.0 (#311) (libp2p/go-libp2p-swarm#311)
- add support for the resource manager (libp2p/go-libp2p-swarm#308)
- chore: update go-log to v2.5.0 (#310) (libp2p/go-libp2p-swarm#310)
- use the transport.Upgrader interface (libp2p/go-libp2p-swarm#309)
- remove dependency on go-addr-util (libp2p/go-libp2p-swarm#300)
- stop using transport.DialTimeout in tests (#307) (libp2p/go-libp2p-swarm#307)
- increment active dial counter in dial worker loop (libp2p/go-libp2p-swarm#305)
- speed up the dial tests (libp2p/go-libp2p-swarm#301)
- stop using the deprecated libp2p/go-maddr-filter (libp2p/go-libp2p-swarm#303)
- add constructor options for timeout, stop using transport.DialTimeout (libp2p/go-libp2p-swarm#302)
- github.com/libp2p/go-libp2p-testing (v0.6.0 -> v0.8.0):
- release v0.8.0 (#50) (libp2p/go-libp2p-testing#50)
- use io.ReadFull in muxer test, use require.Equal to compare buffers (#49) (libp2p/go-libp2p-testing#49)
- release v0.7.0 (#47) (libp2p/go-libp2p-testing#47)
- chore: update go-log to v2.5.0 (#48) (libp2p/go-libp2p-testing#48)
- add mocks for the resource manager (libp2p/go-libp2p-testing#46)
- merge libp2p/go-libp2p-netutil into this repo (libp2p/go-libp2p-testing#45)
- reduce the number of connections in the stream muxer stress test (#44) (libp2p/go-libp2p-testing#44)
- github.com/libp2p/go-libp2p-transport-upgrader (v0.6.0 -> v0.7.1):
- release v0.7.1 (libp2p/go-libp2p-transport-upgrader#105)
- Fix nil peer scope issues (libp2p/go-libp2p-transport-upgrader#104)
- release v0.7.0 (#103) (libp2p/go-libp2p-transport-upgrader#103)
- use the Resource Manager (libp2p/go-libp2p-transport-upgrader#99)
- chore: update go-log to v2.5.0 (#102) (libp2p/go-libp2p-transport-upgrader#102)
- rename the package to upgrader (libp2p/go-libp2p-transport-upgrader#101)
- use the new transport.Upgrader interface (libp2p/go-libp2p-transport-upgrader#100)
- reset the temporary error catcher delay after successful accept (libp2p/go-libp2p-transport-upgrader#97)
- make the accept timeout configurable, stop using transport.AcceptTimeout (libp2p/go-libp2p-transport-upgrader#98)
- github.com/libp2p/go-libp2p-yamux (v0.7.0 -> v0.8.2):
- release v0.8.2 (#50) (libp2p/go-libp2p-yamux#50)
- disable the incoming streams limit (#49) (libp2p/go-libp2p-yamux#49)
- Release v0.8.1 (libp2p/go-libp2p-yamux#48)
- release v0.8.0 (#47) (libp2p/go-libp2p-yamux#47)
- pass the PeerScope to yamux (satifiying its MemoryManger interface) (#46) (libp2p/go-libp2p-yamux#46)
- github.com/libp2p/go-mplex (v0.3.0 -> v0.6.0):
- release v0.6.0 (#105) (libp2p/go-mplex#105)
- fix incorrect reset of timer fired variable (#104) (libp2p/go-mplex#104)
- Mplex salvage operations, part II (#102) (libp2p/go-mplex#102)
- release v0.5.0 (#100) (libp2p/go-mplex#100)
- Salvage mplex in the age of resource management (#99) (libp2p/go-mplex#99)
- release v0.4.0 (#97) (libp2p/go-mplex#97)
- chore: update go-log to v2.5.0 (#98) (libp2p/go-mplex#98)
- add a MemoryManager interface to control memory allocations (libp2p/go-mplex#96)
- chore: update go-log to v2 (libp2p/go-mplex#92)
- chore: remove Codecov config (libp2p/go-mplex#91)
- multiplex: add (*Multiplex).CloseChan (libp2p/go-mplex#89)
- add a Go Reference badge to the README (libp2p/go-mplex#88)
- ci: run interop tests in CI (libp2p/go-mplex#86)
- Fixup tests & vet (libp2p/go-mplex#84)
- Bump lodash from 4.17.19 to 4.17.21 in /interop/js (libp2p/go-mplex#83)
- github.com/libp2p/go-netroute (v0.1.6 -> v0.2.0):
- release v0.2.0 (#21) (libp2p/go-netroute#21)
- move some functions from go-sockaddr here, remove go-sockaddr dependency (libp2p/go-netroute#22)
- ignore the error on the RouteMessage on Darwin (libp2p/go-netroute#20)
- skip loopback addr as indication of v6 routes (libp2p/go-netroute#17)
- fix staticcheck lint issues (libp2p/go-netroute#15)
- github.com/libp2p/go-stream-muxer-multistream (v0.3.0 -> v0.4.0):
- release v0.4.0 (#23) (libp2p/go-stream-muxer-multistream#23)
- implement the new Multiplexer.NewConn interface (libp2p/go-stream-muxer-multistream#22)
- github.com/libp2p/go-tcp-transport (v0.4.0 -> v0.5.1):
- release v0.5.1 (#116) (libp2p/go-tcp-transport#116)
- fix: drop raw EINVAL (from keepalives) errors as well (#115) (libp2p/go-tcp-transport#115)
- release v0.5.0 (#114) (libp2p/go-tcp-transport#114)
- use the ResourceManager (libp2p/go-tcp-transport#110)
- chore: update go-log to v2.5.0 (#112) (libp2p/go-tcp-transport#112)
- use the transport.Upgrader interface (libp2p/go-tcp-transport#111)
- describe how to use options in README (libp2p/go-tcp-transport#105)
- github.com/libp2p/go-ws-transport (v0.5.0 -> v0.6.0):
- release v0.6.0 (#113) (libp2p/go-ws-transport#113)
- use the resource manager (libp2p/go-ws-transport#109)
- chore: remove Codecov config (#112) (libp2p/go-ws-transport#112)
- remove contexts from libp2p constructors in README (#111) (libp2p/go-ws-transport#111)
- use the transport.Upgrader interface (libp2p/go-ws-transport#110)
- github.com/lucas-clemente/quic-go (v0.24.0 -> v0.25.0):
- add a AllowConnectionWindowIncrease config option (lucas-clemente/quic-go#3317)
- Update README.md (#3315) (lucas-clemente/quic-go#3315)
- fix some typos in documentation and tests
- remove unneeded calls to goimports when generating mocks (lucas-clemente/quic-go#3313)
- fix comment about congestionWindow value (#3310) (lucas-clemente/quic-go#3310)
- fix typo *connections (#3309) (lucas-clemente/quic-go#3309)
- add support for Go 1.18 (lucas-clemente/quic-go#3298)
- github.com/marten-seemann/qtls-go1-18 (null -> v0.1.0-beta.1):
- use a prefix for client session cache keys
- add callbacks to store and restore app data along a session state
- don't use TLS 1.3 compatibility mode when using alternative record layer
- delete the session ticket after attempting 0-RTT
- reject 0-RTT when a different ALPN is chosen
- encode the ALPN into the session ticket
- add a field to the ConnectionState to tell if 0-RTT was used
- add a callback to tell the client about rejection of 0-RTT
- don't offer 0-RTT after a HelloRetryRequest
- add Accept0RTT to Config callback to decide if 0-RTT should be accepted
- add the option to encode application data into the session ticket
- export the 0-RTT write key
- abuse the nonce field of ClientSessionState to save max_early_data_size
- export the 0-RTT read key
- close connection if client attempts 0-RTT, but ticket didn't allow it
- encode the max early data size into the session ticket
- implement parsing of the early_data extension in the EncryptedExtensions
- add a tls.Config.MaxEarlyData option to enable 0-RTT
- accept TLS 1.3 cipher suites in Config.CipherSuites
- introduce a function on the connection to generate a session ticket
- add a config option to enforce selection of an application protocol
- export Conn.HandlePostHandshakeMessage
- reject Configs that set MaxVersion < 1.3 when using a record layer
- enforce TLS 1.3 when using an alternative record layer
- add alternative record layer config option, used by QUIC
- export a constructor for the TLS 1.3 AES-GCM AEAD
- implement sending and receiving extensions in the Encrypted Extensions
- implement sending and receiving extensions in the Client Hello
- introduce an extra config struct to get and receive extensions
- export Alert
- implement additional extensions for the ClientHello message
- implement additional extensions for the Encrypted Extensions message
- use a tls.Config and a tls.ClientHelloInfo
- use tls.CertificateRequestInfo instead of redefining it
- use a tls.ClientSessionCache and tls.ClientSessionState
- use a tls.ConnectionState instead of redefining it
- use tls.Certificate instead of redefining it
- use tls.RenegotiationSupport instead of redefining it
- use tls.ClientAuthType instead of redefining it
- use tls.SignatureScheme instead of redefining it
- use tls.CurveID instead of redefining it
- add a README
- add a license
- rename to qtls, don't use internal packages, add go.mod, add GitHub Actions config
- initial commit (based on go@go1.18beta1)
- github.com/multiformats/go-multiaddr (v0.4.0 -> v0.5.0):
- release v0.5.0 (#171) (multiformats/go-multiaddr#171)
- remove wrong (and redundant) IsIpv6LinkLocal (multiformats/go-multiaddr#170)
- move ResolveUnspecifiedAddress(es) and FilterAddrs here from libp2p/go-addr-util (multiformats/go-multiaddr#168)
- add the plaintextv2 protocol (multiformats/go-multiaddr#165)
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marten Seemann | 245 | +47327/-17327 | 951 |
vyzo | 132 | +11566/-1838 | 241 |
Will Scott | 27 | +1650/-634 | 65 |
Adin Schmahmann | 18 | +1692/-396 | 37 |
Steven Allen | 23 | +1318/-607 | 36 |
Raúl Kripalani | 18 | +1519/-271 | 38 |
Will | 3 | +626/-311 | 15 |
Jeromy | 29 | +507/-205 | 44 |
James Wetter | 2 | +234/-1 | 2 |
Juan Batiz-Benet | 2 | +214/-8 | 4 |
Jakub Sztandera | 1 | +132/-65 | 2 |
huoju | 4 | +127/-41 | 6 |
Gus Eggert | 3 | +69/-25 | 6 |
Ian Davis | 1 | +78/-14 | 2 |
Raúl Kripalani | 2 | +63/-13 | 2 |
Anton Petrov | 1 | +73/-0 | 1 |
Aarsh Shah | 1 | +39/-5 | 2 |
Rachel Chen | 1 | +41/-0 | 2 |
Łukasz Magiera | 1 | +28/-3 | 1 |
Miguel Mota | 1 | +23/-0 | 1 |
aarshkshah1992 | 3 | +12/-2 | 3 |
Elijah | 1 | +10/-0 | 1 |
dependabot[bot] | 1 | +3/-3 | 1 |
Ju Huo | 1 | +2/-2 | 1 |
Ettore Di Giacinto | 2 | +3/-1 | 2 |
市川恭佑 (ebi) | 1 | +1/-1 | 1 |
star | 1 | +0/-2 | 1 |
Preston Van Loon | 1 | +2/-0 | 1 |
Glenn | 1 | +1/-1 | 1 |
David Florness | 1 | +1/-1 | 1 |
Coenie Beyers | 1 | +1/-1 | 1 |
Benedikt Spies | 1 | +1/-1 | 1 |