master
md 212 lines 11.3 KB
Rendered Raw
1 # Kubo changelog v0.17
2
3 ## v0.17.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.17](#kubo-changelog-v017)
10 - [v0.17.0](#v0170)
11 - [Overview](#overview)
12 - [🔦 Highlights](#-highlights)
13 - [libp2p resource management enabled by default](#libp2p-resource-management-enabled-by-default)
14 - [Implicit connection manager limits](#implicit-connection-manager-limits)
15 - [TAR Response Format on Gateways](#tar-response-format-on-gateways)
16 - [Dialling `/wss` peer behind a reverse proxy](#dialling-wss-peer-behind-a-reverse-proxy)
17 - [Changelog](#changelog)
18 - [Contributors](#contributors)
19
20 ### 🔦 Highlights
21
22 <!-- TODO -->
23
24 #### libp2p resource management enabled by default
25
26 To help protect nodes from DoS (resource exhaustion) and eclipse attacks,
27 go-libp2p released a [Network Resource Manager](https://github.com/libp2p/go-libp2p/tree/master/p2p/host/resource-manager) with a host of improvements throughout 2022.
28
29 Kubo first [exposed this functionality in Kubo 0.13](https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.13.md#-libp2p-network-resource-manager-swarmresourcemgr),
30 but it was disabled by default.
31
32 The resource manager is now enabled by default to protect nodes.
33 The defaults balance providing protection from various attacks while still enabling normal usecases to work as expected.
34
35 If you want to adjust the defaults, then you can:
36 1. bound the amount of memory and file descriptors that libp2p will use with [Swarm.ResourceMgr.MaxMemory](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgrmaxmemory)
37 and [Swarm.ResourceMgr.MaxFileDescriptors](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgrmaxfiledescriptors) and/or
38 2. override any specific resource scopes/limits with [Swarm.ResourceMgr.Limits](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgrlimits)
39
40 See [Swarm.ResourceMgr](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmresourcemgr) for
41 1. what limits are set by default,
42 2. example override configuration,
43 3. how to access Prometheus metrics and view Grafana dashboards of resource usage, and
44 4. how to set explicit "allow lists" to protect against eclipse attacks.
45
46 #### Implicit connection manager limits
47
48 Starting with this release, `ipfs init` will no longer store the default
49 [Connection Manager](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmconnmgr)
50 limits in the user config under `Swarm.ConnMgr`.
51
52 Users are still free to use this setting to set custom values, but for most use
53 cases, the defaults provided with the latest Kubo release should be sufficient.
54
55 To remove any custom limits and switch to the implicit defaults managed by Kubo:
56
57 ```console
58 $ ipfs config --json Swarm.ConnMgr '{}'
59 ```
60
61 We will be adjusting defaults in the future releases.
62
63 #### TAR Response Format on Gateways
64
65 Implemented [IPIP-288](https://github.com/ipfs/specs/pull/288) which adds
66 support for requesting deserialized UnixFS directory as a TAR stream.
67
68 HTTP clients can request TAR response by passing the `?format=tar` URL
69 parameter, or setting `Accept: application/x-tar` HTTP header:
70
71 ```console
72 $ export DIR_CID=bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
73 $ curl -H "Accept: application/x-tar" "http://127.0.0.1:8080/ipfs/$DIR_CID" > dir.tar
74 $ curl "http://127.0.0.1:8080/ipfs/$DIR_CID?format=tar" | tar xv
75 bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
76 bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1 - alt.txt
77 bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1 - transcript.txt
78 bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1.png
79 ```
80
81 #### Dialling `/wss` peer behind a reverse proxy
82
83 This release resolves a regression introduced in Kubo 0.16, making it possible
84 again to connect to a peer over a WebSockets endpoint (`/wss`) that is
85 deployed behind a reverse proxy.
86
87 More details in [go-libp2p release notes](https://github.com/libp2p/go-libp2p/releases/tag/v0.23.3).
88
89 ### Changelog
90
91 <details><summary>Full Changelog</summary>
92
93 - github.com/ipfs/kubo:
94 - chore: bump version to v0.17.0 ([ipfs/kubo#9427](https://github.com/ipfs/kubo/pull/9427))
95 - chore: bump version to v0.17.0-rc2 ([ipfs/kubo#9414](https://github.com/ipfs/kubo/pull/9414))
96 - Doc improvements and changelog for resource manager (#9413) ([ipfs/kubo#9413](https://github.com/ipfs/kubo/pull/9413))
97 - fix(docs): typo
98 - docs: document /wss fixes in 0.17
99 - refactor(config): remove Swarm.ConnMgr defaults
100 - fix(config): skip nulls in ResourceMgr
101 - Apply go fmt
102 - Update core/node/libp2p/rcmgr_defaults.go
103 - Remove limitation by HighWater param.
104 - Fix RM errors when acceleratedDHT is active
105 - docs: Deprecate Reframe on docs. (#9401) ([ipfs/kubo#9401](https://github.com/ipfs/kubo/pull/9401))
106 - chore: bump version to v0.17.0-rc1 ([ipfs/kubo#9394](https://github.com/ipfs/kubo/pull/9394))
107 - feat: Improve ResourceManager UX (#9338) ([ipfs/kubo#9338](https://github.com/ipfs/kubo/pull/9338))
108 - feat: ipfs-webui 2.20.0
109 - docs: note log tail is broken (#9383) ([ipfs/kubo#9383](https://github.com/ipfs/kubo/pull/9383))
110 - feat(gateway): TAR response format (#9029) ([ipfs/kubo#9029](https://github.com/ipfs/kubo/pull/9029))
111 - fix: error when using huge json limit file
112 - chore: go-multicodec v0.7.0
113 - fix: remove old unused buggy coredag code
114 - feat: Add command line completion for fish
115 - chore: delete snap configuration ([ipfs/kubo#9352](https://github.com/ipfs/kubo/pull/9352))
116 - docs: update scoop package
117 - docs: init release issue template improvement process v0.16.0 ([ipfs/kubo#9283](https://github.com/ipfs/kubo/pull/9283))
118 - feat: add delegated routing metrics (#9354) ([ipfs/kubo#9354](https://github.com/ipfs/kubo/pull/9354))
119 - chore: create v0.17.md changelog ([ipfs/kubo#9353](https://github.com/ipfs/kubo/pull/9353))
120 - docs: pin remote arg
121 - feat: webui@v2.19.0
122 - test(car): export/import of (dag-)cbor/json codecs
123 - add refs local alias repo ls (#9320) ([ipfs/kubo#9320](https://github.com/ipfs/kubo/pull/9320))
124 - docs(cmds): Clarify block fetching of refs endpoint.
125 - chore(cmds): dag import: use ipld legacy decode ([ipfs/kubo#9219](https://github.com/ipfs/kubo/pull/9219))
126 - fix ipfs swarm peering crash in offline mode (#9261) ([ipfs/kubo#9261](https://github.com/ipfs/kubo/pull/9261))
127 - feat: remove provider delay interval in bitswap (#9053) ([ipfs/kubo#9053](https://github.com/ipfs/kubo/pull/9053))
128 - feat: --reset flag on swarm limit command (#9310) ([ipfs/kubo#9310](https://github.com/ipfs/kubo/pull/9310))
129 - fix: add InlineDNSLink flag to PublicGateways config (#9328) ([ipfs/kubo#9328](https://github.com/ipfs/kubo/pull/9328))
130 - docs: Fix typo and grammar in README
131 - ci: add stylecheck to golangci-lint (#9334) ([ipfs/kubo#9334](https://github.com/ipfs/kubo/pull/9334))
132 - Fix: `swarm stats all` command
133 - Merge release v0.16.0 back into master ([ipfs/kubo#9324](https://github.com/ipfs/kubo/pull/9324))
134 - fix: Set default Methods value to nil
135 - docs: add WebTransport docs ([ipfs/kubo#9314](https://github.com/ipfs/kubo/pull/9314))
136 - chore: bump version to 0.17.0-dev
137 - github.com/ipfs/go-delegated-routing (v0.6.0 -> v0.7.0):
138 - Release v0.7.0
139 - feat: add latency & count metrics for content routing client (#59) ([ipfs/go-delegated-routing#59](https://github.com/ipfs/go-delegated-routing/pull/59))
140 - docs: add basic readme ([ipfs/go-delegated-routing#57](https://github.com/ipfs/go-delegated-routing/pull/57))
141 - sync: update CI config files ([ipfs/go-delegated-routing#40](https://github.com/ipfs/go-delegated-routing/pull/40))
142 - added link to reframe blog post (#54) ([ipfs/go-delegated-routing#54](https://github.com/ipfs/go-delegated-routing/pull/54))
143 - github.com/ipfs/go-ipfs-files (v0.1.1 -> v0.2.0):
144 - Release v0.2.0
145 - fix: error when TAR has files outside of root (#56) ([ipfs/go-ipfs-files#56](https://github.com/ipfs/go-ipfs-files/pull/56))
146 - sync: update CI config files ([ipfs/go-ipfs-files#55](https://github.com/ipfs/go-ipfs-files/pull/55))
147 - chore(Directory): add DirIterator API restriction: iterate only once
148 - github.com/ipfs/go-unixfs (v0.4.0 -> v0.4.1):
149 - Update version.json
150 - Fix: panic when childer is nil (#127) ([ipfs/go-unixfs#127](https://github.com/ipfs/go-unixfs/pull/127))
151 - sync: update CI config files (#125) ([ipfs/go-unixfs#125](https://github.com/ipfs/go-unixfs/pull/125))
152 - github.com/ipld/go-ipld-prime (v0.18.0 -> v0.19.0):
153 - Prepare v0.19.0
154 - fix: correct json codec links & bytes handling
155 - test(basicnode): increase test coverage for int and map types (#454) ([ipld/go-ipld-prime#454](https://github.com/ipld/go-ipld-prime/pull/454))
156 - fix: remove reliance on ioutil
157 - run gofmt -s
158 - bump go.mod to Go 1.18 and run go fix
159 - feat: add kinded union to gendemo
160 - github.com/libp2p/go-libp2p (v0.23.2 -> v0.23.4):
161 - Release v0.23.4 (#1864) ([libp2p/go-libp2p#1864](https://github.com/libp2p/go-libp2p/pull/1864))
162 - release v0.23.3
163 - websocket: set the HTTP host header in WSS
164 - github.com/libp2p/go-netroute (v0.2.0 -> v0.2.1):
165 - v0.2.1 ([libp2p/go-netroute#27](https://github.com/libp2p/go-netroute/pull/27))
166 - fix(phys-addr-length): fix physical address length mismatch ([libp2p/go-netroute#29](https://github.com/libp2p/go-netroute/pull/29))
167 - compare priority if route rule's dst mask is same size
168 - compare priority if route rule's dst mask is same size
169 - sync: update CI config files (#24) ([libp2p/go-netroute#24](https://github.com/libp2p/go-netroute/pull/24))
170 - github.com/marten-seemann/qpack (v0.2.1 -> v0.3.0):
171 - update to Ginkgo v2 (#30) ([marten-seemann/qpack#30](https://github.com/marten-seemann/qpack/pull/30))
172 - return write error when encoding header fields (#28) ([marten-seemann/qpack#28](https://github.com/marten-seemann/qpack/pull/28))
173 - update Go versions (#29) ([marten-seemann/qpack#29](https://github.com/marten-seemann/qpack/pull/29))
174 - remove CircleCI build status from README
175 - add link to QPACK RFC to README
176 - remove build constraint from fuzzer ([marten-seemann/qpack#24](https://github.com/marten-seemann/qpack/pull/24))
177 - github.com/multiformats/go-multicodec (v0.6.0 -> v0.7.0):
178 - feat: update ./multicodec/table.csv ([multiformats/go-multicodec#71](https://github.com/multiformats/go-multicodec/pull/71))
179
180 </details>
181
182 ### Contributors
183
184 | Contributor | Commits | Lines ± | Files Changed |
185 |-------------|---------|---------|---------------|
186 | Antonio Navarro Perez | 11 | +780/-987 | 31 |
187 | Marcin Rataj | 14 | +791/-543 | 26 |
188 | web3-bot | 7 | +393/-427 | 71 |
189 | galargh | 20 | +309/-277 | 21 |
190 | Gus Eggert | 5 | +358/-222 | 58 |
191 | Henrique Dias | 3 | +409/-30 | 13 |
192 | Dustin Long | 1 | +314/-0 | 2 |
193 | Marco Munizaga | 2 | +211/-46 | 11 |
194 | Rod Vagg | 4 | +188/-62 | 13 |
195 | Jorropo | 2 | +4/-219 | 5 |
196 | Steve Loeppky | 1 | +115/-72 | 4 |
197 | Andreas Källberg | 1 | +145/-5 | 5 |
198 | Lucas Molas | 3 | +76/-53 | 9 |
199 | snyh | 2 | +36/-18 | 2 |
200 | Piotr Galar | 2 | +31/-4 | 2 |
201 | Ondrej Kokes | 1 | +25/-4 | 2 |
202 | Marten Seemann | 6 | +14/-14 | 14 |
203 | Yann Autissier | 1 | +14/-4 | 1 |
204 | maxos | 1 | +8/-1 | 2 |
205 | reidlw | 1 | +1/-4 | 1 |
206 | Russell Dempsey | 2 | +4/-1 | 2 |
207 | Ian Davis | 1 | +4/-0 | 2 |
208 | Daniel Norman | 1 | +3/-1 | 1 |
209 | Will Scott | 1 | +1/-1 | 1 |
210 | Nikhilesh Susarla | 1 | +2/-0 | 2 |
211 | Jamie Wilkinson | 1 | +1/-1 | 1 |
212 | Will | 1 | +0/-1 | 1 |