master
md 209 lines 13.1 KB
Rendered Raw
1 # Kubo changelog v0.24
2
3 - [v0.24.0](#v0240)
4
5 ## v0.24.0
6
7 - [Overview](#overview)
8 - [🔦 Highlights](#-highlights)
9 - [Support for content blocking](#support-for-content-blocking)
10 - [Gateway: the root of the CARs are no longer meaningful](#gateway-the-root-of-the-cars-are-no-longer-meaningful)
11 - [IPNS: improved publishing defaults](#ipns-improved-publishing-defaults)
12 - [IPNS: record TTL is used for caching](#ipns-record-ttl-is-used-for-caching)
13 - [Experimental Transport: WebRTC Direct](#experimental-transport-webrtc-direct)
14 - [📝 Changelog](#-changelog)
15 - [👨‍👩‍👧‍👦 Contributors](#-contributors)
16
17 ### Overview
18
19 ### 🔦 Highlights
20
21 #### Support for content blocking
22
23 This Kubo release ships with built-in content-blocking subsystem [announced earlier this year](https://blog.ipfs.tech/2023-content-blocking-for-the-ipfs-stack/).
24 Content blocking is an opt-in decision made by the operator of `ipfs daemon`.
25 The official build does not ship with any denylists.
26
27 Learn more at [`/docs/content-blocking.md`](https://github.com/ipfs/kubo/blob/master/docs/content-blocking.md)
28
29 #### Gateway: the root of the CARs are no longer meaningful
30
31 When requesting a CAR from the gateway, the root of the CAR might no longer be
32 meaningful. By default, the CAR root will be the last resolvable segment of the
33 path. However, in situations where the path cannot be resolved, such as when
34 the path does not exist, a CAR will be sent with a root of `bafkqaaa` (empty CID).
35 This CAR will contain all blocks necessary to validate that the path does not exist.
36
37 #### IPNS: improved publishing defaults
38
39 This release changes the default values used when publishing IPNS record
40 via `ipfs name publish` command:
41
42 - Default `--lifetime` increased from `24h` to `48h` to take full advantage of
43 the increased expiration window of Amino DHT
44 ([go-libp2p-kad-dht#793](https://github.com/libp2p/go-libp2p-kad-dht/pull/793))
45 - Default `--ttl` increased from `1m` to `1h` to improve website caching and follow
46 saner defaults present in similar systems like DNS
47 ([specs#371](https://github.com/ipfs/specs/pull/371))
48
49 This change only impacts the implicit defaults, when mentioned parameters are omitted
50 during publishing. Users are free to override the default if different value
51 makes more sense for their use case.
52
53 #### IPNS: record TTL is used for caching
54
55 In this release, we've made significant improvements to IPNS caching.
56
57 Previously, the TTL value in IPNS records was not utilized, and the
58 `boxo/namesys` library maintained a static one-minute resolution cache.
59
60 With this update, IPNS publishers gain more control over how long a valid IPNS
61 record remains cached before checking an upstream routing system, such as Amino
62 DHT, for updates. The TTL value in the IPNS record now serves as a hint for:
63
64 - `boxo/namesys`: the internal cache, determining how long the IPNS resolution
65 result is cached before asking upstream routing systems for updates.
66 - `boxo/gateway`: the `Cache-Control` HTTP header in responses to requests made
67 for `/ipns/name` content paths.
68
69 These changes make it easier for rarely updated IPNS-hosted websites to be
70 cached more efficiently and load faster in browser contexts.
71
72 #### Experimental Transport: WebRTC Direct
73
74 This Kubo release includes the initial work towards WebRTC Direct
75 introduced in [`go-libp2p`](https://github.com/libp2p/go-libp2p/releases/tag/v0.32.0) v0.32:
76
77 > [WebRTC Direct](https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md)
78 > allows browser nodes to connect to go-libp2p nodes directly,
79 > without any configuration (e.g. TLS certificates) needed on the go-libp2p
80 > side. This is useful for browser nodes that aren’t able to use
81 > [WebTransport](https://web.archive.org/web/20260107053250/https://blog.libp2p.io/2022-12-19-libp2p-webtransport/).
82
83 The `/webrtc-direct` transport is disabled by default in Kubo 0.24,
84 and not ready for production use yet, but we plan to enable it in a future release.
85
86 See [`Swarm.Transports.Network.WebRTCDirect`](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmtransportsnetworkwebrtcdirect)
87 to learn how to enable it manually, and what current limitations are.
88
89 ### 📝 Changelog
90
91 <details><summary>Full Changelog</summary>
92
93 - github.com/ipfs/kubo:
94 - chore: update version
95 - fix: allow event emitting to happen in parallel with getting the query channel
96 - fixes to routing put command (#10205) ([ipfs/kubo#10205](https://github.com/ipfs/kubo/pull/10205))
97 - docs: fix accelerated-dht-client
98 - docs/config: remove extra commas in PublicGateways example entries
99 - chore: update version
100 - docs: make it clear Web RTC Direct is experimental
101 - feat: add WebRTC Direct support
102 - docs: update EARLY_TESTERS.md (#10194) ([ipfs/kubo#10194](https://github.com/ipfs/kubo/pull/10194))
103 - Release: v0.24.0-1 ([ipfs/kubo#10190](https://github.com/ipfs/kubo/pull/10190))
104 - github.com/ipfs/boxo (v0.13.1 -> v0.15.0):
105 - Release v0.15.0 ([ipfs/boxo#505](https://github.com/ipfs/boxo/pull/505))
106 - Release v0.14.0 ([ipfs/boxo#500](https://github.com/ipfs/boxo/pull/500))
107 - github.com/ipfs/go-block-format (v0.1.2 -> v0.2.0):
108 - v0.2.0 bump
109 - github.com/ipfs/go-graphsync (v0.15.1 -> v0.16.0):
110 - chore: release 0.16.0
111 - chore: bump go-libp2p to 0.32.0
112 - github.com/ipfs/go-ipld-format (v0.5.0 -> v0.6.0):
113 - v0.6.0 bump
114 - chore: update deps
115 - fix: stop using the deprecated io/ioutil package
116 - github.com/libp2p/go-libp2p (v0.31.0 -> v0.32.1):
117 - release v0.32.1 (#2637) ([libp2p/go-libp2p#2637](https://github.com/libp2p/go-libp2p/pull/2637))
118 - swarm: fix timer Leak in the dial loop (#2636) ([libp2p/go-libp2p#2636](https://github.com/libp2p/go-libp2p/pull/2636))
119 - release v0.32.0 (#2625) ([libp2p/go-libp2p#2625](https://github.com/libp2p/go-libp2p/pull/2625))
120 - chore: update js-libp2p examples repo (#2624) ([libp2p/go-libp2p#2624](https://github.com/libp2p/go-libp2p/pull/2624))
121 - identify: don't filter dns addresses based on remote addr type (#2553) ([libp2p/go-libp2p#2553](https://github.com/libp2p/go-libp2p/pull/2553))
122 - webrtc: fix race in TestRemoveConnByUfrag (#2620) ([libp2p/go-libp2p#2620](https://github.com/libp2p/go-libp2p/pull/2620))
123 - swarm: fix recursive resolving of DNS multiaddrs (#2564) ([libp2p/go-libp2p#2564](https://github.com/libp2p/go-libp2p/pull/2564))
124 - ci: migrate to renamed interop test action (#2617) ([libp2p/go-libp2p#2617](https://github.com/libp2p/go-libp2p/pull/2617))
125 - quic: update quic-go to v0.39.1, set a static resumption token generator key (#2572) ([libp2p/go-libp2p#2572](https://github.com/libp2p/go-libp2p/pull/2572))
126 - test/basichost: fix flaky test due to rcmgr (#2613) ([libp2p/go-libp2p#2613](https://github.com/libp2p/go-libp2p/pull/2613))
127 - swarm: use typed atomics (#2612) ([libp2p/go-libp2p#2612](https://github.com/libp2p/go-libp2p/pull/2612))
128 - swarm: cleanup stream handler goroutine (#2610) ([libp2p/go-libp2p#2610](https://github.com/libp2p/go-libp2p/pull/2610))
129 - circuitv2: don't check ASN for private addrs (#2611) ([libp2p/go-libp2p#2611](https://github.com/libp2p/go-libp2p/pull/2611))
130 - swarm: use happy eyeballs ranking for TCP dials (#2573) ([libp2p/go-libp2p#2573](https://github.com/libp2p/go-libp2p/pull/2573))
131 - webrtc: fix race in TestMuxedConnection (#2607) ([libp2p/go-libp2p#2607](https://github.com/libp2p/go-libp2p/pull/2607))
132 - tcp: fix build on riscv64 (#2590) ([libp2p/go-libp2p#2590](https://github.com/libp2p/go-libp2p/pull/2590))
133 - Fix missing deprecation tag (#2605) ([libp2p/go-libp2p#2605](https://github.com/libp2p/go-libp2p/pull/2605))
134 - swarm: wait for transient connections to upgrade for NewStream (#2542) ([libp2p/go-libp2p#2542](https://github.com/libp2p/go-libp2p/pull/2542))
135 - docs: fix typos (#2604) ([libp2p/go-libp2p#2604](https://github.com/libp2p/go-libp2p/pull/2604))
136 - webrtc: correctly report incoming packet address on muxed connection (#2586) ([libp2p/go-libp2p#2586](https://github.com/libp2p/go-libp2p/pull/2586))
137 - swarm: add loopback to low timeout filter (#2595) ([libp2p/go-libp2p#2595](https://github.com/libp2p/go-libp2p/pull/2595))
138 - Fix typos in comments and a test failure message (#2600) ([libp2p/go-libp2p#2600](https://github.com/libp2p/go-libp2p/pull/2600))
139 - libp2phttp: don't strip `/` suffix when mounting handler (#2552) ([libp2p/go-libp2p#2552](https://github.com/libp2p/go-libp2p/pull/2552))
140 - interop: fix redis env var (#2585) ([libp2p/go-libp2p#2585](https://github.com/libp2p/go-libp2p/pull/2585))
141 - quicreuse: remove QUIC metrics tracer (#2582) ([libp2p/go-libp2p#2582](https://github.com/libp2p/go-libp2p/pull/2582))
142 - config: warn if connmgr limits conflict with rcmgr (#2527) ([libp2p/go-libp2p#2527](https://github.com/libp2p/go-libp2p/pull/2527))
143 - update gomock to v0.3.0 (#2581) ([libp2p/go-libp2p#2581](https://github.com/libp2p/go-libp2p/pull/2581))
144 - webrtc: fix deadlock on connection close (#2580) ([libp2p/go-libp2p#2580](https://github.com/libp2p/go-libp2p/pull/2580))
145 - webrtc: put buffer back to pool (#2574) ([libp2p/go-libp2p#2574](https://github.com/libp2p/go-libp2p/pull/2574))
146 - webrtc: fail Write early if deadline has exceeded before the call (#2578) ([libp2p/go-libp2p#2578](https://github.com/libp2p/go-libp2p/pull/2578))
147 - swarm: fix DialPeer behaviour for transient connections (#2547) ([libp2p/go-libp2p#2547](https://github.com/libp2p/go-libp2p/pull/2547))
148 - websocket: don't resolve /dnsaddr addresses (#2571) ([libp2p/go-libp2p#2571](https://github.com/libp2p/go-libp2p/pull/2571))
149 - core/peer: remove deprecated ID.Pretty method (#2565) ([libp2p/go-libp2p#2565](https://github.com/libp2p/go-libp2p/pull/2565))
150 - core/peer: remove deprecated Encode function (#2566) ([libp2p/go-libp2p#2566](https://github.com/libp2p/go-libp2p/pull/2566))
151 - mock: use go.uber.org/mock (#2540) ([libp2p/go-libp2p#2540](https://github.com/libp2p/go-libp2p/pull/2540))
152 - add WebRTC Direct transport implementation (#2337) ([libp2p/go-libp2p#2337](https://github.com/libp2p/go-libp2p/pull/2337))
153 - upgrader: drop support for multistream simultaneous open (#2557) ([libp2p/go-libp2p#2557](https://github.com/libp2p/go-libp2p/pull/2557))
154 - examples: stop using deprecated peer.ID.Pretty (#2563) ([libp2p/go-libp2p#2563](https://github.com/libp2p/go-libp2p/pull/2563))
155 - swarm: don't dial unspecified addresses (#2560) ([libp2p/go-libp2p#2560](https://github.com/libp2p/go-libp2p/pull/2560))
156 - basichost: handle the SetProtocol error in NewStream (#2555) ([libp2p/go-libp2p#2555](https://github.com/libp2p/go-libp2p/pull/2555))
157 - libp2phttp: don't initialise ServeMux if not nil (#2548) ([libp2p/go-libp2p#2548](https://github.com/libp2p/go-libp2p/pull/2548))
158 - github.com/libp2p/go-libp2p-pubsub (v0.9.3 -> v0.10.0):
159 - chore: update go-libp2p to v0.32 (#548) ([libp2p/go-libp2p-pubsub#548](https://github.com/libp2p/go-libp2p-pubsub/pull/548))
160 - remove usage of deprecated peerid.Pretty method (#542) ([libp2p/go-libp2p-pubsub#542](https://github.com/libp2p/go-libp2p-pubsub/pull/542))
161 - Revert "fix: topicscore params can't be set for dynamically subscribed topic (#540)" (#541) ([libp2p/go-libp2p-pubsub#541](https://github.com/libp2p/go-libp2p-pubsub/pull/541))
162 - fix: topicscore params can't be set for dynamically subscribed topic (#540) ([libp2p/go-libp2p-pubsub#540](https://github.com/libp2p/go-libp2p-pubsub/pull/540))
163 - github.com/multiformats/go-multiaddr (v0.11.0 -> v0.12.0):
164 - release v0.12.0 (#223) ([multiformats/go-multiaddr#223](https://github.com/multiformats/go-multiaddr/pull/223))
165 - net: consider /dns/localhost as private address (#221) ([multiformats/go-multiaddr#221](https://github.com/multiformats/go-multiaddr/pull/221))
166 - net: consider dns addresses as public (#220) ([multiformats/go-multiaddr#220](https://github.com/multiformats/go-multiaddr/pull/220))
167 - github.com/multiformats/go-multistream (v0.4.1 -> v0.5.0):
168 - remove support for the simultaneous open extension (#107) ([multiformats/go-multistream#107](https://github.com/multiformats/go-multistream/pull/107))
169
170 </details>
171
172 ### 👨‍👩‍👧‍👦 Contributors
173
174 | Contributor | Commits | Lines ± | Files Changed |
175 |-------------|---------|---------|---------------|
176 | Henrique Dias | 27 | +4505/-3853 | 244 |
177 | Marten Seemann | 18 | +4260/-1173 | 101 |
178 | Sukun | 24 | +1499/-340 | 79 |
179 | Andrew Gillis | 4 | +169/-1025 | 16 |
180 | Adin Schmahmann | 4 | +788/-184 | 19 |
181 | Hector Sanjuan | 6 | +619/-72 | 19 |
182 | Steven Allen | 11 | +489/-101 | 14 |
183 | Jorropo | 10 | +221/-192 | 28 |
184 | Łukasz Magiera | 2 | +306/-9 | 3 |
185 | Lucas Molas | 1 | +183/-52 | 2 |
186 | Marcin Rataj | 5 | +160/-25 | 6 |
187 | piersy | 1 | +57/-0 | 6 |
188 | Raúl Kripalani | 1 | +25/-25 | 2 |
189 | Alvin Reyes | 1 | +34/-14 | 1 |
190 | Dennis Trautwein | 1 | +1/-40 | 2 |
191 | Icarus9913 | 1 | +14/-14 | 10 |
192 | Takashi Matsuda | 2 | +18/-1 | 3 |
193 | gammazero | 4 | +8/-5 | 7 |
194 | xiaolou86 | 1 | +6/-6 | 5 |
195 | Daniel Martí | 1 | +9/-2 | 1 |
196 | Rod Vagg | 3 | +5/-5 | 4 |
197 | Andrej Manduch | 1 | +5/-5 | 3 |
198 | vuittont60 | 1 | +4/-4 | 3 |
199 | vyzo | 1 | +5/-1 | 1 |
200 | tkzktk | 1 | +3/-3 | 3 |
201 | tk | 1 | +3/-3 | 2 |
202 | Prem Chaitanya Prathi | 1 | +1/-5 | 1 |
203 | Kay | 2 | +2/-3 | 2 |
204 | Thomas Eizinger | 1 | +2/-2 | 1 |
205 | Steve Loeppky | 1 | +2/-2 | 1 |
206 | Jonas Keunecke | 1 | +2/-2 | 1 |
207 | Alejandro Criado-Pérez | 1 | +1/-1 | 1 |
208 | web3-bot | 1 | +1/-0 | 1 |
209 | Eric | 1 | +1/-0 | 1 |