master
md 553 lines 34.6 KB
Rendered Raw
1 # Kubo changelog v0.16
2
3 ## v0.16.0
4
5 ### Overview
6
7 Below is an outline of all that is in this release, so you get a sense of all that's included.
8
9 - [Kubo changelog v0.16](#kubo-changelog-v016)
10 - [v0.16.0](#v0160)
11 - [Overview](#overview)
12 - [🔦 Highlights](#-highlights)
13 - [🛣️ More configurable delegated routing system](#️-more-configurable-delegated-routing-system)
14 - [🌍 WebTransport new experimental Transport](#-webtransport-new-experimental-transport)
15 - [🗃️ Hardened IPNS record verification](#-hardened-ipns-record-verification)
16 - [🌉 Web Gateways now support _redirects files](#-web-gateways-now-support-_redirects-files)
17 - [😻 Add files to MFS with ipfs add --to-files](#-add-files-to-mfs-with-ipfs-add---to-files)
18 - [Changelog](#changelog)
19 - [Contributors](#contributors)
20
21
22 ### 🔦 Highlights
23
24 <!-- TODO -->
25
26 #### 🛣️ More configurable delegated routing system
27
28 Since Kubo v0.14.0 [Reframe protocol](https://github.com/ipfs/specs/tree/main/reframe#readme) has been supported as a new routing system.
29
30 Now, we allow to configure several routers working together, so you can have several `reframe` and `dht` routers making queries. You can use the special `parallel` and `sequential` routers to fill your needs.
31
32 Example configuration usage using the [Filecoin Network Indexer](https://docs.cid.contact/filecoin-network-indexer/overview) and the DHT, making first a query to the indexer, and timing out after 3 seconds.
33
34 ```console
35 $ ipfs config Routing.Type --json '"custom"'
36
37 $ ipfs config Routing.Routers.CidContact --json '{
38 "Type": "reframe",
39 "Parameters": {
40 "Endpoint": "https://cid.contact/reframe"
41 }
42 }'
43
44 $ ipfs config Routing.Routers.WanDHT --json '{
45 "Type": "dht",
46 "Parameters": {
47 "Mode": "auto",
48 "PublicIPNetwork": true,
49 "AcceleratedDHTClient": false
50 }
51 }'
52
53 $ ipfs config Routing.Routers.ParallelHelper --json '{
54 "Type": "parallel",
55 "Parameters": {
56 "Routers": [
57 {
58 "RouterName" : "CidContact",
59 "IgnoreErrors" : true,
60 "Timeout": "3s"
61 },
62 {
63 "RouterName" : "WanDHT",
64 "IgnoreErrors" : false,
65 "Timeout": "5m",
66 "ExecuteAfter": "2s"
67 }
68 ]
69 }
70 }'
71
72 $ ipfs config Routing.Methods --json '{
73 "find-peers": {
74 "RouterName": "ParallelHelper"
75 },
76 "find-providers": {
77 "RouterName": "ParallelHelper"
78 },
79 "get-ipns": {
80 "RouterName": "ParallelHelper"
81 },
82 "provide": {
83 "RouterName": "WanDHT"
84 },
85 "put-ipns": {
86 "RouterName": "ParallelHelper"
87 }
88 }'
89
90 ```
91
92 ### 🌍 WebTransport new experimental Transport
93
94 A new feature of [`go-libp2p`](https://github.com/libp2p/go-libp2p/releases/tag/v0.23.0) is [WebTransport](https://github.com/libp2p/go-libp2p/issues/1717).
95
96 For now it is **disabled by default** and considered **experimental**.
97 If you find issues running it please [report them to us](https://github.com/ipfs/kubo/issues/new).
98
99 In the future Kubo will listen on WebTransport by default for anyone already listening on QUIC addresses.
100
101 WebTransport is a new transport protocol currently under development by the [IETF](https://datatracker.ietf.org/wg/webtrans/about/) and the [W3C](https://www.w3.org/TR/webtransport/), and [already implemented by Chrome](https://caniuse.com/webtransport).
102 Conceptually, it’s like WebSocket run over QUIC instead of TCP. Most importantly, it allows browsers to establish (secure!) connections to WebTransport servers without the need for CA-signed certificates,
103 thereby enabling any js-libp2p node running in a browser to connect to any kubo node, with zero manual configuration involved.
104
105 The previous alternative is websocket secure, which require installing a reverse proxy and TLS certificates manually.
106
107 #### How to enable WebTransport
108
109 Those steps are temporary and won't be needed once we make it enabled by default.
110
111 1. Enable the WebTransport transport:
112 `ipfs config Swarm.Transports.Network.WebTransport --json true`
113 1. Add a listener address for WebTransport to your `Addresses.Swarm` key, for example:
114 ```json
115 [
116 "/ip4/0.0.0.0/tcp/4001",
117 "/ip4/0.0.0.0/udp/4001/quic",
118 "/ip4/0.0.0.0/udp/4002/quic/webtransport"
119 ]
120 ```
121 1. Restart your daemon to apply the config changes.
122
123 ### 🗃️ Hardened IPNS record verification
124
125 Records that do not have a valid IPNS V2 signature, or exceed the max size
126 limit, will no longer pass verification, and will be ignored by Kubo when
127 resolving `/ipns/{libp2p-key}` content paths.
128
129 Kubo continues publishing backward-compatible V1+V2 records that can be
130 resolved by V1-only (go-ipfs <0.9.0) clients.
131
132 More details can be found in _Backward Compatibility_, _Record Creation_, and
133 _Record Verification_ sections of the [updated IPNS
134 specification](https://github.com/ipfs/specs/pull/319/files).
135
136 ### 🌉 Web Gateways now support `_redirects` files
137
138 This feature enables support for redirects, single-page applications (SPA),
139 custom 404 pages, and moving to IPFS-backed website hosting
140 [without breaking existing HTTP links](https://www.w3.org/Provider/Style/URI).
141
142 It is limited to websites hosted in web contexts with unique
143 [Origins](https://en.wikipedia.org/wiki/Same-origin_policy), such as
144 [subdomain](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway) and
145 [DNSLink](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#dnslink-gateway) gateways.
146 Redirect logic is evaluated only if the requested path is not in the DAG.
147
148 See more details and usage examples see
149 [docs.ipfs.tech: _Redirects, custom 404s, and SPA support_](https://docs.ipfs.tech/how-to/websites-on-ipfs/redirects-and-custom-404s/).
150
151 ### 😻 Add files to MFS with `ipfs add --to-files`
152
153 Users no longer need to call `ipfs files cp` after `ipfs add` to create a
154 reference in [MFS](https://docs.ipfs.tech/concepts/glossary/#mfs), or deal with
155 low level pins if they do not wish to do so. It is now possible to pass MFS
156 path in an optional `--to-files` to add data directly to MFS, without creating
157 a low level pin.
158
159 Before (Kubo <0.16.0):
160
161
162 ```console
163 $ ipfs add cat.jpg
164 QmCID
165 $ ipfs files cp /ipfs/QmCID /mfs-cats/cat.jpg
166 $ ipfs pin rm QmCID # removing low level pin, since MFS is protecting from gc
167 ```
168
169 Kubo 0.16.0 collapses the above steps into one:
170
171 ```console
172 $ ipfs add --pin=false cat.jpg --to-files /mfs-cats/
173 ```
174
175 A recursive add to MFS works too (below line will create `/lots-of-cats/` directory in MFS):
176
177 ```console
178 $ ipfs add -r ./lots-of-cats/ --to-files /
179 ```
180
181 For more information, see `ipfs add --help` and `ipfs files --help`.
182
183 ### Changelog
184
185 <details>
186 <summary>Full Changelog</summary>
187
188 - github.com/ipfs/kubo:
189 - fix: Set default Methods value to nil
190 - docs: document remaining 0.16.0 features
191 - docs: add WebTransport docs ([ipfs/kubo#9308](https://github.com/ipfs/kubo/pull/9308))
192 - chore: bump version to 0.16.0-rc1
193 - fix: ensure hasher is registered when using a hashing function
194 - feat: add webtransport as an option transport ([ipfs/kubo#9293](https://github.com/ipfs/kubo/pull/9293))
195 - feat(gateway): _redirects file support (#8890) ([ipfs/kubo#8890](https://github.com/ipfs/kubo/pull/8890))
196 - docs: fix typo in changelog-v0.16.0.md
197 - Readme: Rewrite introduction and featureset (#9211) ([ipfs/kubo#9211](https://github.com/ipfs/kubo/pull/9211))
198 - feat: Delegated routing with custom configuration. (#9274) ([ipfs/kubo#9274](https://github.com/ipfs/kubo/pull/9274))
199 - Add <protocols> to `ipfs id -h` options (#9229) ([ipfs/kubo#9229](https://github.com/ipfs/kubo/pull/9229))
200 - chore: bump go-libp2p v0.23.1 ([ipfs/kubo#9285](https://github.com/ipfs/kubo/pull/9285))
201 - feat(cmds/add): --to-files option automates files cp (#8927) ([ipfs/kubo#8927](https://github.com/ipfs/kubo/pull/8927))
202 - docs: fix broken ENS DoH example (#9281) ([ipfs/kubo#9281](https://github.com/ipfs/kubo/pull/9281))
203 - ([ipfs/kubo#9258](https://github.com/ipfs/kubo/pull/9258))
204 - ([ipfs/kubo#9213](https://github.com/ipfs/kubo/pull/9213))
205 - docs: small typo in Dockerfile
206 - feat: ipfs-webui v2.18.1
207 - feat: ipfs-webui v2.18.0 (#9262) ([ipfs/kubo#9262](https://github.com/ipfs/kubo/pull/9262))
208 - bump go-libp2p v0.22.0 & go1.18&go1.19 ([ipfs/kubo#9244](https://github.com/ipfs/kubo/pull/9244))
209 - docs: change windows choco install command to point to go-ipfs
210 - fix: pass the repo directory into the ignored_commit function
211 - docs(cmds): daemon: update DHTClient description
212 - fix(gw): send 200 for empty files
213 - docs(readme): official vs unofficial packages
214 - chore: remove Gateway.PathPrefixes
215 - docs(readme): update Docker section
216 - docs: fix markdown syntax typo in v0.15's changelog
217 - chore: Release v0.15.0 ([ipfs/kubo#9236](https://github.com/ipfs/kubo/pull/9236))
218 - chore: fix undiallable api and gateway files ([ipfs/kubo#9233](https://github.com/ipfs/kubo/pull/9233))
219 - chore: Bump version to 0.16.0-dev
220 - github.com/ipfs/go-bitswap (v0.9.0 -> v0.10.2):
221 - chore: release v0.10.2
222 - fix: create a copy of the protocol slice in network.processSettings
223 - chore: release v0.10.1
224 - fix: incorrect type in the WithTracer polyfill option
225 - chore: fix incorrect log message when a bad option is passed
226 - chore: release v0.10.0
227 - chore: update go-libp2p v0.22.0
228 - github.com/ipfs/go-cid (v0.2.0 -> v0.3.2):
229 - chore: release v0.3.2
230 - Revert "fix: bring back, but deprecate CodecToStr and Codecs"
231 - chore: release v0.2.1
232 - fix: bring back, but deprecate CodecToStr and Codecs
233 - run gofmt -s
234 - bump go.mod to Go 1.18 and run go fix
235 - chore: release v0.3.0
236 - fix: return nil Bytes() if the Cid in undef
237 - Add MustParse ([ipfs/go-cid#139](https://github.com/ipfs/go-cid/pull/139))
238 - github.com/ipfs/go-datastore (v0.5.1 -> v0.6.0):
239 - Release v0.6.0 (#194) ([ipfs/go-datastore#194](https://github.com/ipfs/go-datastore/pull/194))
240 - feat: add Features + datastore scoping
241 - chore: Fix comment typo (#191) ([ipfs/go-datastore#191](https://github.com/ipfs/go-datastore/pull/191))
242 - github.com/ipfs/go-delegated-routing (v0.3.0 -> v0.6.0):
243 - ([ipfs/go-delegated-routing#53](https://github.com/ipfs/go-delegated-routing/pull/53))
244 - ([ipfs/go-delegated-routing#52](https://github.com/ipfs/go-delegated-routing/pull/52))
245 - Release v0.5.2 (#50) ([ipfs/go-delegated-routing#50](https://github.com/ipfs/go-delegated-routing/pull/50))
246 - Fixed serialisation issue with multiadds (#49) ([ipfs/go-delegated-routing#49](https://github.com/ipfs/go-delegated-routing/pull/49))
247 - Upgrade to IPLD `0.18.0`
248 - Release v0.5.0 (#47) ([ipfs/go-delegated-routing#47](https://github.com/ipfs/go-delegated-routing/pull/47))
249 - feat: use GET for FindProviders (#46) ([ipfs/go-delegated-routing#46](https://github.com/ipfs/go-delegated-routing/pull/46))
250 - Update provide to take an array of keys, per spec (#45) ([ipfs/go-delegated-routing#45](https://github.com/ipfs/go-delegated-routing/pull/45))
251 - ([ipfs/go-delegated-routing#44](https://github.com/ipfs/go-delegated-routing/pull/44))
252 - fix: upgrade edelweiss and rerun 'go generate' (#42) ([ipfs/go-delegated-routing#42](https://github.com/ipfs/go-delegated-routing/pull/42))
253 - ci: add check to ensure generated files are up-to-date (#41) ([ipfs/go-delegated-routing#41](https://github.com/ipfs/go-delegated-routing/pull/41))
254 - Add Provide RPC (#37) ([ipfs/go-delegated-routing#37](https://github.com/ipfs/go-delegated-routing/pull/37))
255 - upgrade to go-log/v2 (#34) ([ipfs/go-delegated-routing#34](https://github.com/ipfs/go-delegated-routing/pull/34))
256 - github.com/ipfs/go-ipns (v0.1.2 -> v0.3.0):
257 - fix: require V2 signatures ([ipfs/go-ipns#41](https://github.com/ipfs/go-ipns/pull/41))
258 - update go-libp2p to v0.22.0, release v0.2.0 (#39) ([ipfs/go-ipns#39](https://github.com/ipfs/go-ipns/pull/39))
259 - use peer.IDFromBytes instead of peer.IDFromString (#38) ([ipfs/go-ipns#38](https://github.com/ipfs/go-ipns/pull/38))
260 - sync: update CI config files (#34) ([ipfs/go-ipns#34](https://github.com/ipfs/go-ipns/pull/34))
261 - github.com/ipfs/go-pinning-service-http-client (v0.1.1 -> v0.1.2):
262 - chore: release v0.1.2
263 - fix: send up to nanosecond precision
264 - refactor: cleanup Sprintf for Bearer token
265 - sync: update CI config files ([ipfs/go-pinning-service-http-client#21](https://github.com/ipfs/go-pinning-service-http-client/pull/21))
266 - github.com/ipld/edelweiss (v0.1.4 -> v0.2.0):
267 - Release v0.2.0 (#60) ([ipld/edelweiss#60](https://github.com/ipld/edelweiss/pull/60))
268 - feat: add cacheable modifier to methods (#48) ([ipld/edelweiss#48](https://github.com/ipld/edelweiss/pull/48))
269 - adding licenses (#52) ([ipld/edelweiss#52](https://github.com/ipld/edelweiss/pull/52))
270 - sync: update CI config files ([ipld/edelweiss#56](https://github.com/ipld/edelweiss/pull/56))
271 - chore: replace deprecated ioutil with io/os ([ipld/edelweiss#59](https://github.com/ipld/edelweiss/pull/59))
272 - Release v0.1.6
273 - fix: iterate over BlueMap in deterministic order (#57) ([ipld/edelweiss#57](https://github.com/ipld/edelweiss/pull/57))
274 - fix: wrap DAG-JSON serialization error (#55) ([ipld/edelweiss#55](https://github.com/ipld/edelweiss/pull/55))
275 - update examples and harness
276 - upgrade to go-log/v2 (#53) ([ipld/edelweiss#53](https://github.com/ipld/edelweiss/pull/53))
277 - github.com/ipld/go-ipld-prime (v0.17.0 -> v0.18.0):
278 - Prepare v0.18.0
279 - feat(bindnode): add a BindnodeRegistry utility (#437) ([ipld/go-ipld-prime#437](https://github.com/ipld/go-ipld-prime/pull/437))
280 - feat(bindnode): support full uint64 range
281 - chore(bindnode): remove typed functions for options
282 - chore(bindnode): docs and minor tweaks
283 - feat(bindnode): make Any converters work for List and Map values
284 - fix(bindnode): shorten converter option names, minor perf improvements
285 - fix(bindnode): only custom convert AssignNull for Any converter
286 - feat(bindnode): pass Null on to nullable custom converters
287 - chore(bindnode): config helper refactor w/ short-circuit
288 - feat(bindnode): add AddCustomTypeAnyConverter() to handle `Any` fields
289 - feat(bindnode): add AddCustomTypeXConverter() options for most scalar kinds
290 - chore(bindnode): back out of reflection for converters
291 - feat(bindnode): switch to converter functions instead of type
292 - feat(bindnode): allow custom type conversions with options
293 - feat: add release checklist (#442) ([ipld/go-ipld-prime#442](https://github.com/ipld/go-ipld-prime/pull/442))
294 - github.com/libp2p/go-flow-metrics (v0.0.3 -> v0.1.0):
295 - introduce an API to set a mock clock (#20) ([libp2p/go-flow-metrics#20](https://github.com/libp2p/go-flow-metrics/pull/20))
296 - chore: skip slow tests when short testing is specified ([libp2p/go-flow-metrics#16](https://github.com/libp2p/go-flow-metrics/pull/16))
297 - github.com/libp2p/go-libp2p (v0.21.0 -> v0.23.2):
298 - release v0.23.2 (#1781) ([libp2p/go-libp2p#1781](https://github.com/libp2p/go-libp2p/pull/1781))
299 - webtransport: return error before wrapping opened / accepted streams (#1775) ([libp2p/go-libp2p#1775](https://github.com/libp2p/go-libp2p/pull/1775))
300 - release v0.23.1 (#1773) ([libp2p/go-libp2p#1773](https://github.com/libp2p/go-libp2p/pull/1773))
301 - websocket: fix nil pointer in tlsClientConf (#1770) ([libp2p/go-libp2p#1770](https://github.com/libp2p/go-libp2p/pull/1770))
302 - release v0.23.0 (#1764) ([libp2p/go-libp2p#1764](https://github.com/libp2p/go-libp2p/pull/1764))
303 - noise: switch to proto2, use the new NoiseExtensions protobuf ([libp2p/go-libp2p#1762](https://github.com/libp2p/go-libp2p/pull/1762))
304 - webtransport: add custom resolver to add SNI (#1761) ([libp2p/go-libp2p#1761](https://github.com/libp2p/go-libp2p/pull/1761))
305 - swarm: skip dialing WebTransport addresses when we have QUIC addresses (#1756) ([libp2p/go-libp2p#1756](https://github.com/libp2p/go-libp2p/pull/1756))
306 - webtransport: have the server send the certificates (#1757) ([libp2p/go-libp2p#1757](https://github.com/libp2p/go-libp2p/pull/1757))
307 - noise: make it possible for the server to send early data (#1750) ([libp2p/go-libp2p#1750](https://github.com/libp2p/go-libp2p/pull/1750))
308 - swarm: fix selection of transport for dialing (#1653) ([libp2p/go-libp2p#1653](https://github.com/libp2p/go-libp2p/pull/1653))
309 - autorelay: Add a context.Context to WithPeerSource callback (#1736) ([libp2p/go-libp2p#1736](https://github.com/libp2p/go-libp2p/pull/1736))
310 - webtransport: add and check the ?type=noise URL parameter (#1749) ([libp2p/go-libp2p#1749](https://github.com/libp2p/go-libp2p/pull/1749))
311 - webtransport: disable HTTP origin check (#1752) ([libp2p/go-libp2p#1752](https://github.com/libp2p/go-libp2p/pull/1752))
312 - noise: don't fail handshake when early data is received without handler (#1746) ([libp2p/go-libp2p#1746](https://github.com/libp2p/go-libp2p/pull/1746))
313 - Add Resolver interface to transport (#1719) ([libp2p/go-libp2p#1719](https://github.com/libp2p/go-libp2p/pull/1719))
314 - use new /libp2p/go-libp2p/core pkg (#1745) ([libp2p/go-libp2p#1745](https://github.com/libp2p/go-libp2p/pull/1745))
315 - yamux: pass constructors for peer resource scopes to session constructor (#1739) ([libp2p/go-libp2p#1739](https://github.com/libp2p/go-libp2p/pull/1739))
316 - tcp: add an option to enable metrics (disabled by default) (#1734) ([libp2p/go-libp2p#1734](https://github.com/libp2p/go-libp2p/pull/1734))
317 - move go-libp2p-webtransport to p2p/transport/webtransport ([libp2p/go-libp2p#1737](https://github.com/libp2p/go-libp2p/pull/1737))
318 - autorelay: fix race condition in TestBackoff (#1731) ([libp2p/go-libp2p#1731](https://github.com/libp2p/go-libp2p/pull/1731))
319 - rcmgr: increase default connection memory limit to 32 MB (#1740) ([libp2p/go-libp2p#1740](https://github.com/libp2p/go-libp2p/pull/1740))
320 - quic: update quic-go to v0.29.0 (#1723) ([libp2p/go-libp2p#1723](https://github.com/libp2p/go-libp2p/pull/1723))
321 - noise: implement an API to send and receive early data ([libp2p/go-libp2p#1728](https://github.com/libp2p/go-libp2p/pull/1728))
322 - identify: make the protocol version configurable (#1724) ([libp2p/go-libp2p#1724](https://github.com/libp2p/go-libp2p/pull/1724))
323 - Fix threshold calculation (#1722) ([libp2p/go-libp2p#1722](https://github.com/libp2p/go-libp2p/pull/1722))
324 - connmgr: use clock interface (#1720) ([libp2p/go-libp2p#1720](https://github.com/libp2p/go-libp2p/pull/1720))
325 - quic: increase the buffer size used for encoding qlogs (#1715) ([libp2p/go-libp2p#1715](https://github.com/libp2p/go-libp2p/pull/1715))
326 - quic: add a WithMetrics option (#1716) ([libp2p/go-libp2p#1716](https://github.com/libp2p/go-libp2p/pull/1716))
327 - add default listen addresses for QUIC (#1615) ([libp2p/go-libp2p#1615](https://github.com/libp2p/go-libp2p/pull/1615))
328 - feat: inject DNS resolver (#1607) ([libp2p/go-libp2p#1607](https://github.com/libp2p/go-libp2p/pull/1607))
329 - connmgr: prefer peers with no streams when closing connections (#1675) ([libp2p/go-libp2p#1675](https://github.com/libp2p/go-libp2p/pull/1675))
330 - quic: add DisableReuseport option (#1476) ([libp2p/go-libp2p#1476](https://github.com/libp2p/go-libp2p/pull/1476))
331 - release v0.22.0 ([libp2p/go-libp2p#1688](https://github.com/libp2p/go-libp2p/pull/1688))
332 - fix: don't prefer local ports from other addresses when dialing (#1673) ([libp2p/go-libp2p#1673](https://github.com/libp2p/go-libp2p/pull/1673))
333 - crypto: add better support for alternative backends (#1686) ([libp2p/go-libp2p#1686](https://github.com/libp2p/go-libp2p/pull/1686))
334 - crypto/secp256k1: Remove btcsuite intermediary. (#1689) ([libp2p/go-libp2p#1689](https://github.com/libp2p/go-libp2p/pull/1689))
335 - Update resource manager README (#1684) ([libp2p/go-libp2p#1684](https://github.com/libp2p/go-libp2p/pull/1684))
336 - move go-libp2p-core here ([libp2p/go-libp2p#1683](https://github.com/libp2p/go-libp2p/pull/1683))
337 - rcmgr: make scaling changes more intuitive (#1685) ([libp2p/go-libp2p#1685](https://github.com/libp2p/go-libp2p/pull/1685))
338 - move go-eventbus here ([libp2p/go-libp2p#1681](https://github.com/libp2p/go-libp2p/pull/1681))
339 - basichost: remove usage of MultistreamServerMatcher in test (#1680) ([libp2p/go-libp2p#1680](https://github.com/libp2p/go-libp2p/pull/1680))
340 - sync: update CI config files (#1678) ([libp2p/go-libp2p#1678](https://github.com/libp2p/go-libp2p/pull/1678))
341 - move go-libp2p-resource-manager to p2p/host/resource-manager ([libp2p/go-libp2p#1677](https://github.com/libp2p/go-libp2p/pull/1677))
342 - chore: preallocate slices with known final size (#1679) ([libp2p/go-libp2p#1679](https://github.com/libp2p/go-libp2p/pull/1679))
343 - autorelay: fix flaky TestMaxAge (#1676) ([libp2p/go-libp2p#1676](https://github.com/libp2p/go-libp2p/pull/1676))
344 - move go-libp2p-peerstore to p2p/host/peerstore ([libp2p/go-libp2p#1667](https://github.com/libp2p/go-libp2p/pull/1667))
345 - examples: remove ipfs components from echo (#1672) ([libp2p/go-libp2p#1672](https://github.com/libp2p/go-libp2p/pull/1672))
346 - chore: update libp2p to v0.21 in examples (#1674) ([libp2p/go-libp2p#1674](https://github.com/libp2p/go-libp2p/pull/1674))
347 - change the default key type to Ed25519 (#1576) ([libp2p/go-libp2p#1576](https://github.com/libp2p/go-libp2p/pull/1576))
348 - autorelay: poll for new candidates when needed ([libp2p/go-libp2p#1587](https://github.com/libp2p/go-libp2p/pull/1587))
349 - examples: fix unresponsive pubsub chat example (#1652) ([libp2p/go-libp2p#1652](https://github.com/libp2p/go-libp2p/pull/1652))
350 - routed: respect force direct dial context (#1665) ([libp2p/go-libp2p#1665](https://github.com/libp2p/go-libp2p/pull/1665))
351 - pstoremanager: fix flaky TestClose (#1649) ([libp2p/go-libp2p#1649](https://github.com/libp2p/go-libp2p/pull/1649))
352 - Allow adding prologue to noise connections (#1663) ([libp2p/go-libp2p#1663](https://github.com/libp2p/go-libp2p/pull/1663))
353 - connmgr: add nowatchdog go build tag (#1666) ([libp2p/go-libp2p#1666](https://github.com/libp2p/go-libp2p/pull/1666))
354 - mdns: don't discover ourselves (#1661) ([libp2p/go-libp2p#1661](https://github.com/libp2p/go-libp2p/pull/1661))
355 - Support generating custom x509 certificates (#1481) ([libp2p/go-libp2p#1481](https://github.com/libp2p/go-libp2p/pull/1481))
356 - github.com/libp2p/go-libp2p-core (v0.19.1 -> v0.20.1):
357 - chore: release v0.20.1
358 - feat: forward crypto/pb
359 - release v0.20.0
360 - deprecate this repo
361 - stop using the deprecated io/ioutil package (#279) ([libp2p/go-libp2p-core#279](https://github.com/libp2p/go-libp2p-core/pull/279))
362 - use a mock clock in bandwidth tests (#276) ([libp2p/go-libp2p-core#276](https://github.com/libp2p/go-libp2p-core/pull/276))
363 - remove unused MultistreamSemverMatcher (#277) ([libp2p/go-libp2p-core#277](https://github.com/libp2p/go-libp2p-core/pull/277))
364 - remove peer.IDFromString (#274) ([libp2p/go-libp2p-core#274](https://github.com/libp2p/go-libp2p-core/pull/274))
365 - deprecate peer.Encode in favor of peer.ID.String (#275) ([libp2p/go-libp2p-core#275](https://github.com/libp2p/go-libp2p-core/pull/275))
366 - deprecate peer.ID.Pretty (#273) ([libp2p/go-libp2p-core#273](https://github.com/libp2p/go-libp2p-core/pull/273))
367 - github.com/libp2p/go-libp2p-kad-dht (v0.17.0 -> v0.18.0):
368 - update go-libp2p to v0.22.0, release v0.18.0 ([libp2p/go-libp2p-kad-dht#788](https://github.com/libp2p/go-libp2p-kad-dht/pull/788))
369 - sync: update CI config files (#789) ([libp2p/go-libp2p-kad-dht#789](https://github.com/libp2p/go-libp2p-kad-dht/pull/789))
370 - github.com/libp2p/go-libp2p-peerstore (v0.7.1 -> v0.8.0):
371 - release v0.8.0
372 - deprecate this repo
373 - fix flaky TestGCDelay (#206) ([libp2p/go-libp2p-peerstore#206](https://github.com/libp2p/go-libp2p-peerstore/pull/206))
374 - fix flaky EWMA test (#205) ([libp2p/go-libp2p-peerstore#205](https://github.com/libp2p/go-libp2p-peerstore/pull/205))
375 - github.com/libp2p/go-libp2p-record (v0.1.3 -> v0.2.0):
376 - update go-libp2p to v0.22.0, release v0.2.0 ([libp2p/go-libp2p-record#50](https://github.com/libp2p/go-libp2p-record/pull/50))
377 - sync: update CI config files (#47) ([libp2p/go-libp2p-record#47](https://github.com/libp2p/go-libp2p-record/pull/47))
378 - increase RSA key sizes in tests ([libp2p/go-libp2p-record#44](https://github.com/libp2p/go-libp2p-record/pull/44))
379 - cleanup: fix staticcheck failures ([libp2p/go-libp2p-record#43](https://github.com/libp2p/go-libp2p-record/pull/43))
380 - github.com/libp2p/go-libp2p-routing-helpers (v0.2.3 -> v0.4.0):
381 - ([libp2p/go-libp2p-routing-helpers#62](https://github.com/libp2p/go-libp2p-routing-helpers/pull/62))
382 - ([libp2p/go-libp2p-routing-helpers#58](https://github.com/libp2p/go-libp2p-routing-helpers/pull/58))
383 - Update version.json ([libp2p/go-libp2p-routing-helpers#60](https://github.com/libp2p/go-libp2p-routing-helpers/pull/60))
384 - update go-libp2p to v0.22.0 ([libp2p/go-libp2p-routing-helpers#59](https://github.com/libp2p/go-libp2p-routing-helpers/pull/59))
385 - sync: update CI config files (#53) ([libp2p/go-libp2p-routing-helpers#53](https://github.com/libp2p/go-libp2p-routing-helpers/pull/53))
386 - fix staticcheck ([libp2p/go-libp2p-routing-helpers#49](https://github.com/libp2p/go-libp2p-routing-helpers/pull/49))
387 - fix error handling in Parallel.search ([libp2p/go-libp2p-routing-helpers#48](https://github.com/libp2p/go-libp2p-routing-helpers/pull/48))
388 - github.com/libp2p/go-libp2p-testing (v0.11.0 -> v0.12.0):
389 - release v0.12.0 (#67) ([libp2p/go-libp2p-testing#67](https://github.com/libp2p/go-libp2p-testing/pull/67))
390 - chore: update to go-libp2p v0.22.0 (#66) ([libp2p/go-libp2p-testing#66](https://github.com/libp2p/go-libp2p-testing/pull/66))
391 - remove the resource manager mocks (#65) ([libp2p/go-libp2p-testing#65](https://github.com/libp2p/go-libp2p-testing/pull/65))
392 - github.com/libp2p/go-openssl (v0.0.7 -> v0.1.0):
393 - release v0.1.0 (#31) ([libp2p/go-openssl#31](https://github.com/libp2p/go-openssl/pull/31))
394 - Fix build with OpenSSL 3.0 (#25) ([libp2p/go-openssl#25](https://github.com/libp2p/go-openssl/pull/25))
395 - sync: update CI config files ([libp2p/go-openssl#24](https://github.com/libp2p/go-openssl/pull/24))
396 - Add openssl.DialTimeout(network, addr, timeout, ctx, flags) call ([libp2p/go-openssl#26](https://github.com/libp2p/go-openssl/pull/26))
397 - Add Ctx.SetMinProtoVersion and Ctx.SetMaxProtoVersion wrappers ([libp2p/go-openssl#27](https://github.com/libp2p/go-openssl/pull/27))
398 - sync: update CI config files ([libp2p/go-openssl#17](https://github.com/libp2p/go-openssl/pull/17))
399 - fix: unsafe pointer passing ([libp2p/go-openssl#18](https://github.com/libp2p/go-openssl/pull/18))
400 - Update test RSA cert ([libp2p/go-openssl#15](https://github.com/libp2p/go-openssl/pull/15))
401 - Fix tests ([libp2p/go-openssl#16](https://github.com/libp2p/go-openssl/pull/16))
402 - Address `staticcheck` issues ([libp2p/go-openssl#14](https://github.com/libp2p/go-openssl/pull/14))
403 - Enabled PEM files with CRLF line endings to be used (#10) ([libp2p/go-openssl#11](https://github.com/libp2p/go-openssl/pull/11))
404 - github.com/libp2p/zeroconf/v2 (v2.1.1 -> v2.2.0):
405 - Fix windows libp2p (#29) ([libp2p/zeroconf#29](https://github.com/libp2p/zeroconf/pull/29))
406 - Fix compatibility with some IoT devices using avahi 0.8-rc1 (#27) ([libp2p/zeroconf#27](https://github.com/libp2p/zeroconf/pull/27))
407 - Add TTL server option (#23) ([libp2p/zeroconf#23](https://github.com/libp2p/zeroconf/pull/23))
408 - github.com/lucas-clemente/quic-go (v0.28.0 -> v0.29.1):
409 - http3: fix double close of chan when using DontCloseRequestStream
410 - add a logging.NullTracer and logging.NullConnectionTracer ([lucas-clemente/quic-go#3512](https://github.com/lucas-clemente/quic-go/pull/3512))
411 - add support for providing a custom Connection ID generator via Config (#3452) ([lucas-clemente/quic-go#3452](https://github.com/lucas-clemente/quic-go/pull/3452))
412 - fix typo in README
413 - fix datagram support detection (#3511) ([lucas-clemente/quic-go#3511](https://github.com/lucas-clemente/quic-go/pull/3511))
414 - use a single Go routine to send copies of CONNECTION_CLOSE packets ([lucas-clemente/quic-go#3514](https://github.com/lucas-clemente/quic-go/pull/3514))
415 - add YoMo to list of projects in README (#3513) ([lucas-clemente/quic-go#3513](https://github.com/lucas-clemente/quic-go/pull/3513))
416 - http3: fix listening on both QUIC and TCP (#3465) ([lucas-clemente/quic-go#3465](https://github.com/lucas-clemente/quic-go/pull/3465))
417 - Disable anti-amplification limit by address validation token (#3326) ([lucas-clemente/quic-go#3326](https://github.com/lucas-clemente/quic-go/pull/3326))
418 - fix typo in README
419 - implement a new API to let servers control client address verification ([lucas-clemente/quic-go#3501](https://github.com/lucas-clemente/quic-go/pull/3501))
420 - use a generic streams map for incoming streams ([lucas-clemente/quic-go#3489](https://github.com/lucas-clemente/quic-go/pull/3489))
421 - fix unreachable code after log.Fatal in fuzzing corpus generator (#3496) ([lucas-clemente/quic-go#3496](https://github.com/lucas-clemente/quic-go/pull/3496))
422 - use generic Min and Max functions ([lucas-clemente/quic-go#3483](https://github.com/lucas-clemente/quic-go/pull/3483))
423 - add QPACK (RFC 9204) to the list of supported RFCs (#3485) ([lucas-clemente/quic-go#3485](https://github.com/lucas-clemente/quic-go/pull/3485))
424 - add a function to distinguish between long and short header packets (#3498) ([lucas-clemente/quic-go#3498](https://github.com/lucas-clemente/quic-go/pull/3498))
425 - use a generic streams map for outgoing streams (#3488) ([lucas-clemente/quic-go#3488](https://github.com/lucas-clemente/quic-go/pull/3488))
426 - update golangci-lint action to v3, golangci-lint to v1.48.0 (#3499) ([lucas-clemente/quic-go#3499](https://github.com/lucas-clemente/quic-go/pull/3499))
427 - use a generic linked list (#3487) ([lucas-clemente/quic-go#3487](https://github.com/lucas-clemente/quic-go/pull/3487))
428 - drop support for Go 1.16 and 1.17 (#3482) ([lucas-clemente/quic-go#3482](https://github.com/lucas-clemente/quic-go/pull/3482))
429 - optimize FirstOutstanding in the sent packet history (#3467) ([lucas-clemente/quic-go#3467](https://github.com/lucas-clemente/quic-go/pull/3467))
430 - update supported RFCs in README (#3456) ([lucas-clemente/quic-go#3456](https://github.com/lucas-clemente/quic-go/pull/3456))
431 - http3: ignore context after response when using DontCloseRequestStream (#3473) ([lucas-clemente/quic-go#3473](https://github.com/lucas-clemente/quic-go/pull/3473))
432 - github.com/marten-seemann/webtransport-go (null -> v0.1.1):
433 - release v0.1.1 (#31) ([marten-seemann/webtransport-go#31](https://github.com/marten-seemann/webtransport-go/pull/31))
434 - fix double close of chan when using DontCloseRequestStream
435 - github.com/multiformats/go-base32 (v0.0.4 -> v0.1.0):
436 - chore: bump version to 0.1.0
437 - fix: fix staticcheck complaints
438 - run gofmt -s
439 - sync: update CI config files (#5) ([multiformats/go-base32#5](https://github.com/multiformats/go-base32/pull/5))
440 - github.com/multiformats/go-multiaddr (v0.6.0 -> v0.7.0):
441 - Release v0.7.0 ([multiformats/go-multiaddr#183](https://github.com/multiformats/go-multiaddr/pull/183))
442 - use decimal numbers for multicodecs ([multiformats/go-multiaddr#184](https://github.com/multiformats/go-multiaddr/pull/184))
443 - Fix comment on Decapsulate ([multiformats/go-multiaddr#181](https://github.com/multiformats/go-multiaddr/pull/181))
444 - ([multiformats/go-multiaddr#182](https://github.com/multiformats/go-multiaddr/pull/182))
445 - sync: update CI config files (#180) ([multiformats/go-multiaddr#180](https://github.com/multiformats/go-multiaddr/pull/180))
446 - Add webrtc (#179) ([multiformats/go-multiaddr#179](https://github.com/multiformats/go-multiaddr/pull/179))
447 - github.com/multiformats/go-multicodec (v0.5.0 -> v0.6.0):
448 - chore: version bump 0.6.0
449 - fix: replace io/ioutil with io
450 - bump go.mod to Go 1.18 and run go fix
451
452 </details>
453
454 ### Contributors
455
456 | Contributor | Commits | Lines ± | Files Changed |
457 |-------------|---------|---------|---------------|
458 | Marten Seemann | 236 | +12637/-24326 | 1152 |
459 | Raúl Kripalani | 118 | +11626/-4136 | 422 |
460 | vyzo | 144 | +10129/-3665 | 230 |
461 | galargh | 9 | +5293/-5298 | 26 |
462 | Marco Munizaga | 83 | +7502/-3080 | 147 |
463 | Antonio Navarro Perez | 33 | +4074/-1240 | 78 |
464 | Steven Allen | 98 | +1974/-1693 | 202 |
465 | Cole Brown | 57 | +2169/-1338 | 95 |
466 | Rod Vagg | 21 | +2588/-768 | 56 |
467 | Gus Eggert | 16 | +2011/-1226 | 36 |
468 | Yusef Napora | 6 | +2738/-187 | 43 |
469 | Raúl Kripalani | 2 | +1000/-889 | 18 |
470 | Łukasz Magiera | 26 | +1312/-500 | 54 |
471 | Will | 2 | +1593/-200 | 18 |
472 | Jorropo | 31 | +924/-712 | 204 |
473 | Juan Batiz-Benet | 2 | +1531/-9 | 21 |
474 | Jeromy | 14 | +691/-468 | 51 |
475 | Petar Maymounkov | 4 | +469/-285 | 25 |
476 | Jeromy Johnson | 24 | +474/-204 | 116 |
477 | Justin Johnson | 1 | +582/-93 | 7 |
478 | Aarsh Shah | 24 | +377/-105 | 34 |
479 | web3-bot | 18 | +246/-228 | 93 |
480 | Masih H. Derkani | 2 | +197/-213 | 21 |
481 | Marcin Rataj | 9 | +211/-176 | 16 |
482 | adam | 4 | +235/-49 | 9 |
483 | Jakub Sztandera | 9 | +203/-73 | 13 |
484 | Guilhem Fanton | 1 | +216/-48 | 5 |
485 | Lucas Molas | 1 | +219/-9 | 3 |
486 | Peter Argue | 1 | +166/-36 | 3 |
487 | Vibhav Pant | 4 | +186/-12 | 7 |
488 | Adrian Lanzafame | 3 | +180/-16 | 5 |
489 | Lars Gierth | 5 | +151/-41 | 25 |
490 | João Oliveirinha | 1 | +124/-38 | 11 |
491 | dignifiedquire | 3 | +122/-33 | 6 |
492 | Chinmay Kousik | 2 | +128/-4 | 7 |
493 | Toby | 1 | +89/-36 | 4 |
494 | Oleg Jukovec | 3 | +111/-14 | 8 |
495 | Whyrusleeping | 2 | +120/-0 | 6 |
496 | KevinZønda | 1 | +81/-20 | 2 |
497 | wzp | 2 | +86/-3 | 2 |
498 | Benedikt Spies | 1 | +75/-12 | 8 |
499 | nisainan | 1 | +33/-43 | 12 |
500 | Tshaka Eric Lekholoane | 1 | +57/-19 | 6 |
501 | cpuchip | 1 | +65/-6 | 2 |
502 | Roman Proskuryakov | 2 | +69/-0 | 2 |
503 | Arceliar | 2 | +36/-28 | 2 |
504 | Maxim Merzhanov | 1 | +29/-24 | 1 |
505 | Richard Ramos | 1 | +51/-0 | 2 |
506 | Dave Collins | 1 | +25/-25 | 4 |
507 | Leo Balduf | 2 | +37/-10 | 3 |
508 | David Aronchick | 1 | +42/-0 | 3 |
509 | Didrik Nordström | 1 | +35/-6 | 1 |
510 | Vasco Santos | 1 | +20/-20 | 7 |
511 | Jesse Bouwman | 1 | +19/-21 | 1 |
512 | Ivan Schasny | 2 | +22/-14 | 4 |
513 | MGMCN | 1 | +9/-24 | 2 |
514 | Brian Meek | 1 | +14/-17 | 4 |
515 | Ian Davis | 3 | +21/-9 | 5 |
516 | Mars Zuo | 1 | +7/-18 | 1 |
517 | RubenKelevra | 1 | +10/-10 | 1 |
518 | mojatter | 1 | +9/-8 | 1 |
519 | Cory Schwartz | 1 | +0/-17 | 1 |
520 | Steve Loeppky | 6 | +7/-6 | 6 |
521 | Matt Joiner | 2 | +10/-3 | 2 |
522 | Winterhuman | 2 | +7/-5 | 2 |
523 | Dmitry Yu Okunev | 1 | +5/-7 | 5 |
524 | corverroos | 1 | +7/-4 | 2 |
525 | Marcel Gregoriadis | 1 | +9/-0 | 1 |
526 | Ignacio Hagopian | 2 | +7/-2 | 2 |
527 | Julien Muret | 1 | +4/-4 | 2 |
528 | Eclésio Junior | 1 | +8/-0 | 1 |
529 | Stephan Eberle | 1 | +4/-3 | 1 |
530 | muXxer | 1 | +3/-3 | 1 |
531 | eth-limo | 1 | +3/-3 | 2 |
532 | Russell Dempsey | 2 | +4/-2 | 2 |
533 | Sergey | 1 | +1/-3 | 1 |
534 | Jun10ng | 2 | +2/-2 | 2 |
535 | Jorik Schellekens | 1 | +2/-2 | 1 |
536 | Eli Wang | 1 | +2/-2 | 1 |
537 | Andreas Linde | 1 | +4/-0 | 1 |
538 | whyrusleeping | 1 | +2/-1 | 1 |
539 | xiabin | 1 | +1/-1 | 1 |
540 | star | 1 | +0/-2 | 1 |
541 | fanweixiao | 1 | +1/-1 | 1 |
542 | dbadoy4874 | 1 | +1/-1 | 1 |
543 | bigs | 1 | +1/-1 | 1 |
544 | Tarun Bansal | 1 | +1/-1 | 1 |
545 | Mikerah | 1 | +1/-1 | 1 |
546 | Mike Goelzer | 1 | +2/-0 | 1 |
547 | Max Inden | 1 | +1/-1 | 1 |
548 | Kevin Mai-Husan Chia | 1 | +1/-1 | 1 |
549 | John B Nelson | 1 | +1/-1 | 1 |
550 | Eli Bailey | 1 | +1/-1 | 1 |
551 | Bryan Stenson | 1 | +1/-1 | 1 |
552 | Alex Stokes | 1 | +1/-1 | 1 |
553 | Abirdcfly | 1 | +1/-1 | 1 |