master
md 593 lines 38.5 KB
Rendered Raw
1 # Kubo changelog v0.20
2
3 - [v0.20.0](#v0200)
4
5 ## v0.20.0
6
7 - [Overview](#overview)
8 - [🔦 Highlights](#-highlights)
9 - [Boxo under the covers](#boxo-under-the-covers)
10 - [HTTP Gateway](#http-gateway)
11 - [Switch to `boxo/gateway` library](#switch-to-boxogateway-library)
12 - [Improved testing](#improved-testing)
13 - [Trace Context support](#trace-context-support)
14 - [Removed legacy features](#removed-legacy-features)
15 - [`--empty-repo` is now the default](#--empty-repo-is-now-the-default)
16 - [Reminder: `ipfs pubsub` commands and matching HTTP endpoints are deprecated and will be removed](#reminder-ipfs-pubsub-commands-and-matching-http-endpoints-are-deprecated-and-will-be-removed)
17 - [📝 Changelog](#-changelog)
18 - [👨‍👩‍👧‍👦 Contributors](#-contributors)
19
20 ### Overview
21
22 ### 🔦 Highlights
23
24 #### Boxo under the covers
25 We have consolidated many IPFS repos into [Boxo](https://github.com/ipfs/boxo), and this release switches Kubo over to use Boxo instead of those repos, resulting in the removal of 27 dependencies from Kubo:
26
27 - github.com/ipfs/go-bitswap
28 - github.com/ipfs/go-ipfs-files
29 - github.com/ipfs/tar-utils
30 - gihtub.com/ipfs/go-block-format
31 - github.com/ipfs/interface-go-ipfs-core
32 - github.com/ipfs/go-unixfs
33 - github.com/ipfs/go-pinning-service-http-client
34 - github.com/ipfs/go-path
35 - github.com/ipfs/go-namesys
36 - github.com/ipfs/go-mfs
37 - github.com/ipfs/go-ipfs-provider
38 - github.com/ipfs/go-ipfs-pinner
39 - github.com/ipfs/go-ipfs-keystore
40 - github.com/ipfs/go-filestore
41 - github.com/ipfs/go-ipns
42 - github.com/ipfs/go-blockservice
43 - github.com/ipfs/go-ipfs-chunker
44 - github.com/ipfs/go-fetcher
45 - github.com/ipfs/go-ipfs-blockstore
46 - github.com/ipfs/go-ipfs-posinfo
47 - github.com/ipfs/go-ipfs-util
48 - github.com/ipfs/go-ipfs-ds-help
49 - github.com/ipfs/go-verifcid
50 - github.com/ipfs/go-ipfs-exchange-offline
51 - github.com/ipfs/go-ipfs-routing
52 - github.com/ipfs/go-ipfs-exchange-interface
53 - github.com/ipfs/go-libipfs
54
55 Note: if you consume these in your own code, we recommend migrating to Boxo. To ease this process, there's a [tool which will help migrate your code to Boxo](https://github.com/ipfs/boxo#migrating-to-box).
56
57 You can learn more about the [Boxo 0.8 release](https://github.com/ipfs/boxo/releases/tag/v0.8.0) that Kubo now depends and the general effort to get Boxo to be a stable foundation [here](https://github.com/ipfs/boxo/issues/196).
58
59 #### HTTP Gateway
60
61 ##### Switch to `boxo/gateway` library
62
63 Gateway code was extracted and refactored into a standalone library that now
64 lives in [boxo/gateway](https://github.com/ipfs/boxo/tree/main/gateway). This
65 enabled us to clean up some legacy code and remove dependency on Kubo
66 internals.
67
68 The GO API is still being refined, but now operates on higher level abstraction
69 defined by `gateway.IPFSBackend` interface. It is now possible to embed
70 gateway functionality without the rest of Kubo.
71
72 See the [car](https://github.com/ipfs/boxo/tree/main/examples/gateway/car)
73 and [proxy](https://github.com/ipfs/boxo/tree/main/examples/gateway/proxy)
74 examples, or more advanced
75 [bifrost-gateway](https://github.com/ipfs/bifrost-gateway).
76
77 ##### Improved testing
78
79 We are also in the progress of moving away from gateway testing being based on
80 Kubo sharness tests, and are working on
81 [ipfs/gateway-conformance](https://github.com/ipfs/gateway-conformance) test
82 suite that is vendor agnostic and can be run against arbitrary HTTP endpoint to
83 test specific subset of [HTTP Gateways specifications](https://specs.ipfs.tech/http-gateways/).
84
85 ##### Trace Context support
86
87 We've introduced initial support for `traceparent` header from [W3C's Trace
88 Context spec](https://w3c.github.io/trace-context/).
89
90 If `traceparent` header is
91 present in the gateway request, one can use its `trace-id` part to inspect
92 trace spans via selected exporter such as Jaeger UI
93 ([docs](https://github.com/ipfs/boxo/blob/main/docs/tracing.md#using-jaeger-ui),
94 [demo](https://user-images.githubusercontent.com/157609/231312374-bafc2035-1fc6-4d6b-901b-9e4af039807c.png)).
95
96 To learn more, see [tracing docs](https://github.com/ipfs/boxo/blob/main/docs/tracing.md).
97
98 ##### Removed legacy features
99
100 - Some Kubo-specific prometheus metrics are no longer available.
101 - An up-to-date list of gateway metrics can be found in [boxo/gateway/metrics.go](https://github.com/ipfs/boxo/blob/main/gateway/metrics.go).
102 - The legacy opt-in `Gateway.Writable` is no longer available as of Kubo 0.20.
103 - We are working on developing a modern replacement.
104 To support our efforts, please leave a comment describing your use case in
105 [ipfs/specs#375](https://github.com/ipfs/specs/issues/375).
106
107 #### `--empty-repo` is now the default
108
109 When creating a repository with `ipfs init`, `--empty-repo=true` is now the default. This means
110 that your repository will be empty by default instead of containing the introduction files.
111 You can read more about the rationale behind this decision on the [tracking issue](https://github.com/ipfs/kubo/issues/9757).
112
113 #### Reminder: `ipfs pubsub` commands and matching HTTP endpoints are deprecated and will be removed
114
115 `ipfs pubsub` commands and all `/api/v0/pubsub/` RPC endpoints and will be removed in the next release. For more information and rational see [#9717](https://github.com/ipfs/kubo/issues/9717).
116
117 ### 📝 Changelog
118
119 <details><summary>Full Changelog</summary>
120
121 - github.com/ipfs/kubo:
122 - fix: deadlock on retrieving WebTransport addresses (#9857) ([ipfs/kubo#9857](https://github.com/ipfs/kubo/pull/9857))
123 - docs(config): remove mentions of relay v1 (#9860) ([ipfs/kubo#9860](https://github.com/ipfs/kubo/pull/9860))
124 - Merge branch 'master' into merge-release-v0.19.2
125 - docs: add changelog for v0.19.2
126 - feat: webui@3.0.0 (#9835) ([ipfs/kubo#9835](https://github.com/ipfs/kubo/pull/9835))
127 - fix: use default HTTP routers when FullRT DHT client is used (#9841) ([ipfs/kubo#9841](https://github.com/ipfs/kubo/pull/9841))
128 - chore: update version
129 - docs: add `ipfs pubsub` deprecation reminder to changelog (#9827) ([ipfs/kubo#9827](https://github.com/ipfs/kubo/pull/9827))
130 - docs: preparing 0.20 changelog for release (#9799) ([ipfs/kubo#9799](https://github.com/ipfs/kubo/pull/9799))
131 - feat: boxo tracing and traceparent support (#9811) ([ipfs/kubo#9811](https://github.com/ipfs/kubo/pull/9811))
132 - chore: update version
133 - chore: update version
134 - update go-libp2p to v0.27.0
135 - docs: add optimistic provide feature description
136 - feat: add experimental optimistic provide
137 - fix(ci): speed up docker build (#9800) ([ipfs/kubo#9800](https://github.com/ipfs/kubo/pull/9800))
138 - feat(tracing): use OTEL_PROPAGATORS as per OTel spec (#9801) ([ipfs/kubo#9801](https://github.com/ipfs/kubo/pull/9801))
139 - docs: fix jaeger command (#9797) ([ipfs/kubo#9797](https://github.com/ipfs/kubo/pull/9797))
140 - Merge Release: v0.19.1 (#9794) ([ipfs/kubo#9794](https://github.com/ipfs/kubo/pull/9794))
141 - chore: upgrade OpenTelemetry dependencies (#9736) ([ipfs/kubo#9736](https://github.com/ipfs/kubo/pull/9736))
142 - test: fix flaky content routing over HTTP test (#9772) ([ipfs/kubo#9772](https://github.com/ipfs/kubo/pull/9772))
143 - feat: allow injecting custom path resolvers (#9750) ([ipfs/kubo#9750](https://github.com/ipfs/kubo/pull/9750))
144 - feat: add changelog entry for router timeouts for v0.19.1 (#9784) ([ipfs/kubo#9784](https://github.com/ipfs/kubo/pull/9784))
145 - feat(gw): new metrics and HTTP range support (#9786) ([ipfs/kubo#9786](https://github.com/ipfs/kubo/pull/9786))
146 - feat!: make --empty-repo default (#9758) ([ipfs/kubo#9758](https://github.com/ipfs/kubo/pull/9758))
147 - fix: remove timeout on default DHT operations (#9783) ([ipfs/kubo#9783](https://github.com/ipfs/kubo/pull/9783))
148 - refactor: switch gateway code to new API from go-libipfs (#9681) ([ipfs/kubo#9681](https://github.com/ipfs/kubo/pull/9681))
149 - test: port remote pinning tests to Go (#9720) ([ipfs/kubo#9720](https://github.com/ipfs/kubo/pull/9720))
150 - feat: add identify option to swarm peers command
151 - test: port routing DHT tests to Go (#9709) ([ipfs/kubo#9709](https://github.com/ipfs/kubo/pull/9709))
152 - test: fix autoclient flakiness (#9769) ([ipfs/kubo#9769](https://github.com/ipfs/kubo/pull/9769))
153 - test: skip flaky pubsub test (#9770) ([ipfs/kubo#9770](https://github.com/ipfs/kubo/pull/9770))
154 - chore: migrate go-libipfs to boxo
155 - feat: add tracing to the commands client
156 - feat: add client-side metrics for routing-v1 client
157 - test: increase max wait time for peering assertion
158 - feat: remove writable gateway (#9743) ([ipfs/kubo#9743](https://github.com/ipfs/kubo/pull/9743))
159 - Process Improvement: v0.18.0 ([ipfs/kubo#9484](https://github.com/ipfs/kubo/pull/9484))
160 - fix: deadlock while racing `ipfs dag import` and `ipfs repo gc`
161 - feat: improve dag/import (#9721) ([ipfs/kubo#9721](https://github.com/ipfs/kubo/pull/9721))
162 - ci: remove circleci config ([ipfs/kubo#9687](https://github.com/ipfs/kubo/pull/9687))
163 - docs: use fx.Decorate instead of fx.Replace in examples (#9725) ([ipfs/kubo#9725](https://github.com/ipfs/kubo/pull/9725))
164 - Create Changelog: v0.20 ([ipfs/kubo#9742](https://github.com/ipfs/kubo/pull/9742))
165 - Merge Release: v0.19.0 ([ipfs/kubo#9741](https://github.com/ipfs/kubo/pull/9741))
166 - feat(gateway): invalid CID returns 400 Bad Request (#9726) ([ipfs/kubo#9726](https://github.com/ipfs/kubo/pull/9726))
167 - fix: remove outdated changelog part ([ipfs/kubo#9739](https://github.com/ipfs/kubo/pull/9739))
168 - docs: 0.19 changelog ([ipfs/kubo#9707](https://github.com/ipfs/kubo/pull/9707))
169 - fix: canonicalize user defined headers
170 - fix: apply API.HTTPHeaders to /webui redirect
171 - feat: add heap allocs to 'ipfs diag profile'
172 - fix: future proof with > rcmgr.DefaultLimit for new enum rcmgr values
173 - test: add test for presarvation of unlimited configs for inbound systems
174 - fix: preserve Unlimited StreamsInbound in connmgr reconciliation
175 - test: fix flaky rcmgr test
176 - chore: deprecate the pubsub api
177 - Revert "chore: add hamt directory sharding test"
178 - chore: add hamt directory sharding test
179 - test: port peering test from sharness to Go
180 - test: use `T.TempDir` to create temporary test directory
181 - fix: --verify forgets the verified key
182 - test: name --verify forgets the verified key
183 - chore: fix toc in changelog for 0.18
184 - feat: add "autoclient" routing type
185 - test: parallelize more of rcmgr Go tests
186 - test: port legacy DHT tests to Go
187 - fix: t0116-gateway-cache.sh ([ipfs/kubo#9696](https://github.com/ipfs/kubo/pull/9696))
188 - docs: add bifrost to early testers ([ipfs/kubo#9699](https://github.com/ipfs/kubo/pull/9699))
189 - fix: typo in documentation for install path
190 - docs: fix typos
191 - Update Version: v0.19 ([ipfs/kubo#9698](https://github.com/ipfs/kubo/pull/9698))
192 - github.com/ipfs/go-block-format (v0.1.1 -> v0.1.2):
193 - chore: release v0.1.2
194 - Revert deprecation and go-libipfs/blocks stub types
195 - docs: deprecation notice [ci skip]
196 - github.com/ipfs/go-cid (v0.3.2 -> v0.4.1):
197 - v0.4.1
198 - Add unit test for unexpected eof
199 - Update cid.go
200 - CidFromReader should not wrap valid EOF return.
201 - chore: version 0.4.0
202 - feat: wrap parsing errors into ErrInvalidCid
203 - fix: use crypto/rand.Read
204 - Fix README.md example error (#146) ([ipfs/go-cid#146](https://github.com/ipfs/go-cid/pull/146))
205 - github.com/ipfs/go-delegated-routing (v0.7.0 -> v0.8.0):
206 - chore: release v0.8.0
207 - chore: migrate from go-ipns to boxo
208 - docs: add deprecation notice [ci skip]
209 - github.com/ipfs/go-graphsync (v0.14.1 -> v0.14.4):
210 - Update version to cover latest fixes (#419) ([ipfs/go-graphsync#419](https://github.com/ipfs/go-graphsync/pull/419))
211 - Bring changes from #412
212 - Bring changes from #391
213 - fix: calling message queue Shutdown twice causes panic (because close is called twice on done channel) (#414) ([ipfs/go-graphsync#414](https://github.com/ipfs/go-graphsync/pull/414))
214 - docs(CHANGELOG): update for v0.14.3
215 - fix: wire up proper linksystem to traverser (#411) ([ipfs/go-graphsync#411](https://github.com/ipfs/go-graphsync/pull/411))
216 - sync: update CI config files (#378) ([ipfs/go-graphsync#378](https://github.com/ipfs/go-graphsync/pull/378))
217 - chore: remove social links (#398) ([ipfs/go-graphsync#398](https://github.com/ipfs/go-graphsync/pull/398))
218 - Removes `main` branch callout.
219 - release v0.14.2
220 - github.com/ipfs/go-ipfs-blockstore (v1.2.0 -> v1.3.0):
221 - chore: release v1.3.0
222 - feat: stub and deprecate NewBlockstoreNoPrefix
223 - Accept options for blockstore: start with WriteThrough and NoPrefix
224 - Allow using a NewWriteThrough() blockstore.
225 - sync: update CI config files (#105) ([ipfs/go-ipfs-blockstore#105](https://github.com/ipfs/go-ipfs-blockstore/pull/105))
226 - feat: fast-path for PutMany, falling back to Put for single block call (#97) ([ipfs/go-ipfs-blockstore#97](https://github.com/ipfs/go-ipfs-blockstore/pull/97))
227 - github.com/ipfs/go-ipfs-cmds (v0.8.2 -> v0.9.0):
228 - chore: release v0.9.0
229 - chore: change go-libipfs to boxo
230 - github.com/ipfs/go-libipfs (v0.6.2 -> v0.7.0):
231 - chore: bump to 0.7.0 (#213) ([ipfs/go-libipfs#213](https://github.com/ipfs/go-libipfs/pull/213))
232 - feat: return 400 on /ipfs/invalid-cid (#205) ([ipfs/go-libipfs#205](https://github.com/ipfs/go-libipfs/pull/205))
233 - docs: add note in README that go-libipfs is not comprehensive (#163) ([ipfs/go-libipfs#163](https://github.com/ipfs/go-libipfs/pull/163))
234 - github.com/ipfs/go-merkledag (v0.9.0 -> v0.10.0):
235 - chore: bump version to 0.10.0
236 - fix: switch to crypto/rand.Read
237 - stop using the deprecated io/ioutil package
238 - github.com/ipfs/go-unixfs (v0.4.4 -> v0.4.5):
239 - chore: release v0.4.5
240 - chore: remove go-libipfs dependency
241 - github.com/ipfs/go-unixfsnode (v1.5.2 -> v1.6.0):
242 - chore: bump v1.6.0
243 - feat: add UnixFSPathSelectorBuilder ([ipfs/go-unixfsnode#45](https://github.com/ipfs/go-unixfsnode/pull/45))
244 - fix: update state to allow iter continuance on NotFound errors
245 - chore!: make PBLinkItr private - not intended for public use
246 - fix: propagate iteration errors
247 - github.com/ipld/go-car/v2 (v2.5.1 -> v2.9.1-0.20230325062757-fff0e4397a3d):
248 - chore: unmigrate from go-libipfs
249 - Create CODEOWNERS
250 - blockstore: give a direct access to the index for read operations
251 - blockstore: only close the file on error in OpenReadWrite, not OpenReadWriteFile
252 - fix: handle (and test) WholeCID vs not; fast Has() path for storage
253 - ReadWrite: faster Has() by using the in-memory index instead of reading on disk
254 - fix: let `extract` skip missing unixfs shard links
255 - fix: error when no files extracted
256 - fix: make -f optional, read from stdin if omitted
257 - fix: update cmd/car/README with latest description
258 - chore: add test cases for extract modes
259 - feat: extract accepts '-' as an output path for stdout
260 - feat: extract specific path, accept stdin as streaming input
261 - fix: if we don't read the full block data, don't error on !EOF
262 - blockstore: try to close during Finalize(), even in case of previous error
263 - ReadWrite: add an alternative FinalizeReadOnly+Close flow
264 - feat: add WithTrustedCar() reader option (#381) ([ipld/go-car#381](https://github.com/ipld/go-car/pull/381))
265 - blockstore: fast path for AllKeysChan using the index
266 - fix: switch to crypto/rand.Read
267 - stop using the deprecated io/ioutil package
268 - fix(doc): fix storage package doc formatting
269 - fix: return errors for unsupported operations
270 - chore: move insertionindex into store pkg
271 - chore: add experimental note
272 - fix: minor lint & windows fd test problems
273 - feat: docs for StorageCar interfaces
274 - feat: ReadableWritable; dedupe shared code
275 - feat: add Writable functionality to StorageCar
276 - feat: StorageCar as a Readable storage, separate from blockstore
277 - feat(blockstore): implement a streaming read only storage
278 - feat(cmd): add index create subcommand to create an external carv2 index ([ipld/go-car#350](https://github.com/ipld/go-car/pull/350))
279 - chore: bump version to 0.6.0
280 - fix: use goreleaser instead
281 - Allow using WalkOption in WriteCar function ([ipld/go-car#357](https://github.com/ipld/go-car/pull/357))
282 - fix: update go-block-format to the version that includes the stubs
283 - feat: upgrade from go-block-format to go-libipfs/blocks
284 - cleanup readme a bit to make the cli more discoverable (#353) ([ipld/go-car#353](https://github.com/ipld/go-car/pull/353))
285 - Update install instructions in README.md
286 - Add a debugging form for car files. (#341) ([ipld/go-car#341](https://github.com/ipld/go-car/pull/341))
287 - ([ipld/go-car#340](https://github.com/ipld/go-car/pull/340))
288 - github.com/ipld/go-codec-dagpb (v1.5.0 -> v1.6.0):
289 - Update version.json
290 - github.com/ipld/go-ipld-prime (v0.19.0 -> v0.20.0):
291 - Prepare v0.20.0
292 - fix(datamodel): add tests to Copy, make it complain on nil
293 - feat(dagcbor): mode to allow parsing undelimited streamed objects
294 - Fix mispatched package declaration.
295 - Add several pieces of docs to schema/dmt.
296 - Additional access to schema/dmt package; schema concatenation feature ([ipld/go-ipld-prime#483](https://github.com/ipld/go-ipld-prime/pull/483))
297 - Fix hash mismatch error on matching link pointer
298 - feat: support errors.Is for schema errors
299 - github.com/ipld/go-ipld-prime/storage/bsadapter (v0.0.0-20211210234204-ce2a1c70cd73 -> v0.0.0-20230102063945-1a409dc236dd):
300 - build(deps): bump github.com/ipfs/go-blockservice
301 - Fix mispatched package declaration.
302 - Add several pieces of docs to schema/dmt.
303 - Additional access to schema/dmt package; schema concatenation feature ([ipld/go-ipld-prime/storage/bsadapter#483](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/483))
304 - fix: go mod tidy
305 - build(deps): bump github.com/frankban/quicktest from 1.14.3 to 1.14.4
306 - Fix hash mismatch error on matching link pointer
307 - build(deps): bump github.com/warpfork/go-testmark from 0.10.0 to 0.11.0
308 - feat: support errors.Is for schema errors
309 - build(deps): bump github.com/multiformats/go-multicodec
310 - Prepare v0.19.0
311 - fix: correct json codec links & bytes handling
312 - build(deps): bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#468) ([ipld/go-ipld-prime/storage/bsadapter#468](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/468))
313 - build(deps): bump github.com/ipfs/go-cid from 0.3.0 to 0.3.2 (#466) ([ipld/go-ipld-prime/storage/bsadapter#466](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/466))
314 - build(deps): bump github.com/ipfs/go-cid in /storage/bsrvadapter (#464) ([ipld/go-ipld-prime/storage/bsadapter#464](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/464))
315 - test(basicnode): increase test coverage for int and map types (#454) ([ipld/go-ipld-prime/storage/bsadapter#454](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/454))
316 - build(deps): bump github.com/ipfs/go-cid in /storage/bsrvadapter
317 - build(deps): bump github.com/ipfs/go-cid from 0.2.0 to 0.3.0
318 - build(deps): bump github.com/multiformats/go-multicodec
319 - fix: remove reliance on ioutil
320 - fix: update sub-package modules
321 - build(deps): bump github.com/multiformats/go-multihash
322 - build(deps): bump github.com/ipfs/go-datastore in /storage/dsadapter
323 - update .github/workflows/go-check.yml
324 - update .github/workflows/go-test.yml
325 - run gofmt -s
326 - bump go.mod to Go 1.18 and run go fix
327 - bump go.mod to Go 1.18 and run go fix
328 - bump go.mod to Go 1.18 and run go fix
329 - bump go.mod to Go 1.18 and run go fix
330 - feat: add kinded union to gendemo
331 - fix: go mod 1.17 compat problems
332 - build(deps): bump github.com/ipfs/go-blockservice
333 - Prepare v0.18.0
334 - fix(deps): update benchmarks go.sum
335 - build(deps): bump github.com/multiformats/go-multihash
336 - feat(bindnode): add a BindnodeRegistry utility (#437) ([ipld/go-ipld-prime/storage/bsadapter#437](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/437))
337 - feat(bindnode): support full uint64 range
338 - chore(bindnode): remove typed functions for options
339 - chore(bindnode): docs and minor tweaks
340 - feat(bindnode): make Any converters work for List and Map values
341 - fix(bindnode): shorten converter option names, minor perf improvements
342 - fix(bindnode): only custom convert AssignNull for Any converter
343 - feat(bindnode): pass Null on to nullable custom converters
344 - chore(bindnode): config helper refactor w/ short-circuit
345 - feat(bindnode): add AddCustomTypeAnyConverter() to handle `Any` fields
346 - feat(bindnode): add AddCustomTypeXConverter() options for most scalar kinds
347 - chore(bindnode): back out of reflection for converters
348 - feat(bindnode): switch to converter functions instead of type
349 - feat(bindnode): allow custom type conversions with options
350 - feat: add release checklist (#442) ([ipld/go-ipld-prime/storage/bsadapter#442](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/442))
351 - Prepare v0.17.0
352 - feat: introduce UIntNode interface, used within DAG-CBOR codec
353 - add option to not parse beyond end of structure (#435) ([ipld/go-ipld-prime/storage/bsadapter#435](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/435))
354 - sync benchmarks go.sum
355 - build(deps): bump github.com/multiformats/go-multicodec
356 - patch: first draft. ([ipld/go-ipld-prime/storage/bsadapter#350](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/350))
357 - feat(bindnode): infer links and Any from Go types (#432) ([ipld/go-ipld-prime/storage/bsadapter#432](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/432))
358 - fix(codecs): error on cid.Undef links in dag{json,cbor} encoding (#433) ([ipld/go-ipld-prime/storage/bsadapter#433](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/433))
359 - chore(bindnode): add test for sub-node unwrapping
360 - fix(bindnode): more helpful error message for enum value footgun
361 - fix(bindnode): panic early if API has been passed ptr-to-ptr
362 - fix(deps): mod tidy for dependencies
363 - build(deps): bump github.com/warpfork/go-testmark from 0.3.0 to 0.10.0
364 - build(deps): bump github.com/multiformats/go-multicodec
365 - build(deps): bump github.com/ipfs/go-cid from 0.0.4 to 0.2.0
366 - build(deps): bump github.com/google/go-cmp from 0.5.7 to 0.5.8
367 - build(deps): bump github.com/frankban/quicktest from 1.14.2 to 1.14.3
368 - build(deps): bump github.com/ipfs/go-cid in /storage/bsrvadapter
369 - chore(deps): expand dependabot to sub-modules
370 - chore(deps): add dependabot config
371 - printer: fix printing of floats
372 - add version.json file (#411) ([ipld/go-ipld-prime/storage/bsadapter#411](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/411))
373 - ci: use GOFLAGS to control test tags
374 - ci: disable coverpkg using custom workflow insertion
375 - ci: add initial web3 unified-ci files
376 - fix: make 32-bit safe and stable & add to CI
377 - ci: add go-check.yml workflow from unified-ci
378 - ci: go mod tidy
379 - fix: staticcheck and govet fixes
380 - test: make tests work on Windows, add Windows to CI (#405) ([ipld/go-ipld-prime/storage/bsadapter#405](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/405))
381 - schema: enable inline types through dsl parser & compiler (#404) ([ipld/go-ipld-prime/storage/bsadapter#404](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/404))
382 - node/bindnode: allow nilable types for IPLD optional/nullable
383 - test(ci): enable macos in GitHub Actions
384 - test(gen-go): disable parallelism when testing on macos
385 - storage: update deps
386 - dsl support for stringjoin struct repr and stringprefix union repr ([ipld/go-ipld-prime/storage/bsadapter#397](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/397))
387 - codec/dagcbor: add DecodeOptions.ExperimentalDeterminism
388 - node/bindnode: add some more docs
389 - start testing on Go 1.18.x, drop Go 1.16.x
390 - readme: getting started pointers.
391 - readme: bindnode definitely needs a mention!
392 - Readme updates!
393 - datamodel: document that repr prototypes produce type nodes
394 - node/bindnode: minor fuzz improvements
395 - gengo: update readme.
396 - fix(dagcbor): don't accept trailing bytes
397 - schema/dmt: reject duplicate or missing union repr members
398 - node/bindnode: actually check schemadmt.Compile errors when fuzzing
399 - node/bindnode: avoid OOM when inferring from cyclic IPLD schemas
400 - schema/dmt: require enum reprs to refer valid members
401 - skip NaN/Inf errors for dag-json
402 - node/bindnode: refuse to decode empty union values
403 - schema/dmt: error in Compile if union reprs refer to unknown members
404 - node/bindnode: start fuzzing with schema/dmt and codec/dagcbor
405 - mark v0.16.0
406 - node/bindnode: enforce pointer requirement for nullable maps
407 - Implement WalkTransforming traversal (#376) ([ipld/go-ipld-prime/storage/bsadapter#376](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/376))
408 - docs(datamodel): add comment to LargeBytesNode
409 - Add partial-match traversal of large bytes (#375) ([ipld/go-ipld-prime/storage/bsadapter#375](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/375))
410 - Implement option to start traversals at a path ([ipld/go-ipld-prime/storage/bsadapter#358](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/358))
411 - add top-level "go value with schema" example
412 - Support optional `LargeBytesNode` interface (#372) ([ipld/go-ipld-prime/storage/bsadapter#372](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/372))
413 - node/bindnode: support pointers to datamodel.Node to bind with Any
414 - fix(bindnode): tuple struct iterator should handle absent fields properly
415 - node/bindnode: make AssignNode work at the repr level
416 - node/bindnode: add support for unsigned integers
417 - node/bindnode: cover even more edge case panics
418 - node/bindnode: polish some more AsT panics
419 - schema/dmt: stop using a fake test to generate code ([ipld/go-ipld-prime/storage/bsadapter#356](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/356))
420 - schema: remove one review note; add another.
421 - fix: minor EncodedLength fixes, add tests to fully exercise
422 - feat: add dagcbor.EncodedLength(Node) to calculate length without encoding
423 - chore: rename Garbage() to Generate()
424 - fix: minor garbage nits
425 - fix: Garbage() takes rand parameter, tweak algorithms, improve docs
426 - feat: add Garbage() Node generator
427 - node/bindnode: introduce an assembler that always errors
428 - node/bindnode: polish panics on invalid AssignT calls
429 - datamodel: don't panic when stringifying an empty KindSet
430 - node/bindnode: start using ipld.LoadSchema APIs
431 - selectors: fix for edge case around recursion clauses with an immediate edge. ([ipld/go-ipld-prime/storage/bsadapter#334](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/334))
432 - node/bindnode: improve support for pointer types
433 - node/bindnode: subtract all absents in Length at the repr level
434 - fix(codecs): error when encoding maps whose lengths don't match entry count
435 - schema: avoid alloc and copy in Struct and Enum methods
436 - node/bindnode: allow mapping int-repr enums with Go integers
437 - schema,node/bindnode: add support for Any
438 - signaling ADLs in selectors (#301) ([ipld/go-ipld-prime/storage/bsadapter#301](https://github.com/ipld/go-ipld-prime/storage/bsadapter/pull/301))
439 - node/bindnode: add support for enums
440 - schema/...: add support for enum int representations
441 - node/bindnode: allow binding cidlink.Link to links
442 - github.com/libp2p/go-libp2p (v0.26.4 -> v0.27.3):
443 - release v0.27.3
444 - 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))
445 - Release v0.27.2 (#2270) ([libp2p/go-libp2p#2270](https://github.com/libp2p/go-libp2p/pull/2270))
446 - release v0.27.1 (#2252) ([libp2p/go-libp2p#2252](https://github.com/libp2p/go-libp2p/pull/2252))
447 - Infer public webtransport addrs from quic-v1 addrs. (#2251) ([libp2p/go-libp2p#2251](https://github.com/libp2p/go-libp2p/pull/2251))
448 - basichost: don't allocate when deduplicating multiaddrs (#2206) ([libp2p/go-libp2p#2206](https://github.com/libp2p/go-libp2p/pull/2206))
449 - identify: fix normalization of interface listen addresses (#2250) ([libp2p/go-libp2p#2250](https://github.com/libp2p/go-libp2p/pull/2250))
450 - autonat: fix flaky TestAutoNATDialRefused (#2245) ([libp2p/go-libp2p#2245](https://github.com/libp2p/go-libp2p/pull/2245))
451 - basichost: remove stray print statement in test (#2249) ([libp2p/go-libp2p#2249](https://github.com/libp2p/go-libp2p/pull/2249))
452 - swarm: fix multiaddr comparison in ListenClose (#2247) ([libp2p/go-libp2p#2247](https://github.com/libp2p/go-libp2p/pull/2247))
453 - release v0.27.0 (#2242) ([libp2p/go-libp2p#2242](https://github.com/libp2p/go-libp2p/pull/2242))
454 - add a security policy (#2238) ([libp2p/go-libp2p#2238](https://github.com/libp2p/go-libp2p/pull/2238))
455 - chore: 0.27.0 changelog entries (#2241) ([libp2p/go-libp2p#2241](https://github.com/libp2p/go-libp2p/pull/2241))
456 - correctly handle WebTransport addresses without certhashes (#2239) ([libp2p/go-libp2p#2239](https://github.com/libp2p/go-libp2p/pull/2239))
457 - autorelay: add metrics (#2185) ([libp2p/go-libp2p#2185](https://github.com/libp2p/go-libp2p/pull/2185))
458 - autonat: don't change status on dial request refused (#2225) ([libp2p/go-libp2p#2225](https://github.com/libp2p/go-libp2p/pull/2225))
459 - autonat: fix closing of listeners in dialPolicy tests (#2226) ([libp2p/go-libp2p#2226](https://github.com/libp2p/go-libp2p/pull/2226))
460 - discovery (backoff): fix typo in comment (#2214) ([libp2p/go-libp2p#2214](https://github.com/libp2p/go-libp2p/pull/2214))
461 - relaysvc: flaky TestReachabilityChangeEvent (#2215) ([libp2p/go-libp2p#2215](https://github.com/libp2p/go-libp2p/pull/2215))
462 - Add wss transport to interop tester impl (#2178) ([libp2p/go-libp2p#2178](https://github.com/libp2p/go-libp2p/pull/2178))
463 - tests: add a stream read deadline transport test (#2210) ([libp2p/go-libp2p#2210](https://github.com/libp2p/go-libp2p/pull/2210))
464 - autorelay: fix busy loop bug and flaky tests in relay finder (#2208) ([libp2p/go-libp2p#2208](https://github.com/libp2p/go-libp2p/pull/2208))
465 - tests: test mplex and Yamux, Noise and TLS in transport tests (#2209) ([libp2p/go-libp2p#2209](https://github.com/libp2p/go-libp2p/pull/2209))
466 - tests: add some basic transport integration tests (#2207) ([libp2p/go-libp2p#2207](https://github.com/libp2p/go-libp2p/pull/2207))
467 - autorelay: remove unused semaphore (#2184) ([libp2p/go-libp2p#2184](https://github.com/libp2p/go-libp2p/pull/2184))
468 - basichost: prevent duplicate dials (#2196) ([libp2p/go-libp2p#2196](https://github.com/libp2p/go-libp2p/pull/2196))
469 - websocket: don't set a WSS multiaddr for accepted unencrypted conns (#2199) ([libp2p/go-libp2p#2199](https://github.com/libp2p/go-libp2p/pull/2199))
470 - websocket: Don't limit message sizes in the websocket reader (#2193) ([libp2p/go-libp2p#2193](https://github.com/libp2p/go-libp2p/pull/2193))
471 - identify: fix stale comment (#2179) ([libp2p/go-libp2p#2179](https://github.com/libp2p/go-libp2p/pull/2179))
472 - relay service: add metrics (#2154) ([libp2p/go-libp2p#2154](https://github.com/libp2p/go-libp2p/pull/2154))
473 - identify: Fix IdentifyWait when Connected events happen out of order (#2173) ([libp2p/go-libp2p#2173](https://github.com/libp2p/go-libp2p/pull/2173))
474 - chore: fix resource manager's README (#2168) ([libp2p/go-libp2p#2168](https://github.com/libp2p/go-libp2p/pull/2168))
475 - relay: fix deadlock when closing (#2171) ([libp2p/go-libp2p#2171](https://github.com/libp2p/go-libp2p/pull/2171))
476 - core: remove LocalPrivateKey method from network.Conn interface (#2144) ([libp2p/go-libp2p#2144](https://github.com/libp2p/go-libp2p/pull/2144))
477 - routed host: return connection error instead of routing error (#2169) ([libp2p/go-libp2p#2169](https://github.com/libp2p/go-libp2p/pull/2169))
478 - connmgr: reduce log level for closing connections (#2165) ([libp2p/go-libp2p#2165](https://github.com/libp2p/go-libp2p/pull/2165))
479 - circuitv2: cleanup relay service properly (#2164) ([libp2p/go-libp2p#2164](https://github.com/libp2p/go-libp2p/pull/2164))
480 - chore: add patch release to changelog (#2151) ([libp2p/go-libp2p#2151](https://github.com/libp2p/go-libp2p/pull/2151))
481 - chore: remove superfluous testing section from README (#2150) ([libp2p/go-libp2p#2150](https://github.com/libp2p/go-libp2p/pull/2150))
482 - autonat: don't use autonat for address discovery (#2148) ([libp2p/go-libp2p#2148](https://github.com/libp2p/go-libp2p/pull/2148))
483 - swarm metrics: fix connection direction (#2147) ([libp2p/go-libp2p#2147](https://github.com/libp2p/go-libp2p/pull/2147))
484 - connmgr: Use eventually equal helper in connmgr tests (#2128) ([libp2p/go-libp2p#2128](https://github.com/libp2p/go-libp2p/pull/2128))
485 - swarm: emit PeerConnectedness event from swarm instead of from hosts (#1574) ([libp2p/go-libp2p#1574](https://github.com/libp2p/go-libp2p/pull/1574))
486 - relay: initialize the ASN util when starting the service (#2143) ([libp2p/go-libp2p#2143](https://github.com/libp2p/go-libp2p/pull/2143))
487 - Fix flaky TestMetricsNoAllocNoCover test (#2142) ([libp2p/go-libp2p#2142](https://github.com/libp2p/go-libp2p/pull/2142))
488 - identify: Bump timeouts/sleep in tests (#2135) ([libp2p/go-libp2p#2135](https://github.com/libp2p/go-libp2p/pull/2135))
489 - Add sleep to fix flaky test (#2129) ([libp2p/go-libp2p#2129](https://github.com/libp2p/go-libp2p/pull/2129))
490 - basic_host: Fix flaky tests (#2136) ([libp2p/go-libp2p#2136](https://github.com/libp2p/go-libp2p/pull/2136))
491 - swarm: Check context once more before dialing (#2139) ([libp2p/go-libp2p#2139](https://github.com/libp2p/go-libp2p/pull/2139))
492 - github.com/libp2p/go-libp2p-asn-util (v0.2.0 -> v0.3.0):
493 - release v0.3.0 (#26) ([libp2p/go-libp2p-asn-util#26](https://github.com/libp2p/go-libp2p-asn-util/pull/26))
494 - initialize the store lazily (#25) ([libp2p/go-libp2p-asn-util#25](https://github.com/libp2p/go-libp2p-asn-util/pull/25))
495 - github.com/libp2p/go-libp2p-gostream (v0.5.0 -> v0.6.0):
496 - Update libp2p ([libp2p/go-libp2p-gostream#80](https://github.com/libp2p/go-libp2p-gostream/pull/80))
497 - fix typo in README (#75) ([libp2p/go-libp2p-gostream#75](https://github.com/libp2p/go-libp2p-gostream/pull/75))
498 - github.com/libp2p/go-libp2p-http (v0.4.0 -> v0.5.0):
499 - sync: update CI config files ([libp2p/go-libp2p-http#82](https://github.com/libp2p/go-libp2p-http/pull/82))
500 - github.com/libp2p/go-libp2p-kad-dht (v0.21.1 -> v0.23.0):
501 - Release v0.23.0
502 - Specified CODEOWNERS ([libp2p/go-libp2p-kad-dht#828](https://github.com/libp2p/go-libp2p-kad-dht/pull/828))
503 - fix: optimistic provide ci checks in tests ([libp2p/go-libp2p-kad-dht#833](https://github.com/libp2p/go-libp2p-kad-dht/pull/833))
504 - feat: add experimental optimistic provide (#783) ([libp2p/go-libp2p-kad-dht#783](https://github.com/libp2p/go-libp2p-kad-dht/pull/783))
505 - feat: rework tracing a bit
506 - feat: add basic tracing
507 - chore: release v0.22.0
508 - chore: migrate go-libipfs to boxo
509 - Fix multiple ProviderAddrTTL definitions #795 ([libp2p/go-libp2p-kad-dht#831](https://github.com/libp2p/go-libp2p-kad-dht/pull/831))
510 - Increase provider Multiaddress TTL ([libp2p/go-libp2p-kad-dht#795](https://github.com/libp2p/go-libp2p-kad-dht/pull/795))
511 - Make provider manager options configurable in `fullrt` ([libp2p/go-libp2p-kad-dht#829](https://github.com/libp2p/go-libp2p-kad-dht/pull/829))
512 - Adjust PeerSet logic in the DHT lookup process ([libp2p/go-libp2p-kad-dht#802](https://github.com/libp2p/go-libp2p-kad-dht/pull/802))
513 - added maintainers in the README ([libp2p/go-libp2p-kad-dht#826](https://github.com/libp2p/go-libp2p-kad-dht/pull/826))
514 - Allow DHT crawler to be swappable
515 - Introduce options to parameterize config of the accelerated DHT client ([libp2p/go-libp2p-kad-dht#822](https://github.com/libp2p/go-libp2p-kad-dht/pull/822))
516 - github.com/libp2p/go-libp2p-pubsub (v0.9.0 -> v0.9.3):
517 - Fix Memory Leak In New Timecache Implementations (#528) ([libp2p/go-libp2p-pubsub#528](https://github.com/libp2p/go-libp2p-pubsub/pull/528))
518 - Default validator support (#525) ([libp2p/go-libp2p-pubsub#525](https://github.com/libp2p/go-libp2p-pubsub/pull/525))
519 - Refactor timecache implementations (#523) ([libp2p/go-libp2p-pubsub#523](https://github.com/libp2p/go-libp2p-pubsub/pull/523))
520 - fix(timecache): remove panic in first seen cache on Add (#522) ([libp2p/go-libp2p-pubsub#522](https://github.com/libp2p/go-libp2p-pubsub/pull/522))
521 - chore: update go version and dependencies (#516) ([libp2p/go-libp2p-pubsub#516](https://github.com/libp2p/go-libp2p-pubsub/pull/516))
522 - github.com/multiformats/go-multiaddr (v0.8.0 -> v0.9.0):
523 - Release v0.9.0 ([multiformats/go-multiaddr#196](https://github.com/multiformats/go-multiaddr/pull/196))
524 - Update webrtc protocols after rename ([multiformats/go-multiaddr#195](https://github.com/multiformats/go-multiaddr/pull/195))
525 - github.com/multiformats/go-multibase (v0.1.1 -> v0.2.0):
526 - chore: bump v0.2.0
527 - fix: math/rand -> crypto/rand
528 - fuzz: add Decoder fuzzing
529 - github.com/multiformats/go-multicodec (v0.7.0 -> v0.8.1):
530 - Bump version to release `ipns-record` code
531 - chore: update submodules and go generate
532 - deps: upgrade stringer to compatible version
533 - v0.8.0
534 - chore: update submodules and go generate
535 - github.com/warpfork/go-testmark (v0.10.0 -> v0.11.0):
536 - Quick changelog to note we have an API update.
537 - Index fix ([warpfork/go-testmark#13](https://github.com/warpfork/go-testmark/pull/13))
538 - Link to python implementation in the readme!
539
540 </details>
541
542 ### 👨‍👩‍👧‍👦 Contributors
543
544 | Contributor | Commits | Lines ± | Files Changed |
545 |-------------|---------|---------|---------------|
546 | Rod Vagg | 40 | +4214/-1400 | 102 |
547 | Sukun | 12 | +3541/-267 | 34 |
548 | Gus Eggert | 22 | +2387/-1160 | 81 |
549 | galargh | 23 | +1331/-1734 | 34 |
550 | Henrique Dias | 23 | +681/-1167 | 79 |
551 | Marco Munizaga | 19 | +1500/-187 | 55 |
552 | Jorropo | 25 | +897/-597 | 180 |
553 | Dennis Trautwein | 4 | +990/-60 | 14 |
554 | Marten Seemann | 18 | +443/-450 | 53 |
555 | vyzo | 2 | +595/-152 | 11 |
556 | Michael Muré | 8 | +427/-182 | 18 |
557 | Will | 2 | +536/-15 | 5 |
558 | Adin Schmahmann | 3 | +327/-125 | 11 |
559 | hannahhoward | 2 | +344/-1 | 4 |
560 | Arthur Gavazza | 1 | +210/-50 | 4 |
561 | Hector Sanjuan | 6 | +181/-77 | 13 |
562 | Masih H. Derkani | 5 | +214/-42 | 12 |
563 | Calvin Behling | 4 | +158/-58 | 11 |
564 | Eric Myhre | 7 | +113/-27 | 15 |
565 | Marcin Rataj | 5 | +72/-30 | 5 |
566 | Steve Loeppky | 2 | +99/-0 | 2 |
567 | Piotr Galar | 9 | +60/-18 | 9 |
568 | gammazero | 4 | +69/-0 | 8 |
569 | Prithvi Shahi | 2 | +55/-14 | 2 |
570 | Eng Zer Jun | 1 | +15/-54 | 5 |
571 | Laurent Senta | 3 | +44/-2 | 3 |
572 | Ian Davis | 1 | +35/-0 | 1 |
573 | web3-bot | 4 | +19/-13 | 7 |
574 | guillaumemichel | 2 | +18/-14 | 3 |
575 | Guillaume Michel - guissou | 4 | +24/-8 | 4 |
576 | omahs | 1 | +9/-9 | 3 |
577 | cortze | 3 | +9/-9 | 3 |
578 | Nishant Das | 1 | +9/-5 | 3 |
579 | Hlib Kanunnikov | 2 | +11/-3 | 3 |
580 | Andrew Gillis | 3 | +6/-8 | 3 |
581 | Johnny | 1 | +0/-10 | 1 |
582 | Rafał Leszko | 1 | +4/-4 | 1 |
583 | Dirk McCormick | 1 | +4/-1 | 1 |
584 | Antonio Navarro Perez | 1 | +4/-1 | 1 |
585 | RichΛrd | 2 | +2/-2 | 2 |
586 | Russell Dempsey | 1 | +2/-1 | 1 |
587 | Winterhuman | 1 | +1/-1 | 1 |
588 | Will Hawkins | 1 | +1/-1 | 1 |
589 | Nikhilesh Susarla | 1 | +1/-1 | 1 |
590 | Kubo Mage | 1 | +1/-1 | 1 |
591 | Bryan White | 1 | +1/-1 | 1 |
592
593