| 1 | # Kubo changelog v0.22 |
| 2 | |
| 3 | - [v0.22.0](#v0220) |
| 4 | |
| 5 | ## v0.22.0 |
| 6 | |
| 7 | - [Overview](#overview) |
| 8 | - [🔦 Highlights](#-highlights) |
| 9 | - [Gateway: support for `order=` and `dups=` parameters (IPIP-412)](#gateway-support-for-order-and-dups-parameters-ipip-412) |
| 10 | - [`ipfs name publish` now supports V2 only IPNS records](#ipfs-name-publish-now-supports-v2-only-ipns-records) |
| 11 | - [IPNS name resolution has been fixed](#ipns-name-resolution-has-been-fixed) |
| 12 | - [go-libp2p v0.29.0 update with smart dialing](#go-libp2p-v0290-update-with-smart-dialing) |
| 13 | - [📝 Changelog](#-changelog) |
| 14 | - [👨👩👧👦 Contributors](#-contributors) |
| 15 | |
| 16 | ### Overview |
| 17 | |
| 18 | ### 🔦 Highlights |
| 19 | |
| 20 | #### Gateway: support for `order=` and `dups=` parameters (IPIP-412) |
| 21 | |
| 22 | The updated [`boxo/gateway` library](https://github.com/ipfs/boxo/tree/main/gateway) |
| 23 | introduces support for ordered CAR responses through the inclusion of optional |
| 24 | CAR content type parameters: `order=dfs` and `dups=y|n` from |
| 25 | [IPIP-412](https://github.com/ipfs/specs/pull/412). |
| 26 | |
| 27 | Previously, Kubo already provided CARs in DFS order without duplicate blocks. |
| 28 | With the implementation of IPIP-412, this behavior is now explicitly defined |
| 29 | rather than implied. |
| 30 | |
| 31 | In the absence of `dups` or `order` in `Accept` request reader, the default CAR |
| 32 | response will have the `Content-Type: application/vnd.ipld.car; version=1; order=dfs; dups=n` |
| 33 | and the same blocks as Kubo 0.21. |
| 34 | |
| 35 | Kubo 0.22 still only supports DFS block ordering (`order=dfs`). However, it is |
| 36 | now possible to request a DFS CAR stream with duplicate blocks by opting in via |
| 37 | `Accept: application/vnd.ipld.car; order=dfs; dups=y`. This opt-in feature can be |
| 38 | beneficial for memory-constrained clients and IoT devices, as it allows for |
| 39 | streaming large DAGs without the need to store all previously encountered |
| 40 | blocks in memory. |
| 41 | |
| 42 | #### `ipfs name publish` now supports V2 only IPNS records |
| 43 | |
| 44 | When publishing an IPNS record, you are now able to create v2 only records |
| 45 | by passing `--v1compat=false`. By default, we still create V1+V2 records, such |
| 46 | that there is the highest chance of backwards compatibility. The goal is to move |
| 47 | to V2 only in the future. |
| 48 | |
| 49 | For more details, see [IPIP-428](https://specs.ipfs.tech/ipips/ipip-0428/) |
| 50 | and the updated [IPNS Record Verification](https://specs.ipfs.tech/ipns/ipns-record/#record-verification) logic. |
| 51 | |
| 52 | #### IPNS name resolution has been fixed |
| 53 | |
| 54 | IPNS name resolution had a regression where if IPNS over PubSub was enabled, but the name was not also available via IPNS over PubSub it would take 1 minute to for the lookup to complete (if the record was not yet cached). |
| 55 | |
| 56 | This has been fixed and as before will give the best record from either the DHT subsystem or IPNS over PubSub, whichever comes back first. |
| 57 | |
| 58 | For details see [#9927](https://github.com/ipfs/kubo/issues/9927) and [#10020](https://github.com/ipfs/kubo/pull/10020). |
| 59 | |
| 60 | # go-libp2p v0.29.0 update with smart dialing |
| 61 | |
| 62 | We updated from [go-libp2p](https://github.com/libp2p/go-libp2p) [v0.27.7](https://github.com/libp2p/go-libp2p/releases/tag/v0.27.7) to [v0.29.0](https://github.com/libp2p/go-libp2p/releases/tag/v0.29.0). This release includes smart dialing, which is a prioritization algorithm that will try to rank addresses and protocols rather than attempting all options in parallel. Anecdotally, we have observed [Kubo nodes make 30% less dials](https://github.com/libp2p/go-libp2p/issues/2326#issuecomment-1644332863) with no to low latency impact. |
| 63 | |
| 64 | This includes a breaking change to `ipfs id` and some of the `ipfs swarm` commands. We no longer report `ProtocolVersion`. This used to be hardcoded as `ipfs/0.1.0` and sent to other peers but was not providing any distinguishing value. See [libp2p/go-libp2p#2294](https://github.com/libp2p/go-libp2p/issues/2294) for more information. |
| 65 | |
| 66 | ### 📝 Changelog |
| 67 | |
| 68 | <details><summary>Full Changelog</summary> |
| 69 | |
| 70 | - github.com/ipfs/kubo: |
| 71 | - chore: change version to v0.22.0 |
| 72 | - chore(misc/README.md): trim duplicated content |
| 73 | - Merge branch 'release-v0.21' back into master |
| 74 | - docs(readme): unofficial packages badge |
| 75 | - chore: remove sharness tests ported to conformance testing (#9999) ([ipfs/kubo#9999](https://github.com/ipfs/kubo/pull/9999)) |
| 76 | - ci: switch from testing against js-ipfs to helia (#10042) ([ipfs/kubo#10042](https://github.com/ipfs/kubo/pull/10042)) |
| 77 | - chore: merge release back into master |
| 78 | - chore: change orbitdb to haydenyoung EARLY_TESTERS |
| 79 | - Fix usage numbers |
| 80 | - chore: update early testers list (#9218) ([ipfs/kubo#9218](https://github.com/ipfs/kubo/pull/9218)) |
| 81 | - docs: changelog v0.21 fixes (#10037) ([ipfs/kubo#10037](https://github.com/ipfs/kubo/pull/10037)) |
| 82 | - refactor(ci): simplify Dockerfile and add docker image testing (#10021) ([ipfs/kubo#10021](https://github.com/ipfs/kubo/pull/10021)) |
| 83 | - chore: update version |
| 84 | - fix(relay): apply user provider options |
| 85 | - libp2p: stop reporting ProtocolVersion |
| 86 | - chore: update go-libp2p to v0.29.0 |
| 87 | - chore: update go-libp2p to v0.28.1 |
| 88 | - fix: mark all routers DoNotWaitForSearchValue (#10020) ([ipfs/kubo#10020](https://github.com/ipfs/kubo/pull/10020)) |
| 89 | - feat(gateway): support for ipip-412 parameters |
| 90 | - docs(commands): explain that swarm connect can reuse existing connections or known addresses (#10015) ([ipfs/kubo#10015](https://github.com/ipfs/kubo/pull/10015)) |
| 91 | - docs: add Brave to RELEASE_ISSUE_TEMPLATE.md (#10012) ([ipfs/kubo#10012](https://github.com/ipfs/kubo/pull/10012)) |
| 92 | - feat: webui@4.0.2 |
| 93 | - ([ipfs/kubo#10008](https://github.com/ipfs/kubo/pull/10008)) |
| 94 | - docs: skip check before prepare branch in RELEASE_ISSUE_TEMPLATE.md |
| 95 | - docs: update RELEASE_ISSUE_TEMPLATE.md with a warning about npm publish |
| 96 | - docs: update refs to kuboreleaser in RELEASE_ISSUE_TEMPLATE.md |
| 97 | - docs: Gateway.HTTPHeaders |
| 98 | - refactor: replace boxo/ipld/car by ipld/go-car |
| 99 | - chore: bump to boxo master |
| 100 | - fix: correctly handle migration of configs |
| 101 | - fix(gateway): include CORS on subdomain redirects (#9994) ([ipfs/kubo#9994](https://github.com/ipfs/kubo/pull/9994)) |
| 102 | - fix: docker repository initialization race condition |
| 103 | - feat(ipns): records with V2-only signatures (#9932) ([ipfs/kubo#9932](https://github.com/ipfs/kubo/pull/9932)) |
| 104 | - cmds/dag/import: pin roots by default (#9966) ([ipfs/kubo#9966](https://github.com/ipfs/kubo/pull/9966)) |
| 105 | - docs: fix 0.21 changelog |
| 106 | - feat!: dag import - don't pin roots by default (#9926) ([ipfs/kubo#9926](https://github.com/ipfs/kubo/pull/9926)) |
| 107 | - fix(cmd): useful errors in dag import (#9945) ([ipfs/kubo#9945](https://github.com/ipfs/kubo/pull/9945)) |
| 108 | - feat: webui@4.0.1 (#9940) ([ipfs/kubo#9940](https://github.com/ipfs/kubo/pull/9940)) |
| 109 | - chore(docs): typo http→https |
| 110 | - fix: more stable prometheus test (#9944) ([ipfs/kubo#9944](https://github.com/ipfs/kubo/pull/9944)) |
| 111 | - ([ipfs/kubo#9937](https://github.com/ipfs/kubo/pull/9937)) |
| 112 | - github.com/ipfs/boxo (v0.10.3 -> v0.11.0): |
| 113 | - Release v0.11.0 ([ipfs/boxo#417](https://github.com/ipfs/boxo/pull/417)) |
| 114 | - github.com/ipfs/go-bitswap (null -> v0.11.0): |
| 115 | - chore: release v0.11.0 |
| 116 | - chore: release v0.10.2 |
| 117 | - fix: create a copy of the protocol slice in network.processSettings |
| 118 | - chore: release v0.10.1 |
| 119 | - fix: incorrect type in the WithTracer polyfill option |
| 120 | - chore: fix incorrect log message when a bad option is passed |
| 121 | - chore: release v0.10.0 |
| 122 | - chore: update go-libp2p v0.22.0 |
| 123 | - chore: release v0.9.0 |
| 124 | - feat: split client and server ([ipfs/go-bitswap#570](https://github.com/ipfs/go-bitswap/pull/570)) |
| 125 | - chore: remove goprocess from blockstoremanager |
| 126 | - Don't add blocks to the datastore ([ipfs/go-bitswap#571](https://github.com/ipfs/go-bitswap/pull/571)) |
| 127 | - Remove dependency on travis package from go-libp2p-testing ([ipfs/go-bitswap#569](https://github.com/ipfs/go-bitswap/pull/569)) |
| 128 | - feat: add basic tracing (#562) ([ipfs/go-bitswap#562](https://github.com/ipfs/go-bitswap/pull/562)) |
| 129 | - chore: release v0.7.0 (#566) ([ipfs/go-bitswap#566](https://github.com/ipfs/go-bitswap/pull/566)) |
| 130 | - feat: coalesce and queue connection event handling (#565) ([ipfs/go-bitswap#565](https://github.com/ipfs/go-bitswap/pull/565)) |
| 131 | - github.com/ipfs/go-merkledag (v0.10.0 -> v0.11.0): |
| 132 | - chore: update v0.11.0 (#106) ([ipfs/go-merkledag#106](https://github.com/ipfs/go-merkledag/pull/106)) |
| 133 | - update merkeldag to use the explicit decoder registry (#104) ([ipfs/go-merkledag#104](https://github.com/ipfs/go-merkledag/pull/104)) |
| 134 | - Update status in README.md and added CODEOWNERS (#101) ([ipfs/go-merkledag#101](https://github.com/ipfs/go-merkledag/pull/101)) |
| 135 | - github.com/ipld/go-car/v2 (v2.9.1-0.20230325062757-fff0e4397a3d -> v2.10.2-0.20230622090957-499d0c909d33): |
| 136 | - feat: add inverse and version to filter cmd ([ipld/go-car#457](https://github.com/ipld/go-car/pull/457)) |
| 137 | - v0.6.1 bump |
| 138 | - chore: update usage of merkledag by go-car (#437) ([ipld/go-car#437](https://github.com/ipld/go-car/pull/437)) |
| 139 | - feat(cmd/car): add '--no-wrap' option to 'create' command ([ipld/go-car#432](https://github.com/ipld/go-car/pull/432)) |
| 140 | - fix: remove github.com/ipfs/go-ipfs-blockstore dependency |
| 141 | - feat: expose index for StorageCar |
| 142 | - perf: reduce NewCarReader allocations |
| 143 | - fix(deps): update deps for cmd (use master go-car and go-car/v2 for now) |
| 144 | - fix: new error strings from go-cid |
| 145 | - fix: tests should match stderr for verbose output |
| 146 | - fix: reading from stdin should broadcast EOF to block loaders |
| 147 | - refactor insertion index to be publicly accessible ([ipld/go-car#408](https://github.com/ipld/go-car/pull/408)) |
| 148 | - github.com/libp2p/go-libp2p (v0.27.9 -> v0.29.2): |
| 149 | - release v0.29.2 |
| 150 | - release v0.29.1 |
| 151 | - swarm: don't open new streams over transient connections (#2450) ([libp2p/go-libp2p#2450](https://github.com/libp2p/go-libp2p/pull/2450)) |
| 152 | - core/crypto: restrict RSA keys to <= 8192 bits (#2454) ([libp2p/go-libp2p#2454](https://github.com/libp2p/go-libp2p/pull/2454)) |
| 153 | - Release version v0.29.0 (#2431) ([libp2p/go-libp2p#2431](https://github.com/libp2p/go-libp2p/pull/2431)) |
| 154 | - webtransport: reject listening on a multiaddr with a certhash (#2426) ([libp2p/go-libp2p#2426](https://github.com/libp2p/go-libp2p/pull/2426)) |
| 155 | - swarm: deprecate libp2p.DialRanker option (#2430) ([libp2p/go-libp2p#2430](https://github.com/libp2p/go-libp2p/pull/2430)) |
| 156 | - quic: Update to quic-go v0.36.2 (#2424) ([libp2p/go-libp2p#2424](https://github.com/libp2p/go-libp2p/pull/2424)) |
| 157 | - autonat: fix typo in WithSchedule option comment (#2425) ([libp2p/go-libp2p#2425](https://github.com/libp2p/go-libp2p/pull/2425)) |
| 158 | - identify: filter nat64 well-known prefix ipv6 addresses (#2392) ([libp2p/go-libp2p#2392](https://github.com/libp2p/go-libp2p/pull/2392)) |
| 159 | - update go-multiaddr to v0.10.1, use Unique function from there (#2407) ([libp2p/go-libp2p#2407](https://github.com/libp2p/go-libp2p/pull/2407)) |
| 160 | - swarm: enable smart dialing by default (#2420) ([libp2p/go-libp2p#2420](https://github.com/libp2p/go-libp2p/pull/2420)) |
| 161 | - transport integration tests: make TestMoreStreamsThanOurLimits less flaky (#2410) ([libp2p/go-libp2p#2410](https://github.com/libp2p/go-libp2p/pull/2410)) |
| 162 | - holepunch: skip racy TestDirectDialWorks (#2419) ([libp2p/go-libp2p#2419](https://github.com/libp2p/go-libp2p/pull/2419)) |
| 163 | - swarm: change relay dial delay to 500ms (#2421) ([libp2p/go-libp2p#2421](https://github.com/libp2p/go-libp2p/pull/2421)) |
| 164 | - identify: disable racy TestLargeIdentifyMessage with race detector (#2401) ([libp2p/go-libp2p#2401](https://github.com/libp2p/go-libp2p/pull/2401)) |
| 165 | - swarm: make black hole detection configurable (#2403) ([libp2p/go-libp2p#2403](https://github.com/libp2p/go-libp2p/pull/2403)) |
| 166 | - net/mock: support ConnectionGater in MockNet (#2297) ([libp2p/go-libp2p#2297](https://github.com/libp2p/go-libp2p/pull/2297)) |
| 167 | - docs: Add a Github workflow for checking dead links (#2406) ([libp2p/go-libp2p#2406](https://github.com/libp2p/go-libp2p/pull/2406)) |
| 168 | - rcmgr: enable metrics by default (#2389) (#2409) ([libp2p/go-libp2p#2409](https://github.com/libp2p/go-libp2p/pull/2409)) |
| 169 | - chore: remove outdated info in README and link to libp2p-implementers slack (#2405) ([libp2p/go-libp2p#2405](https://github.com/libp2p/go-libp2p/pull/2405)) |
| 170 | - metrics: deduplicate code in examples (#2404) ([libp2p/go-libp2p#2404](https://github.com/libp2p/go-libp2p/pull/2404)) |
| 171 | - transport tests: remove mplex tests (#2402) ([libp2p/go-libp2p#2402](https://github.com/libp2p/go-libp2p/pull/2402)) |
| 172 | - swarm: implement Happy Eyeballs ranking (#2365) ([libp2p/go-libp2p#2365](https://github.com/libp2p/go-libp2p/pull/2365)) |
| 173 | - docs: fix some comments (#2391) ([libp2p/go-libp2p#2391](https://github.com/libp2p/go-libp2p/pull/2391)) |
| 174 | - metrics: provide separate docker-compose files for OSX and Linux (#2397) ([libp2p/go-libp2p#2397](https://github.com/libp2p/go-libp2p/pull/2397)) |
| 175 | - identify: use zero-alloc slice sorting function (#2396) ([libp2p/go-libp2p#2396](https://github.com/libp2p/go-libp2p/pull/2396)) |
| 176 | - rcmgr: move StatsTraceReporter to rcmgr package (#2388) ([libp2p/go-libp2p#2388](https://github.com/libp2p/go-libp2p/pull/2388)) |
| 177 | - swarm: implement blackhole detection (#2320) ([libp2p/go-libp2p#2320](https://github.com/libp2p/go-libp2p/pull/2320)) |
| 178 | - basichost / blankhost: wrap errors (#2331) ([libp2p/go-libp2p#2331](https://github.com/libp2p/go-libp2p/pull/2331)) |
| 179 | - network: don't allocate in DedupAddrs (#2395) ([libp2p/go-libp2p#2395](https://github.com/libp2p/go-libp2p/pull/2395)) |
| 180 | - rcmgr: test snapshot defaults and that we keep consistent defaults (#2315) ([libp2p/go-libp2p#2315](https://github.com/libp2p/go-libp2p/pull/2315)) |
| 181 | - rcmgr: register prometheus metrics with the libp2p registerer (#2370) ([libp2p/go-libp2p#2370](https://github.com/libp2p/go-libp2p/pull/2370)) |
| 182 | - metrics: make it possible to spin up Grafana using docker-compose (#2383) ([libp2p/go-libp2p#2383](https://github.com/libp2p/go-libp2p/pull/2383)) |
| 183 | - identify: set stream deadlines for Identify and Identify Push streams (#2382) ([libp2p/go-libp2p#2382](https://github.com/libp2p/go-libp2p/pull/2382)) |
| 184 | - fix: in the swarm move Connectedness emit after releasing conns (#2373) ([libp2p/go-libp2p#2373](https://github.com/libp2p/go-libp2p/pull/2373)) |
| 185 | - metrics: add example for metrics and dashboard (#2232) ([libp2p/go-libp2p#2232](https://github.com/libp2p/go-libp2p/pull/2232)) |
| 186 | - dashboards: finish metrics effort (#2362) ([libp2p/go-libp2p#2362](https://github.com/libp2p/go-libp2p/pull/2362)) |
| 187 | - transport tests: many streams and lots of data (#2296) ([libp2p/go-libp2p#2296](https://github.com/libp2p/go-libp2p/pull/2296)) |
| 188 | - webtransport: close the challenge stream after the Noise handshake (#2305) ([libp2p/go-libp2p#2305](https://github.com/libp2p/go-libp2p/pull/2305)) |
| 189 | - test: document why InstantTimer is required (#2351) ([libp2p/go-libp2p#2351](https://github.com/libp2p/go-libp2p/pull/2351)) |
| 190 | - rcmgr: fix link to dashboards in README (#2363) ([libp2p/go-libp2p#2363](https://github.com/libp2p/go-libp2p/pull/2363)) |
| 191 | - docs: fix some comments errors (#2356) ([libp2p/go-libp2p#2356](https://github.com/libp2p/go-libp2p/pull/2356)) |
| 192 | - release v0.28.0 (#2344) ([libp2p/go-libp2p#2344](https://github.com/libp2p/go-libp2p/pull/2344)) |
| 193 | - nat: add HasDiscoveredNAT method for checking NAT environments (#2358) ([libp2p/go-libp2p#2358](https://github.com/libp2p/go-libp2p/pull/2358)) |
| 194 | - swarm: fix stale DialBackoff comment (#2353) ([libp2p/go-libp2p#2353](https://github.com/libp2p/go-libp2p/pull/2353)) |
| 195 | - swarm: use RLock for DialBackoff reads (#2354) ([libp2p/go-libp2p#2354](https://github.com/libp2p/go-libp2p/pull/2354)) |
| 196 | - Clear stream scope if we error (#2345) ([libp2p/go-libp2p#2345](https://github.com/libp2p/go-libp2p/pull/2345)) |
| 197 | - changelog: improve description of smart dialing (#2342) ([libp2p/go-libp2p#2342](https://github.com/libp2p/go-libp2p/pull/2342)) |
| 198 | - swarm: make smart-dialing opt in (#2340) ([libp2p/go-libp2p#2340](https://github.com/libp2p/go-libp2p/pull/2340)) |
| 199 | - swarm: cleanup address filtering logic (#2333) ([libp2p/go-libp2p#2333](https://github.com/libp2p/go-libp2p/pull/2333)) |
| 200 | - chore: add 0.28.0 changelog (#2335) ([libp2p/go-libp2p#2335](https://github.com/libp2p/go-libp2p/pull/2335)) |
| 201 | - swarm: improve documentation for the DefaultDialRanker (#2336) ([libp2p/go-libp2p#2336](https://github.com/libp2p/go-libp2p/pull/2336)) |
| 202 | - holepunch: add metrics (#2246) ([libp2p/go-libp2p#2246](https://github.com/libp2p/go-libp2p/pull/2246)) |
| 203 | - swarm: implement smart dialing logic (#2260) ([libp2p/go-libp2p#2260](https://github.com/libp2p/go-libp2p/pull/2260)) |
| 204 | - revert "feat:add contexts to all peerstore methods (#2312)" (#2328) ([libp2p/go-libp2p#2328](https://github.com/libp2p/go-libp2p/pull/2328)) |
| 205 | - identify: don't save signed peer records (#2325) ([libp2p/go-libp2p#2325](https://github.com/libp2p/go-libp2p/pull/2325)) |
| 206 | - feat:add contexts to all peerstore methods (#2312) ([libp2p/go-libp2p#2312](https://github.com/libp2p/go-libp2p/pull/2312)) |
| 207 | - swarm: Dedup addresses to dial (#2322) ([libp2p/go-libp2p#2322](https://github.com/libp2p/go-libp2p/pull/2322)) |
| 208 | - identify: filter received addresses based on the node's remote address (#2300) ([libp2p/go-libp2p#2300](https://github.com/libp2p/go-libp2p/pull/2300)) |
| 209 | - update go-nat to v0.2.0, use context on AddMapping and RemoveMapping (#2319) ([libp2p/go-libp2p#2319](https://github.com/libp2p/go-libp2p/pull/2319)) |
| 210 | - transport integration tests: add tests for resource manager (#2285) ([libp2p/go-libp2p#2285](https://github.com/libp2p/go-libp2p/pull/2285)) |
| 211 | - identify: reject signed peer records on peer ID mismatch |
| 212 | - identify: don't send default protocol version (#2303) ([libp2p/go-libp2p#2303](https://github.com/libp2p/go-libp2p/pull/2303)) |
| 213 | - metrics: add instance filter to all dashboards (#2301) ([libp2p/go-libp2p#2301](https://github.com/libp2p/go-libp2p/pull/2301)) |
| 214 | - identify: avoid spuriously triggering pushes (#2299) ([libp2p/go-libp2p#2299](https://github.com/libp2p/go-libp2p/pull/2299)) |
| 215 | - net/mock: mimic Swarm's event and notification behavior in MockNet (#2287) ([libp2p/go-libp2p#2287](https://github.com/libp2p/go-libp2p/pull/2287)) |
| 216 | - examples: fix flaky multipro TestMain (#2289) ([libp2p/go-libp2p#2289](https://github.com/libp2p/go-libp2p/pull/2289)) |
| 217 | - swarm: change maps with multiaddress keys to use strings (#2284) ([libp2p/go-libp2p#2284](https://github.com/libp2p/go-libp2p/pull/2284)) |
| 218 | - tests: add comprehensive end-to-end tests for connection gating (#2200) ([libp2p/go-libp2p#2200](https://github.com/libp2p/go-libp2p/pull/2200)) |
| 219 | - swarm: log unexpected listener errors (#2277) ([libp2p/go-libp2p#2277](https://github.com/libp2p/go-libp2p/pull/2277)) |
| 220 | - websocket: switch back to the gorilla library (#2280) ([libp2p/go-libp2p#2280](https://github.com/libp2p/go-libp2p/pull/2280)) |
| 221 | - quic: prioritise listen connections for reuse (#2262) ([libp2p/go-libp2p#2262](https://github.com/libp2p/go-libp2p/pull/2262)) |
| 222 | - quic virtual listener: don't panic when quic-go's accept call errors (#2276) ([libp2p/go-libp2p#2276](https://github.com/libp2p/go-libp2p/pull/2276)) |
| 223 | - tests: add docks for debugging flaky tests (#2216) ([libp2p/go-libp2p#2216](https://github.com/libp2p/go-libp2p/pull/2216)) |
| 224 | - webtransport: only add cert hashes if we already started listening (#2271) ([libp2p/go-libp2p#2271](https://github.com/libp2p/go-libp2p/pull/2271)) |
| 225 | - Revert "webtransport: initialize the certmanager when creating the transport (#2268)" (#2273) ([libp2p/go-libp2p#2273](https://github.com/libp2p/go-libp2p/pull/2273)) |
| 226 | - webtransport: initialize the certmanager when creating the transport (#2268) ([libp2p/go-libp2p#2268](https://github.com/libp2p/go-libp2p/pull/2268)) |
| 227 | - move NAT mapping logic out of the host, add tests for NAT handling ([libp2p/go-libp2p#2248](https://github.com/libp2p/go-libp2p/pull/2248)) |
| 228 | - githooks: add a githook to check that the test-plans go.mod is tidied (#2256) ([libp2p/go-libp2p#2256](https://github.com/libp2p/go-libp2p/pull/2256)) |
| 229 | - quic: fix race condition when generating random holepunch packet (#2263) ([libp2p/go-libp2p#2263](https://github.com/libp2p/go-libp2p/pull/2263)) |
| 230 | - swarm: remove unused variable in addrDial (#2257) ([libp2p/go-libp2p#2257](https://github.com/libp2p/go-libp2p/pull/2257)) |
| 231 | - github.com/libp2p/go-libp2p-routing-helpers (v0.7.0 -> v0.7.1): |
| 232 | - chore: release v0.7.1 |
| 233 | - fix: for comparallel never return nil channel for FindProvidersAsync |
| 234 | - chore: rename DoNotWaitForStreamingResponses to DoNotWaitForSearchValue |
| 235 | - feat: add DoNotWaitForStreamingResponses to ParallelRouter |
| 236 | - chore: cleanup error handling in compparallel |
| 237 | - fix: correctly handle errors in compparallel |
| 238 | - fix: make the ProvideMany docs clearer |
| 239 | - perf: remove goroutine that just waits before closing with a synchronous waitgroup |
| 240 | - github.com/libp2p/go-nat (v0.1.0 -> v0.2.0): |
| 241 | - release v0.2.0 (#30) ([libp2p/go-nat#30](https://github.com/libp2p/go-nat/pull/30)) |
| 242 | - update deps, use contexts on UPnP functions (#29) ([libp2p/go-nat#29](https://github.com/libp2p/go-nat/pull/29)) |
| 243 | - sync: update CI config files (#28) ([libp2p/go-nat#28](https://github.com/libp2p/go-nat/pull/28)) |
| 244 | - sync: update CI config files (#24) ([libp2p/go-nat#24](https://github.com/libp2p/go-nat/pull/24)) |
| 245 | - github.com/libp2p/go-yamux/v4 (v4.0.0 -> v4.0.1): |
| 246 | - Release v4.0.1 ([libp2p/go-yamux#106](https://github.com/libp2p/go-yamux/pull/106)) |
| 247 | - fix: sendWindowUpdate respects deadlines (#105) ([libp2p/go-yamux#105](https://github.com/libp2p/go-yamux/pull/105)) |
| 248 | - github.com/multiformats/go-multiaddr (v0.9.0 -> v0.10.1): |
| 249 | - release v0.10.1 (#206) ([multiformats/go-multiaddr#206](https://github.com/multiformats/go-multiaddr/pull/206)) |
| 250 | - fix nat64 well-known prefix check (#205) ([multiformats/go-multiaddr#205](https://github.com/multiformats/go-multiaddr/pull/205)) |
| 251 | - release v0.10.0 (#204) ([multiformats/go-multiaddr#204](https://github.com/multiformats/go-multiaddr/pull/204)) |
| 252 | - add a Unique function (#203) ([multiformats/go-multiaddr#203](https://github.com/multiformats/go-multiaddr/pull/203)) |
| 253 | - manet: add function to test if address is NAT64 IPv4 converted IPv6 address (#202) ([multiformats/go-multiaddr#202](https://github.com/multiformats/go-multiaddr/pull/202)) |
| 254 | - sync: update CI config files (#190) ([multiformats/go-multiaddr#190](https://github.com/multiformats/go-multiaddr/pull/190)) |
| 255 | |
| 256 | </details> |
| 257 | |
| 258 | ### 👨👩👧👦 Contributors |
| 259 | |
| 260 | | Contributor | Commits | Lines ± | Files Changed | |
| 261 | |-------------|---------|---------|---------------| |
| 262 | | Henrique Dias | 14 | +3735/-17889 | 185 | |
| 263 | | Sukun | 28 | +5910/-957 | 100 | |
| 264 | | Jorropo | 40 | +2913/-2112 | 205 | |
| 265 | | Marten Seemann | 41 | +2926/-1833 | 163 | |
| 266 | | Marco Munizaga | 20 | +1559/-586 | 81 | |
| 267 | | Prem Chaitanya Prathi | 1 | +757/-740 | 61 | |
| 268 | | Laurent Senta | 2 | +69/-1094 | 32 | |
| 269 | | Marcin Rataj | 11 | +339/-198 | 22 | |
| 270 | | Steven Allen | 2 | +313/-161 | 9 | |
| 271 | | Will | 2 | +118/-211 | 9 | |
| 272 | | Adin Schmahmann | 4 | +275/-41 | 8 | |
| 273 | | Michael Muré | 1 | +113/-164 | 6 | |
| 274 | | Rod Vagg | 8 | +228/-46 | 28 | |
| 275 | | Gus Eggert | 5 | +156/-93 | 21 | |
| 276 | | Adrian Sutton | 1 | +190/-17 | 4 | |
| 277 | | Hlib Kanunnikov | 3 | +139/-40 | 9 | |
| 278 | | VM | 2 | +80/-79 | 49 | |
| 279 | | UnkwUsr | 1 | +0/-124 | 1 | |
| 280 | | Piotr Galar | 4 | +51/-59 | 5 | |
| 281 | | web3-bot | 3 | +22/-46 | 4 | |
| 282 | | Will Scott | 2 | +29/-28 | 6 | |
| 283 | | Prithvi Shahi | 2 | +40/-7 | 2 | |
| 284 | | Brad Fitzpatrick | 1 | +42/-2 | 2 | |
| 285 | | Steve Loeppky | 1 | +6/-23 | 2 | |
| 286 | | Sahib Yar | 1 | +4/-4 | 3 | |
| 287 | | Russell Dempsey | 2 | +4/-2 | 2 | |
| 288 | | Mohamed MHAMDI | 1 | +3/-3 | 1 | |
| 289 | | Bryan White | 1 | +2/-2 | 1 | |
| 290 | | Dennis Trautwein | 1 | +1/-1 | 1 | |
| 291 | | Antonio Navarro Perez | 1 | +0/-1 | 1 | |
| 292 |