| 1 | # Kubo changelog v0.23 |
| 2 | |
| 3 | - [v0.23.0](#v0230) |
| 4 | |
| 5 | ## v0.23.0 |
| 6 | |
| 7 | - [Overview](#overview) |
| 8 | - [🔦 Highlights](#-highlights) |
| 9 | - [Mplex deprecation](#mplex-deprecation) |
| 10 | - [Gateway: meaningful CAR responses on Not Found errors](#gateway-meaningful-car-responses-on-not-found-errors) |
| 11 | - [Gateway: added `Gateway.DisableHTMLErrors` configuration option](#gateway-added-gatewaydisablehtmlerrors-configuration-option) |
| 12 | - [Binary characters in file names: no longer works with old clients and new Kubo servers](#binary-characters-in-file-names-no-longer-works-with-old-clients-and-new-kubo-servers) |
| 13 | - [Self-hosting `/routing/v1` endpoint for delegated routing needs](#self-hosting-routingv1-endpoint-for-delegated-routing-needs) |
| 14 | - [Trustless Gateway Over Libp2p Experiment](#trustless-gateway-over-libp2p-experiment) |
| 15 | - [Removal of `/quic` (Draft 29) support](#removal-of-quic-draft-29-support) |
| 16 | - [Better Caching of multiaddresses for providers in DHT servers](#better-caching-of-multiaddresses-for-providers-in-dht-servers) |
| 17 | - [Fixed FUSE multiblock structures](#fixed-fuse-multiblock-structures) |
| 18 | - [📝 Changelog](#-changelog) |
| 19 | - [👨👩👧👦 Contributors](#-contributors) |
| 20 | |
| 21 | ### Overview |
| 22 | |
| 23 | ### 🔦 Highlights |
| 24 | |
| 25 | #### Mplex deprecation |
| 26 | |
| 27 | Mplex is being deprecated, this is because it is unreliable and |
| 28 | randomly drop streams when sending data *too fast*. |
| 29 | |
| 30 | New pieces of code rely on backpressure, that means the stream will dynamically |
| 31 | slow down the sending rate if data is getting backed up. |
| 32 | Backpressure is provided by **Yamux** and **QUIC**. |
| 33 | |
| 34 | In case you need compatibility with older implementations that do not ship with |
| 35 | Yamux (like default's JS-IPFS) you can turned it back ON in the config with: |
| 36 | ```console |
| 37 | $ ipfs config --json Swarm.Transports.Multiplexers.Mplex 200 |
| 38 | ``` |
| 39 | |
| 40 | We will completely remove Mplex in v0.24 as it makes protocols very bad to implement, |
| 41 | if you are in this situation you need to add yamux support to your other implementation. |
| 42 | |
| 43 | #### Gateway: meaningful CAR responses on Not Found errors |
| 44 | |
| 45 | When requesting a CAR from the gateway, the root of the CAR might no longer be |
| 46 | meaningful. By default, the CAR root will be the last resolvable segment of the |
| 47 | path. However, in situations where the path cannot be resolved, such as when |
| 48 | the path does not exist, a CAR will be sent with a root of `bafkqaaa` (empty CID). |
| 49 | |
| 50 | This CAR will contain all blocks necessary to validate that the path does not |
| 51 | exist without having to trust the gateway. |
| 52 | |
| 53 | #### Gateway: added `Gateway.DisableHTMLErrors` configuration option |
| 54 | |
| 55 | The `Gateway.DisableHTMLErrors` configuration option forces errors to be |
| 56 | displayed in browsers as plain text (`text/plain`) rather than HTML error |
| 57 | pages. It's especially beneficial for whitelabel or middleware deployments that |
| 58 | wish to avoid IPFS branding and links on error pages in browsers. |
| 59 | |
| 60 | #### Binary characters in file names: no longer works with old clients and new Kubo servers |
| 61 | |
| 62 | In this version, we updated Kubo to support Go 1.20+. In Go 1.20, a regression |
| 63 | regarding multipart headers was [introduced](https://github.com/golang/go/issues/60674). |
| 64 | This only affects `ipfs add` when a file name has binary characters in its name. |
| 65 | As a consequence, we had to update the encoding of the file name headers. This is |
| 66 | the compatibility table: |
| 67 | |
| 68 | | | New Client | Old Client | |
| 69 | |------------|------------|-------------| |
| 70 | | New Server | ✅ | 🟡* | |
| 71 | | Old Server | ✅ | ✅ | |
| 72 | |
| 73 | *Old clients can only send Unicode file paths to the server. |
| 74 | |
| 75 | #### Self-hosting `/routing/v1` endpoint for delegated routing needs |
| 76 | |
| 77 | The `Routing` system configured in Kubo can be now exposed on the gateway port as a standard |
| 78 | HTTP [Routing V1](https://specs.ipfs.tech/routing/http-routing-v1/) API endpoint. This allows |
| 79 | self-hosting and experimentation with custom delegated routers. This is disabled by default, |
| 80 | but can be enabled by setting [`Gateway.ExposeRoutingAPI`](https://github.com/ipfs/kubo/blob/master/docs/config.md#gatewayexposeroutingapi) to `true` . |
| 81 | |
| 82 | #### Trustless Gateway Over Libp2p Experiment |
| 83 | |
| 84 | In this update, we've introduced an experimental opt-in feature allowing users to |
| 85 | serve a subset of [Trustless Gateway](https://specs.ipfs.tech/http-gateways/trustless-gateway/) responses, |
| 86 | such as blocks and CARs, over libp2p. This enhancement leverages the ongoing |
| 87 | [`/http/1.1` specification work in libp2p](https://github.com/libp2p/specs/pull/508) |
| 88 | to make it easier to support HTTP semantics over libp2p streams. |
| 89 | |
| 90 | This development means that if users wish to utilize the Trustless Gateway API |
| 91 | for data transport, they can now do so even in scenarios where standard HTTP |
| 92 | might be problematic, such as when the endpoint is behind a firewall or when |
| 93 | attempting to serve data to a browser without a CA certificate. |
| 94 | |
| 95 | See [HTTP Gateway over Libp2p](https://github.com/ipfs/kubo/blob/master/docs/experimental-features.md#http-gateway-over-libp2p) for details about this experiment. |
| 96 | |
| 97 | #### Removal of `/quic` (Draft 29) support |
| 98 | |
| 99 | Kubo no longer supports QUIC Draft 29. This means that older nodes aren't able to connect |
| 100 | to newer nodes using QUIC Draft 29. However, they are still able to connect through any other |
| 101 | transport that both nodes talk (such as QUIC RFC 9000, or TCP). QUIC Draft 29 was a preliminary implementation of QUIC before |
| 102 | the official RFC 9000 was published, and it has now been dropped by [`go-libp2p`](https://github.com/libp2p/go-libp2p/releases/tag/v0.30.0) |
| 103 | and therefore Kubo. |
| 104 | |
| 105 | In [Kubo 0.18](https://github.com/ipfs/kubo/releases/tag/v0.18.0), we shipped a migration |
| 106 | to have listeners for both `/quic` (Draft 29) and `/quic-v1` (RFC 9000). Similarly, in this |
| 107 | version we are shipping a migration to remove the current `/quic` addresses, maintaining |
| 108 | the `/quic-v1` addresses only. For more background information, check [issue #9496](https://github.com/ipfs/kubo/issues/9496). |
| 109 | |
| 110 | #### Better Caching of multiaddresses for providers in DHT servers |
| 111 | |
| 112 | Thanks to [probelab.io's RFM17.1](https://github.com/plprobelab/network-measurements/blob/master/results/rfm17.1-sharing-prs-with-multiaddresses.md) DHT servers will [now cache the addresses of content hosts for the lifetime of the provider record](https://github.com/libp2p/go-libp2p-kad-dht/commit/777160f164b8c187c534debd293157031e9f3a02). |
| 113 | |
| 114 | This means clients who resolve content from these servers get a responses which include both peer id and multiaddresses. |
| 115 | In most cases this enables skipping a second query which resolves the peer id to multiaddresses for stable enough peers. |
| 116 | |
| 117 | This will improve content fetching lantency in the network overtime as servers updates. |
| 118 | |
| 119 | #### Fixed FUSE multiblock structures |
| 120 | |
| 121 | `ls`ing directories and reading dag-pb files on a fuse volume have been fixed. [#9044](https://github.com/ipfs/kubo/issues/9044) |
| 122 | Thx a lot @bmwiedemann for debugging this issue. |
| 123 | |
| 124 | ### 📝 Changelog |
| 125 | |
| 126 | <details><summary>Full Changelog</summary> |
| 127 | |
| 128 | - github.com/ipfs/kubo: |
| 129 | - fix: align systemd unit file with default IPFS installation path (#10163) ([ipfs/kubo#10163](https://github.com/ipfs/kubo/pull/10163)) |
| 130 | - docs: capitalize headers for consistency |
| 131 | - Merge commit '695bf66674931a138862b6fa2cb0b16dc2f6ddd8' into release-v0.23.0 |
| 132 | - chore: update version |
| 133 | - changelog: generalize fuse 9044's entry |
| 134 | - changelog: update fuse 9044's entry |
| 135 | - Update go-unixfsnode to 1.8.0 to fix FUSE |
| 136 | - docs(readme): header improvements (#10144) ([ipfs/kubo#10144](https://github.com/ipfs/kubo/pull/10144)) |
| 137 | - fix(docker): allow nofuse builds for MacOS (#10135) ([ipfs/kubo#10135](https://github.com/ipfs/kubo/pull/10135)) |
| 138 | - docs: fix typos |
| 139 | - docs: s/ipfs dht/amino dht/ |
| 140 | - changelog: mention probelab RFM17.1 dht improvement |
| 141 | - tests: remove sharness ping tests |
| 142 | - perf: make bootstrap saves O(N) |
| 143 | - chore: update go-libp2p-kad-dht |
| 144 | - chore: webui v4.1.1 (#10120) ([ipfs/kubo#10120](https://github.com/ipfs/kubo/pull/10120)) |
| 145 | - core/bootstrap: fix panic without backup bootstrap peer functions (#10029) ([ipfs/kubo#10029](https://github.com/ipfs/kubo/pull/10029)) |
| 146 | - feat: add Gateway.DisableHTMLErrors option (#10137) ([ipfs/kubo#10137](https://github.com/ipfs/kubo/pull/10137)) |
| 147 | - fix(migrations): use dweb.link (#10133) ([ipfs/kubo#10133](https://github.com/ipfs/kubo/pull/10133)) |
| 148 | - docs: add changelog info for QUIC Draft 29 (#10132) ([ipfs/kubo#10132](https://github.com/ipfs/kubo/pull/10132)) |
| 149 | - feat: add gateway to http over libp2p ([ipfs/kubo#10108](https://github.com/ipfs/kubo/pull/10108)) |
| 150 | - migration: update 14-to-15 to v1.0.1 |
| 151 | - chore: update to build with Go 1.21 |
| 152 | - refactor: stop using go-libp2p deprecated peer.ID.Pretty |
| 153 | - docs(readonly): fix typo |
| 154 | - docs(changelog): link to relevant IPIP |
| 155 | - fix: hamt traversal in ipld-explorer (webui@4.1.0) (#10025) ([ipfs/kubo#10025](https://github.com/ipfs/kubo/pull/10025)) |
| 156 | - refactor: if statement (#10105) ([ipfs/kubo#10105](https://github.com/ipfs/kubo/pull/10105)) |
| 157 | - chore: bump repo version to 15 |
| 158 | - docs: remove link to deleted #accelerated-dht-client |
| 159 | - feat(gateway): expose /routing/v1 server (opt-in) (#9877) ([ipfs/kubo#9877](https://github.com/ipfs/kubo/pull/9877)) |
| 160 | - improve error in fuse node failures |
| 161 | - chore: update boxo, go-libp2p, and internalize mplex (#10095) ([ipfs/kubo#10095](https://github.com/ipfs/kubo/pull/10095)) |
| 162 | - dockerfile: reorder copy order for better layer caching |
| 163 | - refactor: using error is instead of == (#10093) ([ipfs/kubo#10093](https://github.com/ipfs/kubo/pull/10093)) |
| 164 | - fix: use %-encoded headers in most compatible way |
| 165 | - fix: open /dev/null with read write permissions |
| 166 | - chore: bump to go 1.20 |
| 167 | - docs(readme): new logo and header |
| 168 | - docker: change to releases that follow debian's updates |
| 169 | - docker: bump debian version to bookworm |
| 170 | - chore: restore exec perms for t0116-gateway-cache.sh and fixtures (#10085) ([ipfs/kubo#10085](https://github.com/ipfs/kubo/pull/10085)) |
| 171 | - fix(gw): useful IPIP-402 CARs on not found errors (#10084) ([ipfs/kubo#10084](https://github.com/ipfs/kubo/pull/10084)) |
| 172 | - feat: add zsh completions (#10040) ([ipfs/kubo#10040](https://github.com/ipfs/kubo/pull/10040)) |
| 173 | - style: remove commented imports [skip changelog] |
| 174 | - style: gofumpt and godot [skip changelog] (#10081) ([ipfs/kubo#10081](https://github.com/ipfs/kubo/pull/10081)) |
| 175 | - chore: bump boxo for verifcid breaking changes |
| 176 | - chore: remove outdated comment (#10077) ([ipfs/kubo#10077](https://github.com/ipfs/kubo/pull/10077)) |
| 177 | - chore: remove deprecated testground plans |
| 178 | - feat: allow users to option again into mplex |
| 179 | - feat: remove Mplex |
| 180 | - docs(readme): minimal reqs (#10066) ([ipfs/kubo#10066](https://github.com/ipfs/kubo/pull/10066)) |
| 181 | - docs: add v0.23.md |
| 182 | - docs: get ready for v0.23 |
| 183 | - chore: fix link in v0.22 changelog |
| 184 | - github.com/ipfs/boxo (v0.11.0 -> v0.13.1): |
| 185 | - Release v0.13.1 ([ipfs/boxo#469](https://github.com/ipfs/boxo/pull/469)) |
| 186 | - Release v0.13.0 ([ipfs/boxo#465](https://github.com/ipfs/boxo/pull/465)) |
| 187 | - Release v0.12 ([ipfs/boxo#446](https://github.com/ipfs/boxo/pull/446)) |
| 188 | - github.com/ipfs/go-graphsync (v0.14.4 -> v0.15.1): |
| 189 | - v0.15.1 bump |
| 190 | - fix: partial revert of 1be7c1a20; make traverser process identity CIDs |
| 191 | - v0.15.0 bump |
| 192 | - chore: add identity CID parse tests |
| 193 | - fix: traverser should skip over identity CIDs |
| 194 | - fix(ipld): update ipld deps, only slurp LargeBytesNode when matching |
| 195 | - docs(version): update for v0.14.7 |
| 196 | - Handle context cancellation properly (#428) ([ipfs/go-graphsync#428](https://github.com/ipfs/go-graphsync/pull/428)) |
| 197 | - chore(version.json): update for v0.14.6 |
| 198 | - feat: MaxLinks for requests (#420) ([ipfs/go-graphsync#420](https://github.com/ipfs/go-graphsync/pull/420)) |
| 199 | - fix(responsemanager): network disconnect reliability (#425) ([ipfs/go-graphsync#425](https://github.com/ipfs/go-graphsync/pull/425)) |
| 200 | - Update version to reflect latest fixes (#424) ([ipfs/go-graphsync#424](https://github.com/ipfs/go-graphsync/pull/424)) |
| 201 | - Fix shutdown bug in #412 (#422) ([ipfs/go-graphsync#422](https://github.com/ipfs/go-graphsync/pull/422)) |
| 202 | - github.com/ipfs/go-ipfs-cmds (v0.9.0 -> v0.10.0): |
| 203 | - chore: version 0.10.0 |
| 204 | - fix: panic when calling .SetLength for writerResponseEmitter |
| 205 | - fix!: client with raw abs path option |
| 206 | - doc: clarify flag inheritance explanation |
| 207 | - ci: uci/copy-templates ([ipfs/go-ipfs-cmds#242](https://github.com/ipfs/go-ipfs-cmds/pull/242)) |
| 208 | - chore: remove dep on github.com/Kubuxu/go-os-helper |
| 209 | - github.com/ipfs/go-unixfsnode (v1.7.1 -> v1.8.1): |
| 210 | - v1.8.1 bump |
| 211 | - testutil: relax DirEntry usage for non-dag-pb |
| 212 | - v1.8.0 bump |
| 213 | - fix: add cross-impl shard test |
| 214 | - files returned from unixfsnode should be traversable back to their substrate |
| 215 | - fix: better import name |
| 216 | - chore: refactor and add tests with fixtures |
| 217 | - fix: proper tsize encoding in sharded files |
| 218 | - rel 1.7.4 |
| 219 | - Provide path for getting sizes on directory iteration ([ipfs/go-unixfsnode#60](https://github.com/ipfs/go-unixfsnode/pull/60)) |
| 220 | - tag 1.7.3 ([ipfs/go-unixfsnode#57](https://github.com/ipfs/go-unixfsnode/pull/57)) |
| 221 | - Fail to construct preload hamt shards when traversal fails ([ipfs/go-unixfsnode#55](https://github.com/ipfs/go-unixfsnode/pull/55)) |
| 222 | - fix: large files support io.SeekCurrent ([ipfs/go-unixfsnode#56](https://github.com/ipfs/go-unixfsnode/pull/56)) |
| 223 | - chore(version): update version number |
| 224 | - feat: add entity matcher w/o preload, add matcher fn for consuming bytes ([ipfs/go-unixfsnode#52](https://github.com/ipfs/go-unixfsnode/pull/52)) |
| 225 | - github.com/ipld/go-ipld-prime (v0.20.0 -> v0.21.0): |
| 226 | - v0.21.0 release |
| 227 | - fix(selectors): document ranges in slice matcher |
| 228 | - fix(selectors): update ipld/ipld submodule with latest fixtures |
| 229 | - fix(selectors): more permissive with slice "from" underflow |
| 230 | - chore: extract simpleBytes to testutil package |
| 231 | - feat(selectors): negative values for slice matcher's From and To |
| 232 | - chore: extract MultiByteNote to testutil package |
| 233 | - feat(test): add matcher/slice selector test cases |
| 234 | - feat: remove hard-error when slice matcher reaches non-string/bytes node |
| 235 | - fix: cache offsets for sequential reads |
| 236 | - feat: add inline union representation to schema parser |
| 237 | - fix: basic.NewInt returns pointer (like others) |
| 238 | - fix(bindnode): listpairs value assembly handles complex reprs |
| 239 | - fix(bindnode): listpairs repr assembler handles AssignNode |
| 240 | - fix(schema): handle parsing of "listpairs" in the DSL |
| 241 | - fix: remove _skipAbsent labels |
| 242 | - fix: make listpairs repr [[k1,v1],[k2,v2]...] |
| 243 | - feat(bindnode): support listpairs struct representation |
| 244 | - fix(windows,test): avoid "already exists" error on codegen tests for Windows |
| 245 | - Make traversal.WalkTransforming() work |
| 246 | - doc: clean up and expand on traversal pkg docs |
| 247 | - doc: add lots of notes about using the preloader and the budget |
| 248 | - doc: expand on preloader docs |
| 249 | - fix: inline initialPhase() logic for clarity |
| 250 | - feat: preload walk using phase state, call preloader once per link |
| 251 | - fix: handle Budget & SeenLinks |
| 252 | - chore: remove BufferedLoader |
| 253 | - fix: recurse preloader at block level |
| 254 | - fix: Context->PreloadContext for clarity and consistency with LinkContext |
| 255 | - fix: replace ioutil.ReadAll |
| 256 | - fix: fix tooling complaints |
| 257 | - feat: add BufferedLoader |
| 258 | - feat(traversal): allow preloading functionality |
| 259 | - fix: address dodgy test case variable capture |
| 260 | - stop using the deprecated io/ioutil package |
| 261 | - stop using the deprecated io/ioutil package |
| 262 | - stop using the deprecated io/ioutil package |
| 263 | - fix: make StartAtPath work properly for matching walks |
| 264 | - github.com/libp2p/go-libp2p (v0.29.2 -> v0.31.0): |
| 265 | - release v0.31.0 (#2543) ([libp2p/go-libp2p#2543](https://github.com/libp2p/go-libp2p/pull/2543)) |
| 266 | - dashboards: improve naming for black hole panel (#2539) ([libp2p/go-libp2p#2539](https://github.com/libp2p/go-libp2p/pull/2539)) |
| 267 | - reuseport: use DialContext instead of Dial to fail quickly (#2541) ([libp2p/go-libp2p#2541](https://github.com/libp2p/go-libp2p/pull/2541)) |
| 268 | - swarm: track dial cancellation reason (#2532) ([libp2p/go-libp2p#2532](https://github.com/libp2p/go-libp2p/pull/2532)) |
| 269 | - p2p/http: cache json wellknown mappings in the .well-known handler (#2537) ([libp2p/go-libp2p#2537](https://github.com/libp2p/go-libp2p/pull/2537)) |
| 270 | - feat: Implement HTTP spec (#2438) ([libp2p/go-libp2p#2438](https://github.com/libp2p/go-libp2p/pull/2438)) |
| 271 | - move libp2p/go-libp2p-gostream to p2p/net/gostream ([libp2p/go-libp2p#2535](https://github.com/libp2p/go-libp2p/pull/2535)) |
| 272 | - host: disable black hole detection on autonat dialer (#2529) ([libp2p/go-libp2p#2529](https://github.com/libp2p/go-libp2p/pull/2529)) |
| 273 | - identify: disable racy test when running with race detector (#2526) ([libp2p/go-libp2p#2526](https://github.com/libp2p/go-libp2p/pull/2526)) |
| 274 | - swarm: return a more meaningful error when dialing QUIC draft-29 (#2524) ([libp2p/go-libp2p#2524](https://github.com/libp2p/go-libp2p/pull/2524)) |
| 275 | - swarm: fix Unwrap for DialError, implement Unwrap for TransportError (#2437) ([libp2p/go-libp2p#2437](https://github.com/libp2p/go-libp2p/pull/2437)) |
| 276 | - swarm: return errors on filtered addresses when dialing (#2461) ([libp2p/go-libp2p#2461](https://github.com/libp2p/go-libp2p/pull/2461)) |
| 277 | - core: add ErrPeerIDMismatch error type to replace ad-hoc errors (#2451) ([libp2p/go-libp2p#2451](https://github.com/libp2p/go-libp2p/pull/2451)) |
| 278 | - update quic-go to v0.38.1 (#2506) ([libp2p/go-libp2p#2506](https://github.com/libp2p/go-libp2p/pull/2506)) |
| 279 | - quic: don't claim to be able to dial draft-29 in CanDial (#2520) ([libp2p/go-libp2p#2520](https://github.com/libp2p/go-libp2p/pull/2520)) |
| 280 | - examples: update go-libp2p to v0.30.0 (#2507) ([libp2p/go-libp2p#2507](https://github.com/libp2p/go-libp2p/pull/2507)) |
| 281 | - metrics: update dashboard names from libp2p to go-libp2p (#2512) ([libp2p/go-libp2p#2512](https://github.com/libp2p/go-libp2p/pull/2512)) |
| 282 | - chore: be more descriptive about where public dashboards come from (#2508) ([libp2p/go-libp2p#2508](https://github.com/libp2p/go-libp2p/pull/2508)) |
| 283 | - release v0.30.0 (#2505) ([libp2p/go-libp2p#2505](https://github.com/libp2p/go-libp2p/pull/2505)) |
| 284 | - transport tests: add deadline tests (#2286) ([libp2p/go-libp2p#2286](https://github.com/libp2p/go-libp2p/pull/2286)) |
| 285 | - chore: remove unused and outdated package-list.json (#2499) ([libp2p/go-libp2p#2499](https://github.com/libp2p/go-libp2p/pull/2499)) |
| 286 | - muxer: remove support for mplex (#2498) ([libp2p/go-libp2p#2498](https://github.com/libp2p/go-libp2p/pull/2498)) |
| 287 | - transport tests: refactor workers in TestMoreStreamsThanOurLimits (#2472) ([libp2p/go-libp2p#2472](https://github.com/libp2p/go-libp2p/pull/2472)) |
| 288 | - use standard library sha256 implementation for Go 1.21 (#2309) ([libp2p/go-libp2p#2309](https://github.com/libp2p/go-libp2p/pull/2309)) |
| 289 | - quic: update quic-go to v0.37.5 (#2497) ([libp2p/go-libp2p#2497](https://github.com/libp2p/go-libp2p/pull/2497)) |
| 290 | - cleanup: add continue in case of failure in the (*BasicHost).Addrs certhash loop (#2492) ([libp2p/go-libp2p#2492](https://github.com/libp2p/go-libp2p/pull/2492)) |
| 291 | - tests: add a CertHashes testcase in TestInferWebtransportAddrsFromQuic (#2495) ([libp2p/go-libp2p#2495](https://github.com/libp2p/go-libp2p/pull/2495)) |
| 292 | - basichost: use byte representation of WebTransport multiaddr as map key (#2494) ([libp2p/go-libp2p#2494](https://github.com/libp2p/go-libp2p/pull/2494)) |
| 293 | - webtransport: check for UDP multiaddr component in address matcher (#2491) ([libp2p/go-libp2p#2491](https://github.com/libp2p/go-libp2p/pull/2491)) |
| 294 | - swarm: remove unnecessary reqno for pending request tracking (#2460) ([libp2p/go-libp2p#2460](https://github.com/libp2p/go-libp2p/pull/2460)) |
| 295 | - quic: drop support for QUIC draft-29 (#2487) ([libp2p/go-libp2p#2487](https://github.com/libp2p/go-libp2p/pull/2487)) |
| 296 | - metrics: add links to public dashboards (#2486) ([libp2p/go-libp2p#2486](https://github.com/libp2p/go-libp2p/pull/2486)) |
| 297 | - swarm: remove leftover TODO (#2474) ([libp2p/go-libp2p#2474](https://github.com/libp2p/go-libp2p/pull/2474)) |
| 298 | - peerstore: deprecate the database-backed peerstore (#2475) ([libp2p/go-libp2p#2475](https://github.com/libp2p/go-libp2p/pull/2475)) |
| 299 | - identify: fix sorting of observed addresses (#2476) ([libp2p/go-libp2p#2476](https://github.com/libp2p/go-libp2p/pull/2476)) |
| 300 | - update go-multiaddr to v0.11.0 (#2467) ([libp2p/go-libp2p#2467](https://github.com/libp2p/go-libp2p/pull/2467)) |
| 301 | - chore: update golang-lru to v2.0.4, fixing semver violation (#2448) ([libp2p/go-libp2p#2448](https://github.com/libp2p/go-libp2p/pull/2448)) |
| 302 | - swarm: don't open new streams over transient connections (#2450) ([libp2p/go-libp2p#2450](https://github.com/libp2p/go-libp2p/pull/2450)) |
| 303 | - core/crypto: restrict RSA keys to <= 8192 bits (#2454) ([libp2p/go-libp2p#2454](https://github.com/libp2p/go-libp2p/pull/2454)) |
| 304 | - chore: add notable project requirement (#2453) ([libp2p/go-libp2p#2453](https://github.com/libp2p/go-libp2p/pull/2453)) |
| 305 | - examples: update go-libp2p to v0.29.0 (#2432) ([libp2p/go-libp2p#2432](https://github.com/libp2p/go-libp2p/pull/2432)) |
| 306 | - examples: fix description of command line flags for pubsub (#2400) ([libp2p/go-libp2p#2400](https://github.com/libp2p/go-libp2p/pull/2400)) |
| 307 | - basichost: remove invalid comment (#2435) ([libp2p/go-libp2p#2435](https://github.com/libp2p/go-libp2p/pull/2435)) |
| 308 | - github.com/libp2p/go-libp2p-kad-dht (v0.24.2 -> v0.24.4): |
| 309 | - Make v0.24.4 ([libp2p/go-libp2p-kad-dht#931](https://github.com/libp2p/go-libp2p-kad-dht/pull/931)) |
| 310 | - github.com/libp2p/go-libp2p-routing-helpers (v0.7.1 -> v0.7.3): |
| 311 | - chore: release v0.7.3 |
| 312 | - nit: invert if |
| 313 | - fix: for getValueOrErrorParallel do not return values if they come with errors |
| 314 | - test: add test to make sure we return not found when we get errors back with values |
| 315 | - chore: release v0.7.2 |
| 316 | - tracing: do not leak goroutines when the context is canceled |
| 317 | - tracing: allow for reuse of the tracing |
| 318 | - tracing: add tracing to compose parallel's worker |
| 319 | - tests: add more tests |
| 320 | - tests: mark all tests Parallel |
| 321 | - tracing: add highlevel APIs records on the composable routers |
| 322 | - github.com/libp2p/go-reuseport (v0.3.0 -> v0.4.0): |
| 323 | - release v0.4.0 (#111) ([libp2p/go-reuseport#111](https://github.com/libp2p/go-reuseport/pull/111)) |
| 324 | - use SO_REUSEPORT_LB on FreeBSD (#106) ([libp2p/go-reuseport#106](https://github.com/libp2p/go-reuseport/pull/106)) |
| 325 | - github.com/multiformats/go-multiaddr (v0.10.1 -> v0.11.0): |
| 326 | - release v0.11.0 (#214) ([multiformats/go-multiaddr#214](https://github.com/multiformats/go-multiaddr/pull/214)) |
| 327 | - update golang.org/x/exp slice comparison to match standard library version (#210) ([multiformats/go-multiaddr#210](https://github.com/multiformats/go-multiaddr/pull/210)) |
| 328 | - github.com/warpfork/go-testmark (v0.11.0 -> v0.12.1): |
| 329 | - suite: allow disabling file parallelism. |
| 330 | - Suite feature ([warpfork/go-testmark#16](https://github.com/warpfork/go-testmark/pull/16)) |
| 331 | - fix unchecked error in a test |
| 332 | - accept a simplification suggestion from linters |
| 333 | - Trailing whitespace error ([warpfork/go-testmark#15](https://github.com/warpfork/go-testmark/pull/15)) |
| 334 | - FS implementation (#11) ([warpfork/go-testmark#11](https://github.com/warpfork/go-testmark/pull/11)) |
| 335 | - Add a readme for the testexec extension and its conventions. ([warpfork/go-testmark#14](https://github.com/warpfork/go-testmark/pull/14)) |
| 336 | - Strict mode for testexec structure ([warpfork/go-testmark#12](https://github.com/warpfork/go-testmark/pull/12)) |
| 337 | |
| 338 | </details> |
| 339 | |
| 340 | ### 👨👩👧👦 Contributors |
| 341 | |
| 342 | | Contributor | Commits | Lines ± | Files Changed | |
| 343 | |-------------|---------|---------|---------------| |
| 344 | | Rod Vagg | 48 | +3578/-1789 | 110 | |
| 345 | | Henrique Dias | 24 | +3173/-1128 | 104 | |
| 346 | | Jorropo | 51 | +1721/-1297 | 252 | |
| 347 | | Marco Munizaga | 6 | +1989/-505 | 39 | |
| 348 | | Kay | 3 | +487/-474 | 163 | |
| 349 | | hannahhoward | 8 | +626/-136 | 23 | |
| 350 | | Calvin Behling | 6 | +496/-259 | 20 | |
| 351 | | Eric Myhre | 9 | +610/-121 | 16 | |
| 352 | | Adin Schmahmann | 17 | +659/-45 | 35 | |
| 353 | | Marten Seemann | 17 | +218/-477 | 119 | |
| 354 | | Sukun | 11 | +481/-174 | 29 | |
| 355 | | CJB | 1 | +639/-2 | 5 | |
| 356 | | Hector Sanjuan | 10 | +450/-127 | 21 | |
| 357 | | Wondertan | 2 | +203/-127 | 8 | |
| 358 | | Marcin Rataj | 11 | +148/-86 | 18 | |
| 359 | | Andrew Gillis | 2 | +163/-14 | 5 | |
| 360 | | P. Reis | 3 | +120/-4 | 4 | |
| 361 | | Will Scott | 4 | +107/-12 | 6 | |
| 362 | | Amir Mohammad Fakhimi | 1 | +97/-2 | 5 | |
| 363 | | Ed Schouten | 1 | +55/-7 | 2 | |
| 364 | | Icarus9913 | 1 | +30/-30 | 18 | |
| 365 | | Dirk McCormick | 1 | +3/-42 | 1 | |
| 366 | | Raúl Kripalani | 1 | +20/-18 | 4 | |
| 367 | | Michael Muré | 1 | +26/-7 | 5 | |
| 368 | | Prem Chaitanya Prathi | 1 | +28/-1 | 2 | |
| 369 | | ShengTao | 1 | +13/-14 | 4 | |
| 370 | | Prithvi Shahi | 3 | +14/-13 | 3 | |
| 371 | | web3-bot | 5 | +12/-10 | 9 | |
| 372 | | Alejandro Criado-Pérez | 1 | +11/-11 | 6 | |
| 373 | | Steven Allen | 2 | +6/-10 | 2 | |
| 374 | | Andrej Manduch | 1 | +5/-5 | 3 | |
| 375 | | Russell Dempsey | 2 | +4/-2 | 2 | |
| 376 | | Johannes Maria Frank | 1 | +4/-1 | 1 | |
| 377 | | downIoads | 1 | +2/-2 | 1 | |
| 378 | | Will | 2 | +2/-2 | 2 | |
| 379 | | Marin Kirkov | 1 | +2/-2 | 2 | |
| 380 | | Gus Eggert | 1 | +2/-2 | 1 | |
| 381 | | Bernhard M. Wiedemann | 1 | +4/-0 | 1 | |
| 382 | | Dennis Trautwein | 1 | +1/-2 | 1 | |
| 383 | | “GheisMohammadi” | 1 | +1/-1 | 1 | |
| 384 | | cce | 1 | +1/-1 | 1 | |
| 385 | | Joao Andrade | 1 | +1/-1 | 1 | |
| 386 | | guillaumemichel | 1 | +1/-0 | 1 | |
| 387 | | Santiago Botto | 1 | +0/-1 | 1 | |