Releases: libp2p/go-libp2p
v0.17.0
Changelog
- github.com/libp2p/go-libp2p:
- chore: update deps (libp2p/go-libp2p#1264)
- use the new network.ConnStats (libp2p/go-libp2p#1262)
- move the peerstoremanager to the host (libp2p/go-libp2p#1258)
- reduce the default stream protocol negotiation timeout (#1254) (libp2p/go-libp2p#1254)
- Doc: QUIC is default when no transports set (#1250) (libp2p/go-libp2p#1250)
- exclude web3-bot from mkreleaselog (libp2p/go-libp2p#1248)
- identify: also match observed against listening addresses (libp2p/go-libp2p#1255)
- make it possible to run the auto relays tests multiple times (libp2p/go-libp2p#1253)
- github.com/ipfs/go-log/v2 (v2.3.0 -> v2.4.0):
- chore: remove leftover package.json from gx (#126) (ipfs/go-log#126)
- chore: remove .gx (#124) (ipfs/go-log#124)
- update mattn/go-isatty to v0.0.14 (#123) (ipfs/go-log#123)
- fix: cannot call SetPrimaryCore after using a Tee logger (ipfs/go-log#121)
- Document environment variables (ipfs/go-log#120)
- Add WithStacktrace untility (ipfs/go-log#118)
- In addition to StdOut/Err check the outfile for TTYness (ipfs/go-log#117)
- github.com/libp2p/go-libp2p-autonat (v0.6.0 -> v0.7.0):
- clean up dialer peerstore after each dial (libp2p/go-libp2p-autonat#115)
- chore: update go-log to v2 (#114) (libp2p/go-libp2p-autonat#114)
- github.com/libp2p/go-libp2p-blankhost (v0.2.0 -> v0.3.0):
- add a WithEventBus constructor option (libp2p/go-libp2p-blankhost#61)
- emit the EvtPeerConnectednessChanged event (libp2p/go-libp2p-blankhost#58)
- chore: update go-log to v2 (libp2p/go-libp2p-blankhost#59)
- Remove invalid links (libp2p/go-libp2p-blankhost#57)
- fix go vet (libp2p/go-libp2p-blankhost#53)
- github.com/libp2p/go-libp2p-core (v0.11.0 -> v0.13.0):
- rename network.Stat to Stats, introduce ConnStats (#226) (libp2p/go-libp2p-core#226)
- generate ecdsa public key from an input public key (#219) (libp2p/go-libp2p-core#219)
- add RemovePeer method to PeerMetadata, Metrics, ProtoBook and Keybook (#218) (libp2p/go-libp2p-core#218)
- github.com/libp2p/go-libp2p-peerstore (v0.4.0 -> v0.6.0):
- remove the pstoremanager (will be moved to the Host) (libp2p/go-libp2p-peerstore#188)
- remove metadata interning (libp2p/go-libp2p-peerstore#185)
- when passed an event bus, automatically clean up disconnected peers (libp2p/go-libp2p-peerstore#184)
- implement the RemovePeer method (libp2p/go-libp2p-peerstore#174)
- chore: update go-log to v2 (#179) (libp2p/go-libp2p-peerstore#179)
- github.com/libp2p/go-libp2p-quic-transport (v0.15.0 -> v0.15.2):
- reduce the maximum number of incoming streams to 256
- github.com/libp2p/go-libp2p-swarm (v0.8.0 -> v0.9.0):
- count the number of streams on a connection for the stats (libp2p/go-libp2p-swarm#298)
- chore: update go-log to v2 (#294) (libp2p/go-libp2p-swarm#294)
- github.com/libp2p/go-libp2p-testing (v0.5.0 -> v0.6.0):
- expose a map, not a slice, of muxer tests (#41) (libp2p/go-libp2p-testing#41)
- github.com/libp2p/go-libp2p-transport-upgrader (v0.5.0 -> v0.6.0):
- remove note about go.mod and Go 1.11 in README (#94) (libp2p/go-libp2p-transport-upgrader#94)
- fix flaky TestAcceptQueueBacklogged test (libp2p/go-libp2p-transport-upgrader#96)
- chore: remove Codecov config (#93) (libp2p/go-libp2p-transport-upgrader#93)
- use the new network.ConnStats (libp2p/go-libp2p-transport-upgrader#92)
- chore: update go-log (libp2p/go-libp2p-transport-upgrader#88)
- github.com/libp2p/go-libp2p-yamux (v0.6.0 -> v0.7.0):
- chore: remove .gx (#44) (libp2p/go-libp2p-yamux#44)
- reduce the number of max incoming stream to 256 (libp2p/go-libp2p-yamux#41)
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marten Seemann | 51 | +3168/-1546 | 140 |
Steven Allen | 4 | +88/-17 | 4 |
Richard Ramos | 1 | +51/-0 | 2 |
Manfred Touron | 1 | +21/-2 | 2 |
Peter Rabbitson | 1 | +15/-2 | 1 |
Jakub Sztandera | 2 | +11/-2 | 2 |
alliswell | 1 | +0/-2 | 1 |
Hector Sanjuan | 1 | +1/-1 | 1 |
v0.16.0
We're happy to announce go-libp2p v0.16.0. This is a big release, which adds support for the circuit v2 protocol, paving the way to decentralized hole punching.
Running a circuit v1 relay turned out to be very expensive, which is why only a few nodes could afford to act as a relay. Circuit v2 changes this dramatically: By introducing the concept of relay reservations (limiting the number of nodes connected to a relay at any given point), as well as connection limits (limiting the amount of data and the duration of relayed connections), every node on the network will be able to afford running the relay service.
When circuit v2 relay service is enabled (using the EnableRelayService
option), AutoNAT enables the relay v2 service if the node is publicly reachable. Note that currently, AutoRelay does not yet automatically discover relay v2 nodes. This will be added in a future libp2p release very soon. In this release, it is possible to configure known relay servers using the StaticRelays
configuration option.
Features
- Added support for the circuitv2 protocol. Use
EnableRelayService
to enable the circuit v2 relay service. - Added support for DCUtR protocol (decentralized hole punching). Use
EnableHolePunching
to activate.
Breaking Changes
- The
context.Context
in the host constructor (libp2p.New
) was removed (#1190). UseHost.Close()
to shut down a host. - Remove support for relays running the circuitv1 protocol.
Fixes
- Fix non-ASCII mDNS peer names (#1222).
Changelog
- github.com/libp2p/go-libp2p:
- release v0.16.0 (libp2p/go-libp2p#1246)
- chore: update go-libp2p-tls to v0.3.1 (libp2p/go-libp2p#1245)
- allow the ping protocol on transient connections (libp2p/go-libp2p#1244)
- make the Type field required in the HolePunch protobuf (libp2p/go-libp2p#1241)
- chore: update yamux and QUIC (libp2p/go-libp2p#1242)
- reject hole punching attempts when we don't have any public addresses (libp2p/go-libp2p#1214)
- refactor the AutoRelay code (libp2p/go-libp2p#1240)
- remove dead API link in README (libp2p/go-libp2p#1233)
- pass static relays to EnableAutoRelay, deprecate libp2p.StaticRelays and libp2p.DefaultStaticRelays (libp2p/go-libp2p#1239)
- feat: plumb through peerstore context changes (#1237) (libp2p/go-libp2p#1237)
- emit the EvtPeerConnectednessChanged event (libp2p/go-libp2p#1230)
- chore: update deps (libp2p/go-libp2p#1227)
- update go-libp2p-swarm to v0.7.0 (libp2p/go-libp2p#1226)
- simplify circuitv2 package structure (libp2p/go-libp2p#1224)
- use a random string for the mDNS peer-name (libp2p/go-libp2p#1222)
- chore: update zeroconf to v2.1.1 (libp2p/go-libp2p#1206)
- remove {Un}RegisterNotifee functions from mDNS service (libp2p/go-libp2p#1220)
- fix structured logging in holepunch coordination (libp2p/go-libp2p#1213)
- fix flaky TestStBackpressureStreamWrite test (libp2p/go-libp2p#1212)
- properly close hosts in mDNS tests (libp2p/go-libp2p#1216)
- close the ObserverAddrManager when the ID service is closed (libp2p/go-libp2p#1218)
- make it possible to pass options to a transport constructor (libp2p/go-libp2p#1205)
- remove goprocess from the NATManager (libp2p/go-libp2p#1193)
- add an option to start the relay v2 (libp2p/go-libp2p#1197)
- fix flaky TestFastDisconnect identify test (libp2p/go-libp2p#1200)
- chore: update go-tcp-transport to v0.3.0 (libp2p/go-libp2p#1203)
- fix: skip variadic params in constructors (libp2p/go-libp2p#1204)
- fix flaky BasicHost tests (libp2p/go-libp2p#1202)
- remove dependency on github.com/ipfs/go-detect-race (libp2p/go-libp2p#1201)
- fix flaky TestEndToEndSimConnect holepunching test (libp2p/go-libp2p#1191)
- autorelay support for circuitv2 relays (#1198) (libp2p/go-libp2p#1198)
- reject circuitv2 reservations with nonsensical expiration times (libp2p/go-libp2p#1199)
- Tag relay hops in relay implementations (libp2p/go-libp2p#1188)
- Add standalone implementation of v1 Relay (#1186) (libp2p/go-libp2p#1186)
- remove the context from the libp2p and the Host constructor (libp2p/go-libp2p#1190)
- don't use a context to shut down the circuitv2 (libp2p/go-libp2p#1185)
- fix: remove v1 go-log dep (libp2p/go-libp2p#1189)
- don't use the context to shut down the relay (libp2p/go-libp2p#1184)
- Use circuitv2 code (#1183) (libp2p/go-libp2p#1183)
- clean up badges in README (libp2p/go-libp2p#1179)
- remove recommendation about Go module proxy from README (libp2p/go-libp2p#1180)
- merge branch 'hole-punching'
- don't use a context for closing the ObservedAddrManager (libp2p/go-libp2p#1175)
- move the circuit v2 code here (libp2p/go-libp2p#1174)
- make QUIC a default transport (libp2p/go-libp2p#1128)
- stop using jbenet/go-cienv (libp2p/go-libp2p#1176)
- fix flaky TestObsAddrSet test (libp2p/go-libp2p#1172)
- clean up messy defer logic in IDService.sendIdentifyResp (libp2p/go-libp2p#1169)
- remove secio from README, add noise (libp2p/go-libp2p#1165)
- github.com/ipfs/go-datastore (v0.4.6 -> v0.5.0):
- Update version.json (#183) (ipfs/go-datastore#183)
- feat: add context to interfaces (#181) (ipfs/go-datastore#181)
- github.com/ipfs/go-ds-badger (v0.2.7 -> v0.3.0):
- feat: plumb through contexts (#119) (ipfs/go-ds-badger#119)
- github.com/ipfs/go-ds-leveldb (v0.4.2 -> v0.5.0):
- Version 0.5.0 (#58) (ipfs/go-ds-leveldb#58)
- feat: plumb through contexts (#57) (ipfs/go-ds-leveldb#57)
- fix closing of datastore in tests (ipfs/go-ds-leveldb#52)
- fix staticcheck (ipfs/go-ds-leveldb#49)
- fix typo in function documentation (ipfs/go-ds-leveldb#46)
- Add autocomment configuration
- Add standard issue template
- github.com/libp2p/go-conn-security-multistream (v0.2.1 -> v0.3.0):
- use the new SecureTransport and SecureMuxer interfaces (#36) (libp2p/go-conn-security-multistream#36)
- fix go vet and staticcheck (libp2p/go-conn-security-multistream#33)
- github.com/libp2p/go-libp2p-autonat (v0.4.2 -> v0.6.0):
- Version 0.6.0 (#112) (libp2p/go-libp2p-autonat#112)
- feat: plumb through contexts from peerstore (#111) (libp2p/go-libp2p-autonat#111)
- remove context from constructor, implement a proper Close method (libp2p/go-libp2p-autonat#109)
- fix stream deadlines (libp2p/go-libp2p-autonat#107)
- disable failing integration test (libp2p/go-libp2p-autonat#108)
- fix staticcheck (libp2p/go-libp2p-autonat#103)
- github.com/libp2p/go-libp2p-core (v0.9.0 -> ...
v0.15.1
v0.15.0
We're happy to announce go-libp2p v0.15.0. This release adds a new mDNS implementation, deprecating our old (and buggy) one.
This release also removes a lot of deprecated interfaces, functions, methods and variables.
Changelog
- github.com/libp2p/go-libp2p:
- chore: update go-tcp-transport to v0.2.8
- implement the new mDNS spec, move the old mDNS implementation (#1161) (libp2p/go-libp2p#1161)
- chore: update dependencies for the v0.15 release (libp2p/go-libp2p#1160)
- remove deprecated basichost.New constructor (libp2p/go-libp2p#1156)
- Make BasicHost.evtLocalAddrsUpdated event emitter stateful. (libp2p/go-libp2p#1147)
- fix: deflake multipro echo test (libp2p/go-libp2p#1149)
- fix(basic_host): stream not closed when context done (libp2p/go-libp2p#1148)
- chore: update deps (libp2p/go-libp2p#1141)
- remove secio from examples (libp2p/go-libp2p#1143)
- remove deprecated Filter option (libp2p/go-libp2p#1132)
- fix: remove deprecated call (libp2p/go-libp2p#1136)
- test: fix flaky example test (libp2p/go-libp2p#1135)
- remove deprecated identify.ClientVersion (libp2p/go-libp2p#1133)
- github.com/ipfs/go-datastore (v0.4.5 -> v0.4.6):
- speedup tests (ipfs/go-datastore#177)
- test: reduce element count when the race detector is enabled (ipfs/go-datastore#176)
- fix staticcheck (ipfs/go-datastore#173)
- remove Makefile (ipfs/go-datastore#172)
- github.com/ipfs/go-ds-badger (v0.2.3 -> v0.2.7):
- Log start and end of GC rounds (ipfs/go-ds-badger#115)
- Log error if batch not committed or canceled (ipfs/go-ds-badger#108)
- Add Cancel function; add finalizer to cleanup abandoned batch (ipfs/go-ds-badger#105)
- Do not implement batches using transactions (ipfs/go-ds-badger#104)
- build(deps): bump github.com/dgraph-io/badger from 1.6.1 to 1.6.2 (#100) (ipfs/go-ds-badger#100)
- readme: add information on Badger2 datastore (ipfs/go-ds-badger#102)
- update contributing link (ipfs/go-ds-badger#91)
- Add autocomment configuration
- Add standard issue template
- Use current go-log (#89) (ipfs/go-ds-badger#89)
- fix: verify that the datastore is still open when querying (ipfs/go-ds-badger#87)
- github.com/ipfs/go-log (v1.0.4 -> v1.0.5):
- chore: update v1 deps (ipfs/go-log#108)
- github.com/ipfs/go-log/v2 (v2.1.3 -> v2.3.0):
- Stop defaulting to color output on non-TTY (ipfs/go-log#116)
- feat: add ability to use custom zap core (ipfs/go-log#114)
- fix staticcheck (ipfs/go-log#112)
- test: fix flaky label test (ipfs/go-log#111)
- per-subsystem log-levels (ipfs/go-log#109)
- fix: don't panic on invalid log labels (ipfs/go-log#110)
- github.com/libp2p/go-addr-util (v0.0.2 -> v0.1.0):
- stop using the deprecated go-multiaddr-net package (libp2p/go-addr-util#34)
- Remove
IsFDCostlyTransport
(libp2p/go-addr-util#31)
- github.com/libp2p/go-libp2p-core (v0.8.5 -> v0.9.0):
- feat: remove unused metrics (#208) (libp2p/go-libp2p-core#208)
- feat: keep addresses for longer (#207) (libp2p/go-libp2p-core#207)
- remove deprecated key stretching struct / function (#203) (libp2p/go-libp2p-core#203)
- remove deprecated Bytes method from the Key interface (#204) (libp2p/go-libp2p-core#204)
- remove deprecated functions in the peer package (#205) (libp2p/go-libp2p-core#205)
- remove deprecated constructor for the insecure transport (#206) (libp2p/go-libp2p-core#206)
- feat: add helper functions for working with addr infos (#202) (libp2p/go-libp2p-core#202)
- fix: make timestamps strictly increasing (#201) (libp2p/go-libp2p-core#201)
- ci: use github-actions for compatibility testing (#200) (libp2p/go-libp2p-core#200)
- remove minimum Go version from README (#199) (libp2p/go-libp2p-core#199)
- remove flaky tests (#194) (libp2p/go-libp2p-core#194)
- reduce default timeouts to 15s (#192) (libp2p/go-libp2p-core#192)
- fix benchmark of key verifications (#190) (libp2p/go-libp2p-core#190)
- fix staticcheck errors (#191) (libp2p/go-libp2p-core#191)
- doc: document Close on Transport (#188) (libp2p/go-libp2p-core#188)
- add a helper function to go directly from a string to an AddrInfo (#184) (libp2p/go-libp2p-core#184)
- github.com/libp2p/go-libp2p-discovery (v0.5.0 -> v0.5.1):
- Fix hang in BackoffDiscovery.FindPeers when requesting limit lower than number of peers available (libp2p/go-libp2p-discovery#69)
- fix staticcheck (libp2p/go-libp2p-discovery#70)
- github.com/libp2p/go-libp2p-noise (v0.2.0 -> v0.2.2):
- remove note about go modules in README (libp2p/go-libp2p-noise#100)
- fix: remove deprecated call to pk.Bytes (libp2p/go-libp2p-noise#99)
- github.com/libp2p/go-libp2p-peerstore (v0.2.7 -> v0.2.8):
- Fix perfomance issue in updating addr book (libp2p/go-libp2p-peerstore#141)
- Fix test flakes (libp2p/go-libp2p-peerstore#164)
- Only remove records during GC (libp2p/go-libp2p-peerstore#135)
- fix: fix some race conditions in the ds address book (libp2p/go-libp2p-peerstore#161)
- address lints and test failures (libp2p/go-libp2p-peerstore#159)
- stop using the deprecated go-multiaddr-net package (libp2p/go-libp2p-peerstore#158)
- github.com/libp2p/go-libp2p-quic-transport (v0.10.0 -> v0.11.2):
- update quic-go to v0.21.2
- update quic-go to v0.21.1 (libp2p/go-libp2p-quic-transport#208)
- update quic-go, enable QUIC v1 (RFC 9000) (libp2p/go-libp2p-quic-transport#207)
- update quic-go to v0.21.0-rc2 (libp2p/go-libp2p-quic-transport#206)
- increase test timeout to reduce flakiness of test on Windows (libp2p/go-libp2p-quic-transport#204)
- correctly export version negotiation failures to Prometheus (libp2p/go-libp2p-quic-transport#205)
- update quic-go to v0.20.1 (libp2p/go-libp2p-quic-transport#201)
- expose some Prometheus metrics (libp2p/go-libp2p-quic-transport#200)
- update quic-go to v0.20.0 (libp2p/go-libp2p-quic-transport#198)
- reduce the zstd window size from 8 MB to 32 KB (libp2p/go-libp2p-quic-transport#195)
- compress qlogs when the QUIC connection is closed (libp2p/go-libp2p-quic-transport#193)
- switch from gzip to zstd for qlog compression (libp2p/go-libp2p-quic-transport#190)
- github.com/libp2p/go-libp2p-swarm (v0.5.0 -> v...
v0.14.4
This release updates go-tcp-transport, which fixes an unbounded state growth caused by the metrics tracer in case Prometheus was not running.
Changelog
- github.com/libp2p/go-libp2p:
- update go-tcp-transport to v0.2.4 (libp2p/go-libp2p#1127)
- remove Go version requirement and note about Go modules from README (libp2p/go-libp2p#1126)
- Error assignment fix (libp2p/go-libp2p#1124)
- perf/basic_host: Don't handle address change if we hasn't anyone (libp2p/go-libp2p#1115)
- github.com/libp2p/go-tcp-transport (v0.2.3 -> v0.2.4):
- collect metrics in a separate go routine (libp2p/go-tcp-transport#82)
- fix: avoid logging "invalid argument" errors when setting keepalive (libp2p/go-tcp-transport#83)
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marten Seemann | 5 | +105/-79 | 10 |
Steven Allen | 2 | +21/-5 | 2 |
Lasse Johnsen | 1 | +4/-4 | 2 |
snyh | 1 | +5/-2 | 1 |
v0.14.3
This release updates go-tcp-transport to v0.2.3, which collects TCP metrics from the kernel and exposes them via Prometheus.
Changelog
- github.com/libp2p/go-libp2p:
- update go-tcp-transport to v0.2.3 and go-multiaddr to v0.3.3 (libp2p/go-libp2p#1121)
- github.com/libp2p/go-tcp-transport (v0.2.1 -> v0.2.3):
- Skip SetKeepAlivePeriod call on OpenBSD (libp2p/go-tcp-transport#80)
- sync: update CI config files (#79) (libp2p/go-tcp-transport#79)
- sync: update CI config files (libp2p/go-tcp-transport#78)
- use log.Warn instead of log.Warning (libp2p/go-tcp-transport#77)
- add bandwidth-related metrics (for Linux and OSX) (libp2p/go-tcp-transport#76)
- expose some Prometheus metrics (libp2p/go-tcp-transport#75)
- enable TCP keepalives (libp2p/go-tcp-transport#73)
- stop using the deprecated go-multiaddr-net package (libp2p/go-tcp-transport#72)
- github.com/multiformats/go-multiaddr (v0.3.1 -> v0.3.3):
- guard against nil {Local,Remote}Addr() return values (multiformats/go-multiaddr#155)
- sync: update CI config files (#154) (multiformats/go-multiaddr#154)
- fix(net): export new net.Addr conversion registration functions (multiformats/go-multiaddr#152)
- sync: update CI config files (#149) (multiformats/go-multiaddr#149)
- remove the autorebase workflow (#148) (multiformats/go-multiaddr#148)
- sync: update CI config files (#147) (multiformats/go-multiaddr#147)
- sync: run go mod tidy (and set Go 1.15) and gofmt -s in copy workflow (#146) (multiformats/go-multiaddr#146)
- remove Travis config (multiformats/go-multiaddr#144)
- more linter fixes (multiformats/go-multiaddr#145)
- sync: only create a single PR per target repo (multiformats/go-multiaddr#142)
- fix go vet and staticcheck failures (multiformats/go-multiaddr#143)
- add .github/workflows/automerge.yml (#140) (multiformats/go-multiaddr#140)
- don't listen on all interfaces in tests, unless on CI (multiformats/go-multiaddr#136)
- Fix Local Address on TCP connections (multiformats/go-multiaddr#135)
- github.com/multiformats/go-multihash (v0.0.14 -> v0.0.15):
- Refactor registry system: no direct dependencies; expose standard hash.Hash; be a data carrier. (multiformats/go-multihash#136)
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marten Seemann | 19 | +1885/-300 | 39 |
Eric Myhre | 17 | +637/-553 | 48 |
web3-bot | 15 | +387/-122 | 23 |
Steven Allen | 1 | +16/-6 | 1 |
aarshkshah1992 | 1 | +9/-1 | 1 |
Aaron Bieber | 1 | +6/-2 | 1 |
Release v0.14.2
This is an optional bug-fix release fixing a bug in the mock-network testing framework. This bug did not affect libp2p itself.
Bug: Identifying a connection would sometimes fail because identify would run before both peers "knew" about the connection.
Release v0.14.1
This release fixes a spec-breaking change to yamux (libp2p/go-libp2p-yamux#36) that could reliably lead to random stream resets.
The bug was introduced in go-libp2p 0.14.0.
Release v0.14.0
We're happy to announce go-libp2p 0.14.0. This release introduces a few long awaited features, fixes a few bugs, and includes progress towards NAT hole punching.
Custom DNS Resolvers
You can now pass a custom DNS resolver through the MultiaddrResolver
option. This can be used to add support for DoH, custom TLDs (e.g., .eth
), etc.
TCP Simultaneous Open
Adds initial support for TCP Simultaneous Open. If two peers open a TCP connection to each other at the same time using the same set of ports, they'll end up with a single TCP connection. Previously, go-libp2p would treat this as an error and disconnect. Now the connection succeeds. In the next libp2p release, this will be used to enable hole-punching for NAT traversal.
Improved Stream Multiplexer (Yamux) Performance
Yamux now uses variable sized receive windows to improve performance on high-latency, high-bandwidth connections.
Optimized Noise Read Throughput
The Noise security transport now buffers reads, reducing syscalls and significantly improving throughput.
Changelog
- github.com/libp2p/go-libp2p:
- doc: add a basic release process (libp2p/go-libp2p#1080)
- fix: re-expose AutoNAT service on BasicHost (libp2p/go-libp2p#1088)
- test: deflake TestProtoDowngrade (libp2p/go-libp2p#1084)
- fix go vet (libp2p/go-libp2p#1075)
- option for custom dns resolver (libp2p/go-libp2p#1073)
- fix autonat race (libp2p/go-libp2p#1062)
- use transient connections in identify streams (libp2p/go-libp2p#1061)
- Emit event for User's NAT Type i.e. Hard NAT or Easy NAT (#1042) (libp2p/go-libp2p#1042)
- Finish and Test the simultaneous connect problem in libp2p peers (#1041) (libp2p/go-libp2p#1041)
- Close peerstore and document Host Close (#1037) (libp2p/go-libp2p#1037)
- Timeout all Identify stream reads (#1032) (libp2p/go-libp2p#1032)
- github.com/ipfs/go-datastore (v0.4.4 -> v0.4.5):
- Add test to ensure that Delete returns no error for missing keys (ipfs/go-datastore#162)
- Fix typo in sync/sync.go (ipfs/go-datastore#159)
- Add the generated flatfs stub, since it cannot be auto-generated (ipfs/go-datastore#158)
- support flatfs fuzzing (ipfs/go-datastore#157)
- Add standard issue template
- fuzzing harness (#153) (ipfs/go-datastore#153)
- feat(mount): don't give up on error (ipfs/go-datastore#146)
- /test: fix bad ElemCount/10 lenght (should not be divided) (ipfs/go-datastore#152)
- github.com/ipfs/go-log/v2 (v2.1.1 -> v2.1.3):
- feat: add ability to specify labels for all loggers (ipfs/go-log#105)
- Add an option to pass URL to zap (ipfs/go-log#101)
- enable configuring several log outputs (ipfs/go-log#98)
- Fix caller not being added (ipfs/go-log#96)
- github.com/libp2p/go-conn-security-multistream (v0.2.0 -> v0.2.1):
- update core version (#32) (libp2p/go-conn-security-multistream#32)
- Implement support for simultaneous open (#14) (libp2p/go-conn-security-multistream#14)
- github.com/libp2p/go-libp2p-autonat (v0.4.0 -> v0.4.2):
- Fix: Stream read timeout (libp2p/go-libp2p-autonat#99)
- fix: simplify address replacement (libp2p/go-libp2p-autonat#102)
- replace the port number for double NAT mapping (libp2p/go-libp2p-autonat#101)
- github.com/libp2p/go-libp2p-core (v0.8.0 -> v0.8.5):
- Event for user's NAT Device Type: Tell user if the node is behind an Easy or Hard NAT (#173) (libp2p/go-libp2p-core#173)
- more docs for stream fncs (#183) (libp2p/go-libp2p-core#183)
- refactor: use a helper type to decode AddrInfo from JSON (#178) (libp2p/go-libp2p-core#178)
- fix stream docs (#182) (libp2p/go-libp2p-core#182)
- context to force direct dial (#181) (libp2p/go-libp2p-core#181)
- Secure Muxer Interface (#180) (libp2p/go-libp2p-core#180)
- github.com/libp2p/go-libp2p-noise (v0.1.1 -> v0.2.0):
- Update github.com/flynn/noise to address nonce handling security issues (libp2p/go-libp2p-noise#95)
- optimize: reduce syscalls using a buffered reader.
- github.com/libp2p/go-libp2p-peerstore (v0.2.6 -> v0.2.7):
- fix: delete addrs when "updating" them to zero (libp2p/go-libp2p-peerstore#157)
- github.com/libp2p/go-libp2p-swarm (v0.4.0 -> v0.5.0):
- run connection gating tests on both TCP and QUIC (libp2p/go-libp2p-swarm#258)
- fix: avoid returning typed nils (libp2p/go-libp2p-swarm#257)
- New Dialer (libp2p/go-libp2p-swarm#243)
- fix: use 64bit stream/conn IDs (libp2p/go-libp2p-swarm#247)
- feat: close transports that implement io.Closer (libp2p/go-libp2p-swarm#227)
- fix swarm transient conn (#241) (libp2p/go-libp2p-swarm#241)
- Support for Hole punching (#233) (libp2p/go-libp2p-swarm#233)
- Treat transient connections as opt-in when opening new streams (libp2p/go-libp2p-swarm#236)
- avoid assigning a function to a variable (libp2p/go-libp2p-swarm#239)
- only listen on localhost in tests (libp2p/go-libp2p-swarm#238)
- prevent dialing addresses that we're listening on (libp2p/go-libp2p-swarm#237)
- Enable QUIC in Test Swarm (#235) (libp2p/go-libp2p-swarm#235)
- github.com/libp2p/go-libp2p-transport-upgrader (v0.4.0 -> v0.4.2):
- Expose underlying transport connection stat where available (libp2p/go-libp2p-transport-upgrader#71)
- Implement support for simultaneous open (#25) (libp2p/go-libp2p-transport-upgrader#25)
- github.com/libp2p/go-libp2p-yamux (v0.5.1 -> v0.5.3):
- chore: update yamux (libp2p/go-libp2p-yamux#34)
- chore: update yamux (libp2p/go-libp2p-yamux#33)
- github.com/libp2p/go-netroute (v0.1.3 -> v0.1.6):
- add js stub impl
- github.com/libp2p/go-sockaddr (v0.0.2 -> v0.1.1):
- fix: allocate "any" socket type then cast (libp2p/go-sockaddr#20)
- fix: remove CGO functions (libp2p/go-sockaddr#18)
- github.com/libp2p/go-yamux/v2 (v2.0.0 -> v2.1.1):
- fix: don't change the receive window if we're forcing an update (libp2p/go-yamux#56)
- increase the receive window size if we're sending updates to frequently (libp2p/go-yamux#54)
- remove unused Stream.Shrink() method (libp2p/go-yamux#52)
- remove misleading comment about the MaxMessageSize (libp2p/go-yamux#50)
- clean up the receive window check (libp2p/go-yamux#49)
- don't reslice byte slices taking from the buffer (libp2p/go-yamux#48)
- don't reimplement io.ReadFull (libp2p/go-yamux#38)
- remove the recvLock in the stream (libp2p/go-yamux#42)
- remove the sendLock in the stream (libp2p/go-yamux#41)
- remove misleading statement about NAT traversal (libp2p/go-yamux#45)
- reduce usage of goto (libp2p/go-yamux#40)
- remove unused error return value in Stream.processFlags ([libp2p/go-yamux#39](https://github.co...
v0.13.0
v0.13.0 introduces a BREAKING interface change: MuxedConn.OpenStream
and Conn.NewStream
now both take a context.Context
. This allows stream multiplexer implementations to unblock OpenStream
when requested to do so.
Many stream multiplexers implement some kind of limit on how many streams can be opened at any given moment. This is a useful DoS protection against a peer that would open an unlimited number of streams. That means that opening a new stream might block if it's not possible to open a new stream at that moment.
Upgrade Path
Although breaking, this change is expected to cause little breakage in practice: Host.NewStream
already takes a context.Context
, which is now passed down to the stream multiplexer's OpenStream
method. Only when using Conn.NewStream
it will be necessary to add a context to that call.