master
md 847 lines 62.3 KB
Rendered Raw
1 # Kubo changelog v0.18
2
3 ## v0.18.1
4
5 This release includes improvements around Pubsub message deduplication, libp2p resource management, and more.
6
7 <!-- TOC depthfrom:3 -->
8
9 - [Overview](#overview)
10 - [🔦 Highlights](#-highlights)
11 - [New default Pubsub.SeenMessagesStrategy](#new-default-pubsubseenmessagesstrategy)
12 - [Improving libp2p resource management integration](#improving-libp2p-resource-management-integration)
13 - [📝 Changelog](#-changelog)
14 - [👨‍👩‍👧‍👦 Contributors](#-contributors)
15
16 <!-- /TOC -->
17
18 ### 🔦 Highlights
19
20 #### New default `Pubsub.SeenMessagesStrategy`
21
22 A new optional [`Pubsub.SeenMessagesStrategy`](../config.md#pubsubseenmessagesstrategy) configuration option has been added.
23
24 This option allows you to choose between two different strategies for
25 deduplicating messages: `first-seen` and `last-seen`.
26
27 When unset, the default strategy is `last-seen`, which calculates the
28 time-to-live (TTL) countdown based on the last time a message is seen. This
29 means that if a message is received and then seen again within the specified
30 TTL window based on the last time it was seen, it won't be emitted.
31
32 If you prefer the old behavior, which calculates the TTL countdown based on the
33 first time a message is seen, you can set `Pubsub.SeenMessagesStrategy` to
34 `first-seen`.
35
36 #### Improving libp2p resource management integration
37
38 TL;DR: limit autoscaling improved, most users should start with default settings.
39 If you have old configuration, switch to implicit defaults:
40
41 ```
42 ipfs config --json -- Swarm.ResourceMgr '{}'
43 ipfs config --json -- Swarm.ConnMgr '{}'
44 ```
45
46 IF you run a server and want to utilize more than half of memory and file descriptors to p2p work, adjust [`Swarm.ResourceMgr.MaxMemory`](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgrmaxmemory) and [`Swarm.ResourceMgr.MaxFileDescriptors`](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmresourcemgrmaxfiledescriptors).
47
48 The 0.18.1 builds on the default protection nodes get against DoS (resource exhaustion) and eclipse attacks
49 with the [go-libp2p Network Resource Manager/Accountant](https://github.com/ipfs/kubo/blob/master/docs/libp2p-resource-management.md)
50 that was fine-tuned in [Kubo 0.18](https://github.com/ipfs/kubo/blob/biglep/resource-manager-example-of-what-want/docs/changelogs/v0.18.md#improving-libp2p-resource-management-integration).
51
52 Adding default hard-limits from the Resource Manager/Accountant after the fact is tricky,
53 and some additional improvements have been made to improve the [computed defaults](https://github.com/ipfs/kubo/blob/master/docs/libp2p-resource-management.md#computed-default-limits).
54
55 As much as possible, the aim is for a user to only think about how much memory they want to bound libp2p to,
56 and not need to think about translating that to hard numbers for connections, streams, etc.
57 More updates are likely in future Kubo releases, but with this release:
58 1. ``System.StreamsInbound`` is no longer bounded directly
59 2. ``System.ConnsInbound``, ``Transient.Memory``, ``Transient.ConnsInbound`` have higher default computed values.
60
61 ### 📝 Changelog
62
63 <details><summary>Full Changelog</summary>
64
65 - github.com/ipfs/kubo:
66 - Add overview section
67 - Adjust inbound connection limits depending on memory.
68 - feat: Pubsub.SeenMessagesStrategy (#9543) ([ipfs/kubo#9543](https://github.com/ipfs/kubo/pull/9543))
69 - chore: update version
70 - github.com/libp2p/go-libp2p-pubsub (v0.8.2 -> v0.8.3):
71 - feat: expire messages from the cache based on last seen time (#513) ([libp2p/go-libp2p-pubsub#513](https://github.com/libp2p/go-libp2p-pubsub/pull/513))
72
73 </details>
74
75 ### 👨‍👩‍👧‍👦 Contributors
76
77 | Contributor | Commits | Lines ± | Files Changed |
78 |-------------|---------|---------|---------------|
79 | Mohsin Zaidi | 2 | +511/-55 | 12 |
80 | Antonio Navarro Perez | 2 | +57/-57 | 5 |
81 | galargh | 1 | +1/-1 | 1 |
82
83 ## v0.18.0
84
85 ### Overview
86
87 Below is an outline of all that is in this release, so you get a sense of all that's included.
88
89 <!-- TOC depthfrom:3 -->
90
91 - [Overview](#overview)
92 - [🔦 Highlights](#-highlights)
93 - [Content routing](#content-routing)
94 - [Default InterPlanetary Network Indexer](#default-interplanetary-network-indexer)
95 - [Increase provider record republish interval and expiration](#increase-provider-record-republish-interval-and-expiration)
96 - [Gateways](#gateways)
97 - [(DAG-)JSON and (DAG-)CBOR response formats](#dag-json-and-dag-cbor-response-formats)
98 - [🐎 Fast directory listings with DAG sizes](#-fast-directory-listings-with-dag-sizes)
99 - [QUIC and WebTransport](#quic-and-webtransport)
100 - [WebTransport enabled by default](#webtransport-enabled-by-default)
101 - [QUIC and WebTransport share a single port](#quic-and-webtransport-share-a-single-port)
102 - [Differentiating QUIC versions](#differentiating-quic-versions)
103 - [QUICv1 and WebTransport config migration](#quicv1-and-webtransport-config-migration)
104 - [Improving libp2p resource management integration](#improving-libp2p-resource-management-integration)
105 - [📝 Changelog](#-changelog)
106 - [👨‍👩‍👧‍👦 Contributors](#-contributors)
107
108 <!-- /TOC -->
109
110 ### 🔦 Highlights
111
112 #### Content routing
113
114 ##### Default InterPlanetary Network Indexer
115
116 Content routing is the process of discovering which peers provide a piece of content. Kubo has traditionally only supported [libp2p's implementation of Kademlia DHT](https://github.com/libp2p/specs/tree/master/kad-dht) for content routing.
117
118 Kubo can now bridge networks by including support for the [delegated routing HTTP API](https://github.com/ipfs/specs/pull/337). Users can compose content routers using the `Routing.Routers` config to pick content routers with different tradeoffs than a Kademlia DHT (e.g., high-performance and high-capacity centralized endpoints, dedicated Kademlia DHT nodes, routers with unique provider records, privacy-focused content routers).
119
120 One example is [InterPlanetary Network Indexers](https://github.com/ipni/specs/blob/main/IPNI.md#readme), which are HTTP endpoints that cache records from both the IPFS network and other sources such as web3.storage and Filecoin. This improves not only content availability by enabling Kubo to transparently fetch content directly from Filecoin storage providers, but also improves IPFS content routing latency by an order of magnitude and decreases resource consumption.
121
122 > *Note:* it's possible to retrieve content stored by Filecoin Storage Providers (SPs) from Kubo if the SPs service Bitswap requests. As of this release, some SPs are advertising Bitswap. You can follow the roadmap progress for IPNIs and Bitswap in SPs [here](https://www.starmaps.app/roadmap/github.com/protocol/bedrock/issues/1).
123
124 In this release, the default content router is changed from `dht` to `auto`. The `auto` router includes the IPFS DHT in addition to the [cid.contact](https://cid.contact) IPNI instance. In future releases, we plan to expand the functionality of `auto` to encompass automatic discovery of content routers, which will improve performance and content availability (for example, see [IPIP-342](https://github.com/ipfs/specs/pull/342)).
125
126 Previous behavior can be restored by setting `Routing.Type` to `dht`.
127
128 Alternative routing rules, including alternative IPNI endpoints, can be configured in `Routing.Routers` after setting `Routing.Type` to `custom`.
129
130 Learn more in the [`Routing` docs](https://github.com/ipfs/kubo/blob/master/docs/config.md#routing).
131
132 ##### Increase provider record republish interval and expiration
133
134 Default `Reprovider.Interval` changed from 12h to 22h to match new defaults for the Provider Record Expiration (48h) in [go-libp2p-kad-dht v0.20.0](https://github.com/libp2p/go-libp2p-kad-dht/releases/tag/v0.20.0).
135
136 The rationale for increasing this can be found in
137 [RFM 17: Provider Record Liveness Report](https://github.com/protocol/network-measurements/blob/master/results/rfm17-provider-record-liveness.md),
138 [kubo#9326](https://github.com/ipfs/kubo/pull/9326),
139 and the upstream DHT specifications at [libp2p/specs#451](https://github.com/libp2p/specs/pull/451).
140
141 Learn more in the [`Reprovider` config](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#reprovider).
142
143 #### Gateways
144
145 ##### (DAG-)JSON and (DAG-)CBOR response formats
146
147 The IPFS project has reserved the corresponding media types at IANA:
148 - [`application/vnd.ipld.dag-json`](https://www.iana.org/assignments/media-types/application/vnd.ipld.dag-json)
149 - [`application/vnd.ipld.dag-cbor`](https://www.iana.org/assignments/media-types/application/vnd.ipld.dag-cbor)
150
151 This release implements them as part of [IPIP-328](https://github.com/ipfs/specs/pull/328)
152 and adds Gateway support for CIDs with `json` (0x0200), `cbor` (0x51),
153 [`dag-json`](https://ipld.io/specs/codecs/dag-json/) (0x0129)
154 and [`dag-cbor`](https://ipld.io/specs/codecs/dag-cbor/spec/) (0x71) codecs.
155
156 To specify the response `Content-Type` explicitly, the HTTP client can override
157 the codec present in the CID by using the `format` parameter
158 or setting the `Accept` HTTP header:
159
160 - Plain JSON: `?format=json` or `Accept: application/json`
161 - Plain CBOR: `?format=cbor` or `Accept: application/cbor`
162 - DAG-JSON: `?format=dag-json` or `Accept: application/vnd.ipld.dag-json`
163 - DAG-CBOR: `?format=dag-cbor` or `Accept: application/vnd.ipld.dag-cbor`
164
165 In addition, when DAG-JSON or DAG-CBOR is requested with the `Accept` header
166 set to `text/html`, the Gateway will return a basic HTML page with download
167 options, improving the user experience in web browsers.
168
169 ###### Example 1: DAG-CBOR and DAG-JSON Conversion on Gateway
170
171 The Gateway supports conversion between DAG-CBOR and DAG-JSON for efficient
172 end-to-end data structure management: author in CBOR or JSON, store as binary
173 CBOR and retrieve as JSON via HTTP:
174
175 ```console
176 $ echo '{"test": "json"}' | ipfs dag put # implicit --input-codec dag-json --store-codec dag-cbor
177 bafyreico7mjtqtqhvawro3yud5uqn6sc33nzqb7b5j2d7pdmzer5nab4t4
178
179 $ ipfs block get bafyreico7mjtqtqhvawro3yud5uqn6sc33nzqb7b5j2d7pdmzer5nab4t4 | xxd
180 00000000: a164 7465 7374 646a 736f 6e .dtestdjson
181
182 $ ipfs dag get bafyreico7mjtqtqhvawro3yud5uqn6sc33nzqb7b5j2d7pdmzer5nab4t4 # implicit --output-codec dag-json
183 {"test":"json"}
184
185 $ curl "http://127.0.0.1:8080/ipfs/bafyreico7mjtqtqhvawro3yud5uqn6sc33nzqb7b5j2d7pdmzer5nab4t4?format=dag-json"
186 {"test":"json"}
187 ```
188
189 ###### Example 2: Traversing CBOR DAGs
190
191 Placing a CID in [CBOR Tag 42](https://github.com/ipld/cid-cbor/) enables the
192 creation of arbitrary DAGs. The equivalent DAG-JSON notation for linking
193 to different blocks is represented by `{ "/": "cid" }`.
194
195 The Gateway supports traversing these links, enabling access to data
196 referenced by structures other than regular UnixFS directories:
197
198 ```console
199 $ echo '{"test.jpg": {"/": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}}' | ipfs dag put
200 bafyreihspwy3zlkzgphmec5d3xb5g5njrqwotd46lyubnelbzktnmsxkq4 # dag-cbor document linking to unixfs file
201
202 $ ipfs resolve /ipfs/bafyreihspwy3zlkzgphmec5d3xb5g5njrqwotd46lyubnelbzktnmsxkq4/test.jpg
203 /ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
204
205 $ ipfs dag stat bafyreihspwy3zlkzgphmec5d3xb5g5njrqwotd46lyubnelbzktnmsxkq4
206 Size: 119827, NumBlocks: 2
207
208 $ curl "http://127.0.0.1:8080/ipfs/bafyreihspwy3zlkzgphmec5d3xb5g5njrqwotd46lyubnelbzktnmsxkq4/test.jpg" > test.jpg
209 ```
210
211 ###### Example 3: UnixFS directory listing as JSON
212
213 Finally, Gateway now supports the same [logical format projection](https://ipld.io/specs/codecs/dag-pb/spec/#logical-format) from
214 DAG-PB to DAG-JSON as the `ipfs dag get` command, enabling the retrieval of directory listings as JSON instead of HTML:
215
216 ```console
217 $ export DIR_CID=bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
218 $ curl -H "Accept: application/vnd.ipld.dag-json" "http://127.0.0.1:8080/ipfs/$DIR_CID" | jq
219 $ curl "http://127.0.0.1:8080/ipfs/$DIR_CID?format=dag-json" | jq
220 {
221 "Data": {
222 "/": {
223 "bytes": "CAE"
224 }
225 },
226 "Links": [
227 {
228 "Hash": {
229 "/": "Qmc3zqKcwzbbvw3MQm3hXdg8BQoFjGdZiGdAfXAyAGGdLi"
230 },
231 "Name": "1 - Barrel - Part 1 - alt.txt",
232 "Tsize": 21
233 },
234 {
235 "Hash": {
236 "/": "QmdMxMx29KVYhHnaCc1icWYxQqXwUNCae6t1wS2NqruiHd"
237 },
238 "Name": "1 - Barrel - Part 1 - transcript.txt",
239 "Tsize": 195
240 },
241 {
242 "Hash": {
243 "/": "QmawceGscqN4o8Y8Fv26UUmB454kn2bnkXV5tEQYc4jBd6"
244 },
245 "Name": "1 - Barrel - Part 1.png",
246 "Tsize": 24862
247 }
248 ]
249 }
250 $ ipfs dag get $DIR_CID
251 {"Data":{"/":{"bytes":"CAE"}},"Links":[{"Hash":{"/":"Qmc3zqKcwzbbvw3MQm3hXdg8BQoFjGdZiGdAfXAyAGGdLi"},"Name":"1 - Barrel - Part 1 - alt.txt","Tsize":21},{"Hash":{"/":"QmdMxMx29KVYhHnaCc1icWYxQqXwUNCae6t1wS2NqruiHd"},"Name":"1 - Barrel - Part 1 - transcript.txt","Tsize":195},{"Hash":{"/":"QmawceGscqN4o8Y8Fv26UUmB454kn2bnkXV5tEQYc4jBd6"},"Name":"1 - Barrel - Part 1.png","Tsize":24862}]}
252 ```
253
254 ##### 🐎 Fast directory listings with DAG sizes
255
256 Fast listings are now enabled for _all_ UnixFS directories: big and small.
257 There is no linear slowdown caused by reading size metadata from child nodes,
258 and the size of DAG representing child items is always present.
259
260 As an example, the CID
261 `bafybeiggvykl7skb2ndlmacg2k5modvudocffxjesexlod2pfvg5yhwrqm` represents a UnixFS
262 directory with over 10k files. Listing big directories was fast
263 since Kubo 0.13, but in this release it will also include the size column.
264
265 #### QUIC and WebTransport
266
267 ##### WebTransport enabled by default
268 [WebTransport](https://web.archive.org/web/20260128152314/https://docs.libp2p.io/concepts/transports/webtransport/) is a new libp2p transport that [was introduced in v0.16](https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.16.md#-webtransport-new-experimental-transport) that is based on top of QUIC and HTTP3.
269
270 This allows browser-based nodes to contact Kubo nodes, so now instead of just serving requests for other system-level application nodes, you can also serve requests directly to a node running inside a browser page.
271
272 For the full story see [connectivity.libp2p.io](https://web.archive.org/web/20251118040510/https://connectivity.libp2p.io/).
273
274 ##### QUIC and WebTransport share a single port
275 WebTransport is enabled by default in part because [go-libp2p now supports running WebTransport and QUIC transports on the same QUIC listener](https://github.com/libp2p/go-libp2p/issues/1759). No additional port needs to be opened.
276
277 To use this feature, register two listen addresses on the same `/ipX/.../udp/XXX` prefix.
278
279 ##### Differentiating QUIC versions
280 go-libp2p now differentiates the first version of QUIC that was originally implemented, `Draft-29`, from the ratified protocol in [RFC9000](https://www.rfc-editor.org/rfc/rfc9000.html), `QUICv1`.
281 This was done for performance (time to first byte) reasons as [outlined here](https://github.com/multiformats/multiaddr/issues/145).
282
283 This manifests as two different multiaddr components `/quic` (old Draft-29) and `/quic-v1`.
284 go-libp2p do supports listening with both QUIC versions on one single listener.
285 WebTransport has only supported QUICv1.
286 `/webtransport` now needs to be prefixed by a `/quic-v1` component instead of a `/quic` component.
287
288 Support for QUIC Draft-29 will be removed at some point in 2023 ([tracking issue](https://github.com/ipfs/kubo/issues/9496)). As a result, new deployments should use `/quic-v1` instead of `/quic`.
289
290 ##### QUICv1 and WebTransport config migration
291 To support QUICv1 and WebTransport by default a new config migration (`v13`) is run which automatically adds entries in addresses-related fields:
292 - Replace all `/quic/webtransport` to `/quic-v1/webtransport`.
293 - For all `/quic` listeners, keep the Draft-29 listener, and on the same ip and port, add `/quic-v1` and `/quic-v1/webtransport` listeners.
294
295 #### Improving libp2p resource management integration
296 To help protect nodes from DoS (resource exhaustion) and eclipse attacks,
297 Kubo enabled the [go-libp2p Network Resource Manager](https://github.com/libp2p/go-libp2p/tree/master/p2p/host/resource-manager)
298 by default in [Kubo 0.17](https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.17.md#libp2p-resource-management-enabled-by-default).
299
300 Introducing limits like this by default after the fact is tricky,
301 and various improvements have been made to improve the UX including:
302 1. [Dedicated docs concerning the resource manager integration](https://github.com/ipfs/kubo/blob/master/docs/libp2p-resource-management.md). This is a great place to go to learn more or get your FAQs answered.
303 2. Increasing the default limits for the resource manager.
304 3. Enabling the [`Swarm.ConnMgr`](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmconnmgr) by default and reducing it thresholds so it can intelligently prune connections in many cases before the indiscriminate resource manager kicks in.
305 4. Adjusted log messages and levels to make clear that the resource manager is likely doing your node a favor by bounding resources.
306 5. [Other miscellaneous config and command bugs reported by users](https://github.com/ipfs/kubo/issues/9442).
307
308 ### 📝 Changelog
309
310 <details><summary>Full Changelog</summary>
311
312 - github.com/ipfs/kubo:
313 - fix: clarity: no user supplied rcmgr limits of 0 (#9563) ([ipfs/kubo#9563](https://github.com/ipfs/kubo/pull/9563))
314 - fix(gateway): undesired conversions to dag-json and friends (#9566) ([ipfs/kubo#9566](https://github.com/ipfs/kubo/pull/9566))
315 - fix: ensure connmgr is smaller then autoscalled resource limits
316 - fix: typo in ensureConnMgrMakeSenseVsResourcesMgr
317 - docs: clarify browser descriptions for webtransport
318 - fix: update saxon download path
319 - fix: refuse to start if connmgr is smaller than resource limits and not using none connmgr
320 - fix: User-Agent sent to HTTP routers
321 - test: port gateway sharness tests to Go tests
322 - fix: do not download saxon in parallel
323 - docs: improve docs/README (#9539) ([ipfs/kubo#9539](https://github.com/ipfs/kubo/pull/9539))
324 - test: port CircleCI to GH Actions and improve sharness reporting (#9355) ([ipfs/kubo#9355](https://github.com/ipfs/kubo/pull/9355))
325 - chore: migrate from go-ipfs-files to go-libipfs/files (#9535) ([ipfs/kubo#9535](https://github.com/ipfs/kubo/pull/9535))
326 - fix: stats dht command when Routing.Type=auto (#9538) ([ipfs/kubo#9538](https://github.com/ipfs/kubo/pull/9538))
327 - fix: hint people to changing from RSA peer ids
328 - fix(gateway): JSON when Accept is a list
329 - fix(test): retry flaky t0125-twonode.sh
330 - docs: fix Router config Godoc (#9528) ([ipfs/kubo#9528](https://github.com/ipfs/kubo/pull/9528))
331 - fix(ci): flaky sharness test
332 - docs(config): ProviderSearchDelay (#9526) ([ipfs/kubo#9526](https://github.com/ipfs/kubo/pull/9526))
333 - docs: clarify debug environment variables
334 - chore: update version.go
335 - fix(test): stabilize flaky provider tests
336 - feat: port pins CLI test
337 - Removing QRI from early tester ([ipfs/kubo#9503](https://github.com/ipfs/kubo/pull/9503))
338 - fix: disable provide over HTTP with Routing.Type=auto (#9511) ([ipfs/kubo#9511](https://github.com/ipfs/kubo/pull/9511))
339 - Update version.go
340 - 'chore: update version.go'
341 - Cleaned up 0.18 changelog for release ([ipfs/kubo#9497](https://github.com/ipfs/kubo/pull/9497))
342 - feat: turn on WebTransport by default ([ipfs/kubo#9492](https://github.com/ipfs/kubo/pull/9492))
343 - feat: fast directory listings with DAG Size column (#9481) ([ipfs/kubo#9481](https://github.com/ipfs/kubo/pull/9481))
344 - feat: add basic CLI tests using Go Test
345 - Changelog: v0.18.0 ([ipfs/kubo#9485](https://github.com/ipfs/kubo/pull/9485))
346 - feat: go-libp2p-kad-dht with expiration 48h
347 - chore: update go-libp2p to v0.24.1
348 - fix: remove the imports work-around
349 - fix: replace quic to quic-v1 for webtransport sharness
350 - fix: silence staticcheck warning for fx.Extract usage
351 - update go-libp2p to v0.24.0
352 - stop using the deprecated go-libp2p-loggables package
353 - docs(readme): update package managers section (#9488) ([ipfs/kubo#9488](https://github.com/ipfs/kubo/pull/9488))
354 - fix: support /quic-v1 in webui v0.21
355 - feat: Routing.Type=auto (DHT+IPNI) (#9475) ([ipfs/kubo#9475](https://github.com/ipfs/kubo/pull/9475))
356 - feat: adjust ConnMgr target to 32-96 (#9483) ([ipfs/kubo#9483](https://github.com/ipfs/kubo/pull/9483))
357 - feat: increase default Reprovider.Interval (#9326) ([ipfs/kubo#9326](https://github.com/ipfs/kubo/pull/9326))
358 - feat: add response body limiter to routing HTTP client (#9478) ([ipfs/kubo#9478](https://github.com/ipfs/kubo/pull/9478))
359 - docs: libp2p resource management (#9468) ([ipfs/kubo#9468](https://github.com/ipfs/kubo/pull/9468))
360 - chore: upgrade libipfs for routing HTTP API schema changes (#9477) ([ipfs/kubo#9477](https://github.com/ipfs/kubo/pull/9477))
361 - feat: lower connection pool
362 - Add missing &&
363 - Fix sharness test
364 - Added a message when RM is disabled.
365 - Requested changes.
366 - Fix sharness checking daemon output
367 - Update test/sharness/t0060-daemon.sh
368 - Try to fix sharness test.
369 - Fix: RM: Improve init RM message and fix final memory value.
370 - Fix: Resource Manager: Filter stats correctly by %
371 - Apply suggestions from code review
372 - Increase MaxMemory param to use half of total memory.
373 - Update libipfs dependency.
374 - Add sharness tests and documentation
375 - Fix variable name
376 - feature: delegated-routing: Add HTTP delegated routing.
377 - Fix: Change RM log output to WARN level
378 - Fix: RM: Set no-limit value to 1e9 (1000000000).
379 - Partial Revert "Revert "fix: ensure hasher is registered when using a hashing function""
380 - Add logs to the routing system
381 - fix: apply agent-version-suffix to libp2p identify
382 - chore: migrate ipfs/tar-utils to libipfs
383 - feat(gateway): JSON and CBOR response formats (IPIP-328) (#9335) ([ipfs/kubo#9335](https://github.com/ipfs/kubo/pull/9335))
384 - ([ipfs/kubo#9318](https://github.com/ipfs/kubo/pull/9318))
385 - docs: release process updates from v0.17.0 ([ipfs/kubo#9391](https://github.com/ipfs/kubo/pull/9391))
386 - fix(rcmgr): improve error phrasing
387 - docs: Update CHANGELOG.md adding 0.17 link
388 - feat(config): Pubsub.SeenMessagesTTL (#9372) ([ipfs/kubo#9372](https://github.com/ipfs/kubo/pull/9372))
389 - docs: remove snap and chocolatey packages
390 - Merge release v0.17.0 ([ipfs/kubo#9431](https://github.com/ipfs/kubo/pull/9431))
391 - docs: ipfs-http-client -> kubo-rpc-client (#9331) ([ipfs/kubo#9331](https://github.com/ipfs/kubo/pull/9331))
392 - docs(readme): improve tldr
393 - Update config.md for resource management limits (#9421) ([ipfs/kubo#9421](https://github.com/ipfs/kubo/pull/9421))
394 - Doc improvements and changelog for resource manager (#9413) ([ipfs/kubo#9413](https://github.com/ipfs/kubo/pull/9413))
395 - Revert "Doc improvements for rcmgr"
396 - Doc improvements for rcmgr
397 - docs: document /wss fixes in 0.17
398 - refactor(config): remove Swarm.ConnMgr defaults
399 - fix(config): skip nulls in ResourceMgr
400 - docs: replace tabcat with aphelionz in EARLY_TESTERS.md (#9404) ([ipfs/kubo#9404](https://github.com/ipfs/kubo/pull/9404))
401 - docs: fix spoiler for 0.13.1 changelog
402 - fix(docs): typo
403 - chore: bump version to v0.18.0-dev ([ipfs/kubo#9393](https://github.com/ipfs/kubo/pull/9393))
404 - github.com/ipfs/go-bitswap (v0.10.2 -> v0.11.0):
405 - chore: release v0.11.0
406 - github.com/ipfs/go-blockservice (v0.4.0 -> v0.5.0):
407 - chore: release v0.5.0
408 - github.com/ipfs/go-graphsync (v0.13.1 -> v0.14.1):
409 - chore: version 0.14.1 (#400) ([ipfs/go-graphsync#400](https://github.com/ipfs/go-graphsync/pull/400))
410 - chore: migrate files (#399) ([ipfs/go-graphsync#399](https://github.com/ipfs/go-graphsync/pull/399))
411 - docs(CHANGELOG): update for v0.14.0 release
412 - updates for libp2p v0.22 (#392) ([ipfs/go-graphsync#392](https://github.com/ipfs/go-graphsync/pull/392))
413 - feat(ipld): use bindnode/registry (#386) ([ipfs/go-graphsync#386](https://github.com/ipfs/go-graphsync/pull/386))
414 - Accept/Reject requests up front (#384) ([ipfs/go-graphsync#384](https://github.com/ipfs/go-graphsync/pull/384))
415 - Remove protobuf protocol (#385) ([ipfs/go-graphsync#385](https://github.com/ipfs/go-graphsync/pull/385))
416 - docs(CHANGELOG): update for v0.13.2
417 - chore(deps): upgrade libp2p & ipld-prime (#389) ([ipfs/go-graphsync#389](https://github.com/ipfs/go-graphsync/pull/389))
418 - chore(ipld): switch to using top-level ipld-prime codec helpers (#383) ([ipfs/go-graphsync#383](https://github.com/ipfs/go-graphsync/pull/383))
419 - feat(requestmanager): read request from context (#381) ([ipfs/go-graphsync#381](https://github.com/ipfs/go-graphsync/pull/381))
420 - fix: minor typo in error msg
421 - fix(panics): lift panic recovery up to top of network handling
422 - feat: expand use of panic handler to cover network and codec interaction
423 - feat(panics): capture panics from selector execution
424 - github.com/ipfs/go-ipfs-cmds (v0.8.1 -> v0.8.2):
425 - chore: version v0.8.2 (#235) ([ipfs/go-ipfs-cmds#235](https://github.com/ipfs/go-ipfs-cmds/pull/235))
426 - chore: migrate files (#233) ([ipfs/go-ipfs-cmds#233](https://github.com/ipfs/go-ipfs-cmds/pull/233))
427 - sync: update CI config files (#229) ([ipfs/go-ipfs-cmds#229](https://github.com/ipfs/go-ipfs-cmds/pull/229))
428 - github.com/ipfs/go-ipfs-keystore (v0.0.2 -> v0.1.0):
429 - chore: release v0.1.0
430 - chore: update go-libp2p
431 - sync: update CI config files ([ipfs/go-ipfs-keystore#10](https://github.com/ipfs/go-ipfs-keystore/pull/10))
432 - sync: update CI config files ([ipfs/go-ipfs-keystore#8](https://github.com/ipfs/go-ipfs-keystore/pull/8))
433 - Add link to pkg.go.dev
434 - README: this module does not use Gx
435 - github.com/ipfs/go-ipfs-provider (v0.7.1 -> v0.8.1):
436 - chore: release v0.8.1
437 - fix: make queue 64bits on 32bits platforms too
438 - sync: update CI config files ([ipfs/go-ipfs-provider#36](https://github.com/ipfs/go-ipfs-provider/pull/36))
439 - chore: update go-lib2p, avoid depending on go-libp2p-core, bump go.mod version
440 - github.com/ipfs/go-ipfs-routing (v0.2.1 -> v0.3.0):
441 - release v0.3.0 ([ipfs/go-ipfs-routing#36](https://github.com/ipfs/go-ipfs-routing/pull/36))
442 - chore: update go-libp2p to v0.22.0 ([ipfs/go-ipfs-routing#35](https://github.com/ipfs/go-ipfs-routing/pull/35))
443 - sync: update CI config files (#34) ([ipfs/go-ipfs-routing#34](https://github.com/ipfs/go-ipfs-routing/pull/34))
444 - github.com/ipfs/go-ipld-cbor (v0.0.5 -> v0.0.6):
445 - Add contexts to IpldBlockstore ([ipfs/go-ipld-cbor#82](https://github.com/ipfs/go-ipld-cbor/pull/82))
446 - sync: update CI config files (#81) ([ipfs/go-ipld-cbor#81](https://github.com/ipfs/go-ipld-cbor/pull/81))
447 - sync: update CI config files ([ipfs/go-ipld-cbor#79](https://github.com/ipfs/go-ipld-cbor/pull/79))
448 - Fix lint errors ([ipfs/go-ipld-cbor#78](https://github.com/ipfs/go-ipld-cbor/pull/78))
449 - Add notice directing new projects to codec/dagcbor ([ipfs/go-ipld-cbor#77](https://github.com/ipfs/go-ipld-cbor/pull/77))
450 - github.com/ipfs/go-merkledag (v0.6.0 -> v0.9.0):
451 - chore: bump version to 0.9.0
452 - chore: bump version to 0.8.1
453 - feat: remove panic() from non-error methods
454 - feat: improve broken cid.Builder testing for CidBuilder
455 - chore: bump version to 0.8.0
456 - doc: document potential panics and how to avoid them
457 - fix: simplify Cid generation cache & usage
458 - feat: check links on setting and sanitise on encoding
459 - feat: check that the CidBuilder hasher is usable
460 - chore: bump version to 0.7.0
461 - fix: remove use of ioutil
462 - run gofmt -s
463 - fix!: keep deserialised state stable until explicit mutation
464 - sync: update CI config files ([ipfs/go-merkledag#84](https://github.com/ipfs/go-merkledag/pull/84))
465 - github.com/ipfs/go-namesys (v0.5.0 -> v0.6.0):
466 - chore: release v0.6.0
467 - chore: update go-libp2p to v0.23.4, update go.mod version to 1.18
468 - stop using the deprecated io/ioutil package
469 - github.com/ipfs/go-peertaskqueue (v0.7.1 -> v0.8.0):
470 - Release v0.8.0 ([ipfs/go-peertaskqueue#25](https://github.com/ipfs/go-peertaskqueue/pull/25))
471 - chore: update go-libp2p to v0.22.0 ([ipfs/go-peertaskqueue#24](https://github.com/ipfs/go-peertaskqueue/pull/24))
472 - sync: update CI config files (#23) ([ipfs/go-peertaskqueue#23](https://github.com/ipfs/go-peertaskqueue/pull/23))
473 - sync: update CI config files (#21) ([ipfs/go-peertaskqueue#21](https://github.com/ipfs/go-peertaskqueue/pull/21))
474 - github.com/ipfs/go-unixfs (v0.4.1 -> v0.4.2):
475 - chore: version 0.4.2 (#136) ([ipfs/go-unixfs#136](https://github.com/ipfs/go-unixfs/pull/136))
476 - chore: migrate files (#134) ([ipfs/go-unixfs#134](https://github.com/ipfs/go-unixfs/pull/134))
477 - ([ipfs/go-unixfs#128](https://github.com/ipfs/go-unixfs/pull/128))
478 - github.com/ipfs/go-unixfsnode (v1.4.0 -> v1.5.1):
479 - v1.5.1
480 - fix a possible `index out of range` crash ([ipfs/go-unixfsnode#39](https://github.com/ipfs/go-unixfsnode/pull/39))
481 - add an ADL to preload hamt loading ([ipfs/go-unixfsnode#38](https://github.com/ipfs/go-unixfsnode/pull/38))
482 - chore: bump version to 1.5.0
483 - fix: remove use of ioutil
484 - run gofmt -s
485 - bump go.mod to Go 1.18 and run go fix
486 - test for reader / sizing behavior on large files ([ipfs/go-unixfsnode#34](https://github.com/ipfs/go-unixfsnode/pull/34))
487 - add helper to approximate test creation pattern from ipfs-files ([ipfs/go-unixfsnode#32](https://github.com/ipfs/go-unixfsnode/pull/32))
488 - chore: remove Stebalien/go-bitfield in favour of ipfs/go-bitfield
489 - github.com/ipfs/interface-go-ipfs-core (v0.7.0 -> v0.8.2):
490 - chore: version 0.8.2 (#100) ([ipfs/interface-go-ipfs-core#100](https://github.com/ipfs/interface-go-ipfs-core/pull/100))
491 - chore: migrate files (#97) ([ipfs/interface-go-ipfs-core#97](https://github.com/ipfs/interface-go-ipfs-core/pull/97))
492 - chore: release v0.8.1
493 - feat: add UseCumulativeSize UnixfsLs option (#95) ([ipfs/interface-go-ipfs-core#95](https://github.com/ipfs/interface-go-ipfs-core/pull/95))
494 - chore: release v0.8.0
495 - chore: update go-libp2p to v0.23.4
496 - sync: update CI config files (#87) ([ipfs/interface-go-ipfs-core#87](https://github.com/ipfs/interface-go-ipfs-core/pull/87))
497 - github.com/ipld/go-car/v2 (v2.4.0 -> v2.5.1):
498 - add a `SkipNext` method on block reader (#338) ([ipld/go-car#338](https://github.com/ipld/go-car/pull/338))
499 - feat: Has() and Get() will respect StoreIdentityCIDs option
500 - chore: bump version to 0.5.0
501 - fix: remove use of ioutil
502 - run gofmt -s
503 - bump go.mod to Go 1.18 and run go fix
504 - bump go.mod to Go 1.18 and run go fix
505 - OpenReadWriteFile: add test
506 - blockstore: allow to pass a file to write in (#323) ([ipld/go-car#323](https://github.com/ipld/go-car/pull/323))
507 - feat: add `car inspect` command to cmd pkg (#320) ([ipld/go-car#320](https://github.com/ipld/go-car/pull/320))
508 - Separate `index.ReadFrom` tests
509 - Only read index codec during inspection
510 - Upgrade to the latest `go-car/v2`
511 - Empty identity CID should be indexed when options are set
512 - github.com/ipld/go-codec-dagpb (v1.4.1 -> v1.5.0):
513 - chore: version bump to 1.5.0
514 - fix: replace io/ioutil with io
515 - bump go.mod to Go 1.18 and run go fix
516 - v1.4.2 bump
517 - github.com/libp2p/go-libp2p (v0.23.4 -> v0.24.2):
518 - release v0.24.2 (#1969) ([libp2p/go-libp2p#1969](https://github.com/libp2p/go-libp2p/pull/1969))
519 - webtransport: initialize a NullResourceManager if none is provided (#1962) ([libp2p/go-libp2p#1962](https://github.com/libp2p/go-libp2p/pull/1962))
520 - release v0.24.1 (#1945) ([libp2p/go-libp2p#1945](https://github.com/libp2p/go-libp2p/pull/1945))
521 - routed host: return Connect error if FindPeer doesn't yield new addresses (#1946) ([libp2p/go-libp2p#1946](https://github.com/libp2p/go-libp2p/pull/1946))
522 - chore: update examples to v0.24.0 (#1936) ([libp2p/go-libp2p#1936](https://github.com/libp2p/go-libp2p/pull/1936))
523 - webtransport: fix flaky accept queue test (#1938) ([libp2p/go-libp2p#1938](https://github.com/libp2p/go-libp2p/pull/1938))
524 - quic: fix race condition in TestClientCanDialDifferentQUICVersions (#1937) ([libp2p/go-libp2p#1937](https://github.com/libp2p/go-libp2p/pull/1937))
525 - quic: update quic-go to v0.31.1 (#1942) ([libp2p/go-libp2p#1942](https://github.com/libp2p/go-libp2p/pull/1942))
526 - release v0.24.0 (#1934) ([libp2p/go-libp2p#1934](https://github.com/libp2p/go-libp2p/pull/1934))
527 - Disable support for signed/static TLS certificates in WebTransport (#1927) ([libp2p/go-libp2p#1927](https://github.com/libp2p/go-libp2p/pull/1927))
528 - webtransport: add PSK to constructor, and fail if it is used (#1929) ([libp2p/go-libp2p#1929](https://github.com/libp2p/go-libp2p/pull/1929))
529 - use a different set of default transports when PSK is enabled (#1921) ([libp2p/go-libp2p#1921](https://github.com/libp2p/go-libp2p/pull/1921))
530 - transport.Listener,quic: Support multiple QUIC versions with the same Listener. Only return a single multiaddr per listener. (#1923) ([libp2p/go-libp2p#1923](https://github.com/libp2p/go-libp2p/pull/1923))
531 - quic / webtransport: make it possible to listen on the same address / port (#1905) ([libp2p/go-libp2p#1905](https://github.com/libp2p/go-libp2p/pull/1905))
532 - autorelay: fix flaky TestReconnectToStaticRelays (#1903) ([libp2p/go-libp2p#1903](https://github.com/libp2p/go-libp2p/pull/1903))
533 - swarm / rcmgr: synchronize the concurrent outbound dials with limits (#1898) ([libp2p/go-libp2p#1898](https://github.com/libp2p/go-libp2p/pull/1898))
534 - add QUIC v1 addresses to the default listen addresses (#1914) ([libp2p/go-libp2p#1914](https://github.com/libp2p/go-libp2p/pull/1914))
535 - webtransport: update webtransport-go to v0.3.0 (#1895) ([libp2p/go-libp2p#1895](https://github.com/libp2p/go-libp2p/pull/1895))
536 - tls: fix flaky TestHandshakeConnectionCancellations test (#1896) ([libp2p/go-libp2p#1896](https://github.com/libp2p/go-libp2p/pull/1896))
537 - holepunch: disable the resource manager in tests (#1897) ([libp2p/go-libp2p#1897](https://github.com/libp2p/go-libp2p/pull/1897))
538 - transports: expose the name of the transport in the ConnectionState (#1911) ([libp2p/go-libp2p#1911](https://github.com/libp2p/go-libp2p/pull/1911))
539 - respect the user's security protocol preference order ([libp2p/go-libp2p#1912](https://github.com/libp2p/go-libp2p/pull/1912))
540 - circuitv2: disable the resource manager in tests (#1899) ([libp2p/go-libp2p#1899](https://github.com/libp2p/go-libp2p/pull/1899))
541 - expose the security protocol on the ConnectionState ([libp2p/go-libp2p#1907](https://github.com/libp2p/go-libp2p/pull/1907))
542 - fix: autorelay: treat static relays as just another peer source (#1875) ([libp2p/go-libp2p#1875](https://github.com/libp2p/go-libp2p/pull/1875))
543 - feat: quic,webtransport: enable both quic-draft29 and quic-v1 addrs on quic. only quic-v1 on webtransport (#1881) ([libp2p/go-libp2p#1881](https://github.com/libp2p/go-libp2p/pull/1881))
544 - holepunch: add multiaddress filter (#1839) ([libp2p/go-libp2p#1839](https://github.com/libp2p/go-libp2p/pull/1839))
545 - README: remove broken links from table of contents (#1893) ([libp2p/go-libp2p#1893](https://github.com/libp2p/go-libp2p/pull/1893))
546 - quic: update quic-go to v0.31.0 (#1882) ([libp2p/go-libp2p#1882](https://github.com/libp2p/go-libp2p/pull/1882))
547 - add an integration test for muxer selection ([libp2p/go-libp2p#1887](https://github.com/libp2p/go-libp2p/pull/1887))
548 - core/network: fix typo
549 - tls / noise: prefer the client's muxer preferences ([libp2p/go-libp2p#1888](https://github.com/libp2p/go-libp2p/pull/1888))
550 - upgrader: absorb the muxer_multistream.Transport into the upgrader (#1885) ([libp2p/go-libp2p#1885](https://github.com/libp2p/go-libp2p/pull/1885))
551 - Apply service peer default (#1878) ([libp2p/go-libp2p#1878](https://github.com/libp2p/go-libp2p/pull/1878))
552 - webtransport: use deterministic TLS certificates (#1833) ([libp2p/go-libp2p#1833](https://github.com/libp2p/go-libp2p/pull/1833))
553 - remove deprecated StaticRelays option (#1868) ([libp2p/go-libp2p#1868](https://github.com/libp2p/go-libp2p/pull/1868))
554 - autorelay: remove the default static relay option (#1867) ([libp2p/go-libp2p#1867](https://github.com/libp2p/go-libp2p/pull/1867))
555 - core/protocol: remove deprecated Negotiator.NegotiateLazy (#1869) ([libp2p/go-libp2p#1869](https://github.com/libp2p/go-libp2p/pull/1869))
556 - config: use fx dependency injection to construct transports ([libp2p/go-libp2p#1858](https://github.com/libp2p/go-libp2p/pull/1858))
557 - noise: add an option to allow unknown peer ID in SecureOutbound (#1823) ([libp2p/go-libp2p#1823](https://github.com/libp2p/go-libp2p/pull/1823))
558 - Add some guard rails and docs (#1863) ([libp2p/go-libp2p#1863](https://github.com/libp2p/go-libp2p/pull/1863))
559 - Fix concurrent map access in connmgr (#1860) ([libp2p/go-libp2p#1860](https://github.com/libp2p/go-libp2p/pull/1860))
560 - fix: return filtered addrs (#1855) ([libp2p/go-libp2p#1855](https://github.com/libp2p/go-libp2p/pull/1855))
561 - chore: preallocate slices (#1842) ([libp2p/go-libp2p#1842](https://github.com/libp2p/go-libp2p/pull/1842))
562 - Close ping stream when we exit the loop (#1853) ([libp2p/go-libp2p#1853](https://github.com/libp2p/go-libp2p/pull/1853))
563 - tls: don't set the deprecated tls.Config.PreferServerCipherSuites field (#1845) ([libp2p/go-libp2p#1845](https://github.com/libp2p/go-libp2p/pull/1845))
564 - routed host: search for new multi addresses upon connect failure (#1835) ([libp2p/go-libp2p#1835](https://github.com/libp2p/go-libp2p/pull/1835))
565 - core/peerstore: removed unused provider addr ttl constant (#1848) ([libp2p/go-libp2p#1848](https://github.com/libp2p/go-libp2p/pull/1848))
566 - basichost: improve protocol negotiation debug message (#1846) ([libp2p/go-libp2p#1846](https://github.com/libp2p/go-libp2p/pull/1846))
567 - noise: use Noise Extension to negotiate the muxer during the handshake (#1813) ([libp2p/go-libp2p#1813](https://github.com/libp2p/go-libp2p/pull/1813))
568 - webtransport: use the rcmgr to control flow control window increases ([libp2p/go-libp2p#1832](https://github.com/libp2p/go-libp2p/pull/1832))
569 - chore: update quic-go to v0.30.0 (#1838) ([libp2p/go-libp2p#1838](https://github.com/libp2p/go-libp2p/pull/1838))
570 - roadmap: reorder priority, reorganize sections (#1831) ([libp2p/go-libp2p#1831](https://github.com/libp2p/go-libp2p/pull/1831))
571 - websocket: set the HTTP host header in WSS(#1834) ([libp2p/go-libp2p#1834](https://github.com/libp2p/go-libp2p/pull/1834))
572 - webtransport: make it possible to record qlogs (controlled by QLOGDIR env) ([libp2p/go-libp2p#1828](https://github.com/libp2p/go-libp2p/pull/1828))
573 - ipfs /api/v0/id is post (#1819) ([libp2p/go-libp2p#1819](https://github.com/libp2p/go-libp2p/pull/1819))
574 - examples: connect to all peers in example mdns chat app (#1798) ([libp2p/go-libp2p#1798](https://github.com/libp2p/go-libp2p/pull/1798))
575 - roadmap: fix header level on "Mid Q4" (#1818) ([libp2p/go-libp2p#1818](https://github.com/libp2p/go-libp2p/pull/1818))
576 - examples: use circuitv2 in relay example (#1795) ([libp2p/go-libp2p#1795](https://github.com/libp2p/go-libp2p/pull/1795))
577 - add a roadmap for the next 6 months (#1784) ([libp2p/go-libp2p#1784](https://github.com/libp2p/go-libp2p/pull/1784))
578 - tls: use ALPN to negotiate the stream multiplexer (#1772) ([libp2p/go-libp2p#1772](https://github.com/libp2p/go-libp2p/pull/1772))
579 - tls: add tests for test vector from the spec (#1788) ([libp2p/go-libp2p#1788](https://github.com/libp2p/go-libp2p/pull/1788))
580 - examples: update go-libp2p to v0.23.x (#1803) ([libp2p/go-libp2p#1803](https://github.com/libp2p/go-libp2p/pull/1803))
581 - Try increasing timeouts if we're in CI for this test (#1796) ([libp2p/go-libp2p#1796](https://github.com/libp2p/go-libp2p/pull/1796))
582 - Don't use rcmgr in this test (#1799) ([libp2p/go-libp2p#1799](https://github.com/libp2p/go-libp2p/pull/1799))
583 - Bump timeout in CI for flaky test (#1800) ([libp2p/go-libp2p#1800](https://github.com/libp2p/go-libp2p/pull/1800))
584 - Bump timeout in CI for flaky test (#1801) ([libp2p/go-libp2p#1801](https://github.com/libp2p/go-libp2p/pull/1801))
585 - Fix comment in webtransport client auth handshake (#1793) ([libp2p/go-libp2p#1793](https://github.com/libp2p/go-libp2p/pull/1793))
586 - examples: add basic pubsub-with-rendezvous example (#1738) ([libp2p/go-libp2p#1738](https://github.com/libp2p/go-libp2p/pull/1738))
587 - quic: speed up the stateless reset test case (#1778) ([libp2p/go-libp2p#1778](https://github.com/libp2p/go-libp2p/pull/1778))
588 - tls: fix flaky handshake cancellation test (#1779) ([libp2p/go-libp2p#1779](https://github.com/libp2p/go-libp2p/pull/1779))
589 - github.com/libp2p/go-libp2p-gostream (v0.3.0 -> v0.5.0):
590 - release v0.5.0 (#74) ([libp2p/go-libp2p-gostream#74](https://github.com/libp2p/go-libp2p-gostream/pull/74))
591 - update go-libp2p to v0.22.0 (#73) ([libp2p/go-libp2p-gostream#73](https://github.com/libp2p/go-libp2p-gostream/pull/73))
592 - Expose some read-only methods on the underlying Stream interface (#67) ([libp2p/go-libp2p-gostream#67](https://github.com/libp2p/go-libp2p-gostream/pull/67))
593 - Update libp2p ([libp2p/go-libp2p-gostream#69](https://github.com/libp2p/go-libp2p-gostream/pull/69))
594 - sync: update CI config files (#65) ([libp2p/go-libp2p-gostream#65](https://github.com/libp2p/go-libp2p-gostream/pull/65))
595 - sync: update CI config files ([libp2p/go-libp2p-gostream#62](https://github.com/libp2p/go-libp2p-gostream/pull/62))
596 - fix staticcheck ([libp2p/go-libp2p-gostream#61](https://github.com/libp2p/go-libp2p-gostream/pull/61))
597 - github.com/libp2p/go-libp2p-http (v0.2.1 -> v0.4.0):
598 - release v0.4.0 ([libp2p/go-libp2p-http#81](https://github.com/libp2p/go-libp2p-http/pull/81))
599 - sync: update CI config files ([libp2p/go-libp2p-http#79](https://github.com/libp2p/go-libp2p-http/pull/79))
600 - Update to latest go-libp2p ([libp2p/go-libp2p-http#80](https://github.com/libp2p/go-libp2p-http/pull/80))
601 - Update to latest go-libp2p ([libp2p/go-libp2p-http#78](https://github.com/libp2p/go-libp2p-http/pull/78))
602 - sync: update CI config files (#73) ([libp2p/go-libp2p-http#73](https://github.com/libp2p/go-libp2p-http/pull/73))
603 - github.com/libp2p/go-libp2p-kad-dht (v0.18.0 -> v0.20.0):
604 - release v0.20.0 (#803) ([libp2p/go-libp2p-kad-dht#803](https://github.com/libp2p/go-libp2p-kad-dht/pull/803))
605 - feat: increase the max record age to 48h (PUT_VALUE, RFM17) (#794) ([libp2p/go-libp2p-kad-dht#794](https://github.com/libp2p/go-libp2p-kad-dht/pull/794))
606 - feat: increase expiration time for Provider Records to 48h (RFM17)
607 - release v0.19.0 (#801) ([libp2p/go-libp2p-kad-dht#801](https://github.com/libp2p/go-libp2p-kad-dht/pull/801))
608 - define the ProviderAddrTTL in this repo (#797) ([libp2p/go-libp2p-kad-dht#797](https://github.com/libp2p/go-libp2p-kad-dht/pull/797))
609 - github.com/libp2p/go-libp2p-kbucket (v0.4.7 -> v0.5.0):
610 - chore: release 0.5.0 (#111) ([libp2p/go-libp2p-kbucket#111](https://github.com/libp2p/go-libp2p-kbucket/pull/111))
611 - deprecate go-libp2p-core and use go-libp2p instead (#109) ([libp2p/go-libp2p-kbucket#109](https://github.com/libp2p/go-libp2p-kbucket/pull/109))
612 - sync: update CI config files (#108) ([libp2p/go-libp2p-kbucket#108](https://github.com/libp2p/go-libp2p-kbucket/pull/108))
613 - sync: update CI config files ([libp2p/go-libp2p-kbucket#107](https://github.com/libp2p/go-libp2p-kbucket/pull/107))
614 - sync: update CI config files (#104) ([libp2p/go-libp2p-kbucket#104](https://github.com/libp2p/go-libp2p-kbucket/pull/104))
615 - sync: update CI config files ([libp2p/go-libp2p-kbucket#101](https://github.com/libp2p/go-libp2p-kbucket/pull/101))
616 - sync: update CI config files ([libp2p/go-libp2p-kbucket#99](https://github.com/libp2p/go-libp2p-kbucket/pull/99))
617 - fix staticcheck ([libp2p/go-libp2p-kbucket#98](https://github.com/libp2p/go-libp2p-kbucket/pull/98))
618 - github.com/libp2p/go-libp2p-pubsub (v0.6.1 -> v0.8.2):
619 - Add docstring for WithAppSpecificRPCInspector (#510) ([libp2p/go-libp2p-pubsub#510](https://github.com/libp2p/go-libp2p-pubsub/pull/510))
620 - Adds Application Specific RPC Inspector (#509) ([libp2p/go-libp2p-pubsub#509](https://github.com/libp2p/go-libp2p-pubsub/pull/509))
621 - chore: ignore signing keys during WithLocalPublication publishing (#497) ([libp2p/go-libp2p-pubsub#497](https://github.com/libp2p/go-libp2p-pubsub/pull/497))
622 - improve handling of dead peers (#508) ([libp2p/go-libp2p-pubsub#508](https://github.com/libp2p/go-libp2p-pubsub/pull/508))
623 - perf: use pooled buffers for message writes (#507) ([libp2p/go-libp2p-pubsub#507](https://github.com/libp2p/go-libp2p-pubsub/pull/507))
624 - perf: use msgio pooled buffers for received msgs (#500) ([libp2p/go-libp2p-pubsub#500](https://github.com/libp2p/go-libp2p-pubsub/pull/500))
625 - Enables injectable GossipSub router (#503) ([libp2p/go-libp2p-pubsub#503](https://github.com/libp2p/go-libp2p-pubsub/pull/503))
626 - Enables non-atomic validation for peer scoring parameters (#499) ([libp2p/go-libp2p-pubsub#499](https://github.com/libp2p/go-libp2p-pubsub/pull/499))
627 - update go-libp2p to v0.22.0 (#498) ([libp2p/go-libp2p-pubsub#498](https://github.com/libp2p/go-libp2p-pubsub/pull/498))
628 - fix handling of dead peers (#492) ([libp2p/go-libp2p-pubsub#492](https://github.com/libp2p/go-libp2p-pubsub/pull/492))
629 - feat: WithLocalPublication option to enable local only publishing on a topic (#481) ([libp2p/go-libp2p-pubsub#481](https://github.com/libp2p/go-libp2p-pubsub/pull/481))
630 - update pubsub deps (#491) ([libp2p/go-libp2p-pubsub#491](https://github.com/libp2p/go-libp2p-pubsub/pull/491))
631 - Gossipsub: Unsubscribe backoff (#488) ([libp2p/go-libp2p-pubsub#488](https://github.com/libp2p/go-libp2p-pubsub/pull/488))
632 - Adds exponential backoff to re-spawning new streams for supposedly dead peers (#483) ([libp2p/go-libp2p-pubsub#483](https://github.com/libp2p/go-libp2p-pubsub/pull/483))
633 - Publishing option for signing a message with a custom private key (#486) ([libp2p/go-libp2p-pubsub#486](https://github.com/libp2p/go-libp2p-pubsub/pull/486))
634 - fix unused GossipSubHistoryGossip, make seenMessages ttl configurable, make score params SeenMsgTTL configurable
635 - Update README.md
636 - Add in Backoff Check
637 - Modify comment
638 - Add Backoff For Pruned Peers
639 - tests: new test for WithTopicMsgIdFunction
640 - chore: better name
641 - feat: detach WithMsgIdFunction
642 - fix: use RawID in traceRPCMeta to avoid allocations
643 - feat: extract RawID from ID
644 - chore: hello mister mutex hat
645 - chore: go fmt and return timecache named import
646 - feat: new WithMsgIdFunction topic option to enable topics to have own msg id generation rules
647 - feat: integrate msgIdGenerator
648 - feat: introduce msgIdGenerator and add ID field to Message wrapper
649 - github.com/libp2p/go-libp2p-pubsub-router (v0.5.0 -> v0.6.0):
650 - release v0.6.0 (#99) ([libp2p/go-libp2p-pubsub-router#99](https://github.com/libp2p/go-libp2p-pubsub-router/pull/99))
651 - sync: update CI config files (#93) ([libp2p/go-libp2p-pubsub-router#93](https://github.com/libp2p/go-libp2p-pubsub-router/pull/93))
652 - github.com/libp2p/go-libp2p-routing-helpers (v0.4.0 -> v0.6.0):
653 - Update version.json
654 - Change interface name
655 - Add tests
656 - Feat: retrieve routers from composable routers
657 - Update version.json
658 - Update version.json
659 - chore: add regression test for compparallel deadlock
660 - Add logs to composable parallel
661 - Bump version to v0.4.1
662 - ([libp2p/go-libp2p-routing-helpers#64](https://github.com/libp2p/go-libp2p-routing-helpers/pull/64))
663 - github.com/lucas-clemente/quic-go (v0.29.1 -> v0.31.1):
664 - qerr: include role (remote / local) in error string representations (#3629) ([lucas-clemente/quic-go#3629](https://github.com/lucas-clemente/quic-go/pull/3629))
665 - introduce a type for the stateless reset key (#3621) ([lucas-clemente/quic-go#3621](https://github.com/lucas-clemente/quic-go/pull/3621))
666 - limit the exponential PTO backoff to 60s (#3595) ([lucas-clemente/quic-go#3595](https://github.com/lucas-clemente/quic-go/pull/3595))
667 - expose the QUIC version of a connection (#3620) ([lucas-clemente/quic-go#3620](https://github.com/lucas-clemente/quic-go/pull/3620))
668 - expose function to convert byte slice to a connection ID (#3614) ([lucas-clemente/quic-go#3614](https://github.com/lucas-clemente/quic-go/pull/3614))
669 - use `go run` for mockgen, goimports and ginkgo (#3616) ([lucas-clemente/quic-go#3616](https://github.com/lucas-clemente/quic-go/pull/3616))
670 - fix client SNI handling (#3613) ([lucas-clemente/quic-go#3613](https://github.com/lucas-clemente/quic-go/pull/3613))
671 - chore: fix multiple typos in comments (#3612) ([lucas-clemente/quic-go#3612](https://github.com/lucas-clemente/quic-go/pull/3612))
672 - use the new zero-allocation control message parsing function from x/sys (#3609) ([lucas-clemente/quic-go#3609](https://github.com/lucas-clemente/quic-go/pull/3609))
673 - http3: add support for parsing and writing HTTP/3 capsules (#3607) ([lucas-clemente/quic-go#3607](https://github.com/lucas-clemente/quic-go/pull/3607))
674 - http3: add request to response (#3608) ([lucas-clemente/quic-go#3608](https://github.com/lucas-clemente/quic-go/pull/3608))
675 - fix availability signaling of the send queue (#3597) ([lucas-clemente/quic-go#3597](https://github.com/lucas-clemente/quic-go/pull/3597))
676 - http3: add a ConnectionState method to the StreamCreator interface (#3600) ([lucas-clemente/quic-go#3600](https://github.com/lucas-clemente/quic-go/pull/3600))
677 - http3: add a Context method to the StreamCreator interface (#3601) ([lucas-clemente/quic-go#3601](https://github.com/lucas-clemente/quic-go/pull/3601))
678 - rename the variable in quic.Config.AllowConnectionWindowIncrease (#3602) ([lucas-clemente/quic-go#3602](https://github.com/lucas-clemente/quic-go/pull/3602))
679 - migrate to Ginkgo v2, remove benchmark test ([lucas-clemente/quic-go#3589](https://github.com/lucas-clemente/quic-go/pull/3589))
680 - don't drop more than 10 consecutive packets in drop test (#3584) ([lucas-clemente/quic-go#3584](https://github.com/lucas-clemente/quic-go/pull/3584))
681 - use a monotonous timer for the connection (#3570) ([lucas-clemente/quic-go#3570](https://github.com/lucas-clemente/quic-go/pull/3570))
682 - http3: add http3.Server.ServeQUICConn to serve a single QUIC connection (#3587) ([lucas-clemente/quic-go#3587](https://github.com/lucas-clemente/quic-go/pull/3587))
683 - http3: expose ALPN values (#3580) ([lucas-clemente/quic-go#3580](https://github.com/lucas-clemente/quic-go/pull/3580))
684 - log the size of buffered packets (#3571) ([lucas-clemente/quic-go#3571](https://github.com/lucas-clemente/quic-go/pull/3571))
685 - ackhandler: reject duplicate packets in ReceivedPacket (#3568) ([lucas-clemente/quic-go#3568](https://github.com/lucas-clemente/quic-go/pull/3568))
686 - reduce max DATAGRAM frame size, so that DATAGRAMs fit in IPv6 packets (#3581) ([lucas-clemente/quic-go#3581](https://github.com/lucas-clemente/quic-go/pull/3581))
687 - use a Peek / Pop API for the datagram queue (#3582) ([lucas-clemente/quic-go#3582](https://github.com/lucas-clemente/quic-go/pull/3582))
688 - http3: handle ErrAbortHandler when the handler panics (#3575) ([lucas-clemente/quic-go#3575](https://github.com/lucas-clemente/quic-go/pull/3575))
689 - http3: fix double close of chan when using DontCloseRequestStream (#3561) ([lucas-clemente/quic-go#3561](https://github.com/lucas-clemente/quic-go/pull/3561))
690 - qlog: rename key_retired to key_discarded (#3463) ([lucas-clemente/quic-go#3463](https://github.com/lucas-clemente/quic-go/pull/3463))
691 - simplify packing of ACK-only packets ([lucas-clemente/quic-go#3545](https://github.com/lucas-clemente/quic-go/pull/3545))
692 - use a sync.Pool for ACK frames ([lucas-clemente/quic-go#3547](https://github.com/lucas-clemente/quic-go/pull/3547))
693 - prioritize sending ACKs over sending new DATAGRAM frames (#3544) ([lucas-clemente/quic-go#3544](https://github.com/lucas-clemente/quic-go/pull/3544))
694 - http3: reduce usage of bytes.Buffer (#3539) ([lucas-clemente/quic-go#3539](https://github.com/lucas-clemente/quic-go/pull/3539))
695 - use a single bytes.Reader for frame parsing (#3536) ([lucas-clemente/quic-go#3536](https://github.com/lucas-clemente/quic-go/pull/3536))
696 - split code paths for packing 0-RTT and 1-RTT packets in packet packer (#3540) ([lucas-clemente/quic-go#3540](https://github.com/lucas-clemente/quic-go/pull/3540))
697 - remove the wire.ShortHeader in favor of more return values (#3535) ([lucas-clemente/quic-go#3535](https://github.com/lucas-clemente/quic-go/pull/3535))
698 - preallocate the message buffers of the ipv4.Message passed to ReadBatch (#3541) ([lucas-clemente/quic-go#3541](https://github.com/lucas-clemente/quic-go/pull/3541))
699 - introduce a separate code paths for Short Header packet handling ([lucas-clemente/quic-go#3534](https://github.com/lucas-clemente/quic-go/pull/3534))
700 - fix usage of ackhandler.Packet pool for non-ack-eliciting packets (#3538) ([lucas-clemente/quic-go#3538](https://github.com/lucas-clemente/quic-go/pull/3538))
701 - return an error when parsing a too long connection ID from a header (#3533) ([lucas-clemente/quic-go#3533](https://github.com/lucas-clemente/quic-go/pull/3533))
702 - speed up marshaling of transport parameters (#3531) ([lucas-clemente/quic-go#3531](https://github.com/lucas-clemente/quic-go/pull/3531))
703 - use a struct containing an array to represent Connection IDs ([lucas-clemente/quic-go#3529](https://github.com/lucas-clemente/quic-go/pull/3529))
704 - reduce allocations of ackhandler.Packet ([lucas-clemente/quic-go#3525](https://github.com/lucas-clemente/quic-go/pull/3525))
705 - serialize frames by appending to a byte slice, not to a bytes.Buffer ([lucas-clemente/quic-go#3530](https://github.com/lucas-clemente/quic-go/pull/3530))
706 - fix datagram RFC number in documentation for quic.Config (#3523) ([lucas-clemente/quic-go#3523](https://github.com/lucas-clemente/quic-go/pull/3523))
707 - add DPLPMTUD (RFC 8899) to list of supported RFCs in README (#3520) ([lucas-clemente/quic-go#3520](https://github.com/lucas-clemente/quic-go/pull/3520))
708 - use the null tracers in the tracer integration tests (#3528) ([lucas-clemente/quic-go#3528](https://github.com/lucas-clemente/quic-go/pull/3528))
709 - github.com/marten-seemann/webtransport-go (v0.1.1 -> v0.4.3):
710 - release v0.4.3 (#57) ([marten-seemann/webtransport-go#57](https://github.com/marten-seemann/webtransport-go/pull/57))
711 - return the correct error from OpenStreamSync when context is canceled (#55) ([marten-seemann/webtransport-go#55](https://github.com/marten-seemann/webtransport-go/pull/55))
712 - release v0.4.2 (#54) ([marten-seemann/webtransport-go#54](https://github.com/marten-seemann/webtransport-go/pull/54))
713 - use a buffered channel in the acceptQueue (#53) ([marten-seemann/webtransport-go#53](https://github.com/marten-seemann/webtransport-go/pull/53))
714 - add a comment why using (a blocking) Read in the StreamHijacker is fine
715 - release v0.4.1 (#52) ([marten-seemann/webtransport-go#52](https://github.com/marten-seemann/webtransport-go/pull/52))
716 - release session mutex when an error occurs when closing (#51) ([marten-seemann/webtransport-go#51](https://github.com/marten-seemann/webtransport-go/pull/51))
717 - release v0.4.0 (#48) ([marten-seemann/webtransport-go#48](https://github.com/marten-seemann/webtransport-go/pull/48))
718 - add a Server.ServeQUICConn method (#47) ([marten-seemann/webtransport-go#47](https://github.com/marten-seemann/webtransport-go/pull/47))
719 - release v0.3.0 (#46) ([marten-seemann/webtransport-go#46](https://github.com/marten-seemann/webtransport-go/pull/46))
720 - read and write CLOSE_WEBTRANSPORT_SESSION capsules ([marten-seemann/webtransport-go#40](https://github.com/marten-seemann/webtransport-go/pull/40))
721 - implement the SetDeadline method on the stream (#44) ([marten-seemann/webtransport-go#44](https://github.com/marten-seemann/webtransport-go/pull/44))
722 - expose the QUIC stream ID on the stream interfaces (#43) ([marten-seemann/webtransport-go#43](https://github.com/marten-seemann/webtransport-go/pull/43))
723 - release v0.2.0 (#38) ([marten-seemann/webtransport-go#38](https://github.com/marten-seemann/webtransport-go/pull/38))
724 - expose quic-go's connection tracing ID on the Session.Context (#35) ([marten-seemann/webtransport-go#35](https://github.com/marten-seemann/webtransport-go/pull/35))
725 - add a ConnectionState method to the Session (#33) ([marten-seemann/webtransport-go#33](https://github.com/marten-seemann/webtransport-go/pull/33))
726 - chore: update quic-go to v0.30.0 (#36) ([marten-seemann/webtransport-go#36](https://github.com/marten-seemann/webtransport-go/pull/36))
727 - fix interop build (#37) ([marten-seemann/webtransport-go#37](https://github.com/marten-seemann/webtransport-go/pull/37))
728 - rename session receiver variable (#34) ([marten-seemann/webtransport-go#34](https://github.com/marten-seemann/webtransport-go/pull/34))
729 - fix double close of chan when using DontCloseRequestStream (#30) ([marten-seemann/webtransport-go#30](https://github.com/marten-seemann/webtransport-go/pull/30))
730 - add a simple integration test using Selenium and a headless Chrome (#28) ([marten-seemann/webtransport-go#28](https://github.com/marten-seemann/webtransport-go/pull/28))
731 - use a generic accept queue for uni- and bidirectional streams (#26) ([marten-seemann/webtransport-go#26](https://github.com/marten-seemann/webtransport-go/pull/26))
732 - github.com/multiformats/go-base36 (v0.1.0 -> v0.2.0):
733 - v0.2.0
734 - sync: update CI config files (#11) ([multiformats/go-base36#11](https://github.com/multiformats/go-base36/pull/11))
735 - fix link to documentation (#9) ([multiformats/go-base36#9](https://github.com/multiformats/go-base36/pull/9))
736 - sync: update CI config files (#8) ([multiformats/go-base36#8](https://github.com/multiformats/go-base36/pull/8))
737 - Address `staticcheck` issue ([multiformats/go-base36#5](https://github.com/multiformats/go-base36/pull/5))
738 - Feat/fasterer ([multiformats/go-base36#4](https://github.com/multiformats/go-base36/pull/4))
739 - github.com/multiformats/go-multiaddr (v0.7.0 -> v0.8.0):
740 - release v0.8.0 ([multiformats/go-multiaddr#187](https://github.com/multiformats/go-multiaddr/pull/187))
741 - Add quic-v1 component ([multiformats/go-multiaddr#186](https://github.com/multiformats/go-multiaddr/pull/186))
742 - github.com/multiformats/go-varint (v0.0.6 -> v0.0.7):
743 - v0.0.7 ([multiformats/go-varint#18](https://github.com/multiformats/go-varint/pull/18))
744 - feat: optimize decoding (#15) ([multiformats/go-varint#15](https://github.com/multiformats/go-varint/pull/15))
745 - sync: update CI config files (#13) ([multiformats/go-varint#13](https://github.com/multiformats/go-varint/pull/13))
746 - fix staticcheck ([multiformats/go-varint#9](https://github.com/multiformats/go-varint/pull/9))
747 - tests for unbounded uvarint streams. ([multiformats/go-varint#7](https://github.com/multiformats/go-varint/pull/7))
748 - github.com/whyrusleeping/cbor-gen (v0.0.0-20210219115102-f37d292932f2 -> v0.0.0-20221220214510-0333c149dec0):
749 - fix bug in consts code
750 - Allow 'const' fields to be declared ([whyrusleeping/cbor-gen#78](https://github.com/whyrusleeping/cbor-gen/pull/78))
751 - support omitting empty fields on map encoders ([whyrusleeping/cbor-gen#77](https://github.com/whyrusleeping/cbor-gen/pull/77))
752 - support string pointers
753 - feat: add the ability to encode a byte array (#76) ([whyrusleeping/cbor-gen#76](https://github.com/whyrusleeping/cbor-gen/pull/76))
754 - support string slices (#73) ([whyrusleeping/cbor-gen#73](https://github.com/whyrusleeping/cbor-gen/pull/73))
755 - Feat/size types ([whyrusleeping/cbor-gen#69](https://github.com/whyrusleeping/cbor-gen/pull/69))
756 - Add CborReader and CborWriter (#67) ([whyrusleeping/cbor-gen#67](https://github.com/whyrusleeping/cbor-gen/pull/67))
757 - Fix broken TestTimeIsh (#66) ([whyrusleeping/cbor-gen#66](https://github.com/whyrusleeping/cbor-gen/pull/66))
758 - Return EOF and ErrUnexpectedEOF correctly (#64) ([whyrusleeping/cbor-gen#64](https://github.com/whyrusleeping/cbor-gen/pull/64))
759 - fix: don't fail if we try to discard nothing at the end of an object ([whyrusleeping/cbor-gen#63](https://github.com/whyrusleeping/cbor-gen/pull/63))
760 - Make peeker.ReadByte follow buffer.ReadByte semantics ([whyrusleeping/cbor-gen#61](https://github.com/whyrusleeping/cbor-gen/pull/61))
761 - Fix read bug in readByteBuf ([whyrusleeping/cbor-gen#60](https://github.com/whyrusleeping/cbor-gen/pull/60))
762 - support for cborgen struct field tags ([whyrusleeping/cbor-gen#58](https://github.com/whyrusleeping/cbor-gen/pull/58))
763 - feat: take cbor adapters by-value when encoding ([whyrusleeping/cbor-gen#55](https://github.com/whyrusleeping/cbor-gen/pull/55))
764 - fix: import "math" in generated code for uint8 unmarshalling ([whyrusleeping/cbor-gen#53](https://github.com/whyrusleeping/cbor-gen/pull/53))
765 - doc: document Write*EncodersToFile functions ([whyrusleeping/cbor-gen#52](https://github.com/whyrusleeping/cbor-gen/pull/52))
766
767 </details>
768
769 ### 👨‍👩‍👧‍👦 Contributors
770
771 | Contributor | Commits | Lines ± | Files Changed |
772 |-------------|---------|---------|---------------|
773 | Marten Seemann | 154 | +8826/-6369 | 911 |
774 | Gus Eggert | 7 | +2792/-1444 | 40 |
775 | Marco Munizaga | 26 | +2324/-752 | 101 |
776 | hannahhoward | 7 | +695/-1587 | 50 |
777 | Rod Vagg | 30 | +1508/-668 | 106 |
778 | Henrique Dias | 13 | +1321/-431 | 85 |
779 | Yahya Hassanzadeh | 4 | +984/-158 | 9 |
780 | galargh | 17 | +519/-520 | 20 |
781 | Steve Loeppky | 11 | +612/-418 | 25 |
782 | Antonio Navarro Perez | 30 | +742/-88 | 47 |
783 | Marcin Rataj | 19 | +377/-407 | 52 |
784 | Ian Davis | 2 | +419/-307 | 7 |
785 | whyrusleeping | 5 | +670/-28 | 17 |
786 | Piotr Galar | 8 | +211/-417 | 25 |
787 | web3-bot | 28 | +282/-264 | 75 |
788 | Will Scott | 10 | +428/-103 | 19 |
789 | julian88110 | 2 | +367/-55 | 27 |
790 | Will | 5 | +282/-131 | 65 |
791 | Jorropo | 25 | +263/-94 | 38 |
792 | Wondertan | 10 | +203/-87 | 24 |
793 | Mohsin Zaidi | 1 | +269/-0 | 4 |
794 | Dennis Trautwein | 3 | +230/-21 | 7 |
795 | Prithvi Shahi | 1 | +116/-77 | 1 |
796 | Masih H. Derkani | 5 | +130/-37 | 11 |
797 | Iulian Pascalau | 1 | +151/-16 | 2 |
798 | Scott Martin | 1 | +166/-0 | 3 |
799 | Daniel Vernall | 1 | +92/-45 | 2 |
800 | Steven Allen | 7 | +114/-15 | 11 |
801 | Hlib Kanunnikov | 4 | +100/-28 | 6 |
802 | Peter Rabbitson | 4 | +59/-65 | 5 |
803 | Lucas Molas | 1 | +60/-57 | 7 |
804 | nisdas | 3 | +107/-6 | 5 |
805 | why | 2 | +80/-20 | 5 |
806 | ShengTao | 2 | +46/-45 | 16 |
807 | nisainan | 2 | +40/-50 | 12 |
808 | Mikel Cortes | 3 | +44/-36 | 10 |
809 | Chinmay Kousik | 1 | +64/-14 | 6 |
810 | ZenGround0 | 2 | +62/-15 | 6 |
811 | Antonio Navarro | 3 | +58/-3 | 8 |
812 | Michael Muré | 2 | +49/-2 | 2 |
813 | Dirk McCormick | 1 | +3/-42 | 1 |
814 | kixelated | 1 | +20/-20 | 4 |
815 | Russell Dempsey | 1 | +19/-17 | 3 |
816 | Karthik Nallabolu | 1 | +17/-17 | 1 |
817 | protolambda | 1 | +26/-4 | 4 |
818 | cliffc-spirent | 1 | +25/-5 | 2 |
819 | Raúl Kripalani | 1 | +29/-0 | 1 |
820 | Håvard Anda Estensen | 1 | +9/-19 | 6 |
821 | vyzo | 1 | +11/-12 | 1 |
822 | anorth | 1 | +15/-8 | 3 |
823 | shade34321 | 1 | +21/-1 | 2 |
824 | Toby | 2 | +9/-13 | 6 |
825 | Nishant Das | 1 | +9/-9 | 5 |
826 | Jeromy Johnson | 1 | +17/-0 | 3 |
827 | Oleg | 1 | +14/-1 | 1 |
828 | Hector Sanjuan | 6 | +4/-11 | 6 |
829 | Łukasz Magiera | 2 | +10/-4 | 2 |
830 | Aayush Rajasekaran | 1 | +7/-7 | 1 |
831 | Adin Schmahmann | 1 | +4/-3 | 1 |
832 | Stojan Dimitrovski | 1 | +6/-0 | 1 |
833 | Mathew Jacob | 1 | +3/-3 | 1 |
834 | Vladimir Ivanov | 1 | +2/-2 | 1 |
835 | Nex Zhu | 1 | +4/-0 | 2 |
836 | Michele Mastrogiovanni | 1 | +2/-2 | 1 |
837 | Louis Thibault | 1 | +4/-0 | 1 |
838 | Eric Myhre | 1 | +3/-1 | 1 |
839 | Kubo Mage | 2 | +2/-1 | 2 |
840 | tabcat | 1 | +1/-1 | 1 |
841 | Viacheslav | 1 | +1/-1 | 1 |
842 | Max Inden | 1 | +1/-1 | 1 |
843 | Manic Security | 1 | +1/-1 | 1 |
844 | Jc0803kevin | 1 | +1/-1 | 1 |
845 | David Brouwer | 1 | +2/-0 | 2 |
846 | Rong Zhou | 1 | +1/-0 | 1 |
847 | Neel Virdy | 1 | +1/-0 | 1 |