| 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 | |