master
md 387 lines 24.6 KB
Rendered Raw
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 |