master
md 341 lines 23.8 KB
Rendered Raw
1 # Kubo changelog v0.30
2
3 - [v0.30.0](#v0300)
4
5 ## v0.30.0
6
7 - [Overview](#overview)
8 - [🔦 Highlights](#-highlights)
9 - [Improved P2P connectivity](#improved-p2p-connectivity)
10 - [Refactored Bitswap and dag-pb chunker](#refactored-bitswap-and-dag-pb-chunker)
11 - [WebRTC-Direct Transport enabled by default](#webrtc-direct-transport-enabled-by-default)
12 - [UnixFS 1.5: Mode and Modification Time Support](#unixfs-15-mode-and-modification-time-support)
13 - [AutoNAT V2 Service Introduced Alongside V1](#autonat-v2-service-introduced-alongside-v1)
14 - [Automated `ipfs version check`](#automated-ipfs-version-check)
15 - [Version Suffix Configuration](#version-suffix-configuration)
16 - [`/unix/` socket support in `Addresses.API`](#unix-socket-support-in-addressesapi)
17 - [Cleaned Up `ipfs daemon` Startup Log](#cleaned-up-ipfs-daemon-startup-log)
18 - [Commands Preserve Specified Hostname](#commands-preserve-specified-hostname)
19 - [📝 Changelog](#-changelog)
20 - [👨‍👩‍👧‍👦 Contributors](#-contributors)
21
22 ### Overview
23
24 ### 🔦 Highlights
25
26 This release took longer and is more packed with fixes and features than usual.
27
28 > [!IMPORTANT]
29 > TLDR: update, it contains many, many fixes.
30
31 #### Improved P2P connectivity
32
33 This release comes with significant go-libp2p update from v0.34.1 to v0.36.3 ([release notes](https://github.com/libp2p/go-libp2p/releases/)).
34
35 It includes multiple fixes to key protocols: [QUIC](https://github.com/libp2p/specs/tree/master/quic)/[Webtransport](https://github.com/libp2p/specs/tree/master/webtransport)/[WebRTC](https://github.com/libp2p/specs/tree/master/webrtc), Connection Upgrades through Relay ([DCUtR](https://github.com/libp2p/specs/blob/master/relay/DCUtR.md)), and [Secure WebSockets](https://github.com/libp2p/specs/pull/624).
36
37 Also, peers that are behind certain types of NAT will now be more reachable. For this alone, Kubo users are highly encouraged to upgrade.
38
39 #### Refactored Bitswap and dag-pb chunker
40
41 Some workloads may experience improved memory profile thanks to optimizations from Boxo SDK [v0.23.0](https://github.com/ipfs/boxo/releases/tag/v0.23.0).
42
43 > [!IMPORTANT]
44 > Storage providers should upgrade to take advantage of the Bitswap server fix, which resolves the issue of greedy peers depleting available wantlist slots for their PeerID, resulting in stalled downloads.
45
46 #### WebRTC-Direct Transport enabled by default
47
48 Kubo now ships with [WebRTC Direct](https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md) listener enabled by default: `/udp/4001/webrtc-direct`.
49
50 WebRTC Direct complements existing `/wss` (Secure WebSockets) and `/webtransport` transports. Unlike `/wss`, which requires a domain name and a CA-issued TLS certificate, WebRTC Direct works with IPs and can be enabled by default on all Kubo nodes.
51
52 Learn more: [`Swarm.Transports.Network.WebRTCDirect`](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmtransportsnetworkwebrtcdirect)
53
54 > [!NOTE]
55 > Kubo 0.30 includes a migration for existing users that adds `/webrtc-direct` listener on the same UDP port as `/udp/{port}/quic-v1`. This supports the WebRTC-Direct rollout by reusing preexisting UDP firewall settings and port mappings created for QUIC.
56
57 #### UnixFS 1.5: Mode and Modification Time Support
58
59 Kubo now allows users to opt-in to store mode and modification time for files, directories, and symbolic links.
60 By default, if you do not opt-in, the old behavior remains unchanged, and the same CIDs will be generated as before.
61
62 The `ipfs add` CLI options `--preserve-mode` and `--preserve-mtime` can be used to store the original mode and last modified time of the file being added, and `ipfs files stat /ipfs/CID` can be used for inspecting these optional attributes:
63
64 ```console
65 $ touch ./file
66 $ chmod 654 ./file
67 $ ipfs add --preserve-mode --preserve-mtime -Q ./file
68 QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
69
70 $ ipfs files stat /ipfs/QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
71 QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
72 Size: 0
73 CumulativeSize: 22
74 ChildBlocks: 0
75 Type: file
76 Mode: -rw-r-xr-- (0654)
77 Mtime: 13 Aug 2024, 21:15:31 UTC
78 ```
79
80 The CLI and HTTP RPC options `--mode`, `--mtime` and `--mtime-nsecs` can be used to set them to arbitrary values.
81
82 Opt-in support for `mode` and `mtime` was also added to MFS (`ipfs files --help`). For more information see `--help` text of `ipfs files touch|stat|chmod` commands.
83
84 Modification time support was also added to the Gateway. If present, value from file's dag-pb is returned in `Last-Modified` HTTP header and requests made with `If-Modified-Since` can produce HTTP 304 not modified response.
85
86 > [!NOTE]
87 > Storing `mode` and `mtime` requires root block to be `dag-pb` and disabled `raw-leaves` setting to create envelope for storing the metadata.
88
89 #### AutoNAT V2 Service Introduced Alongside V1
90
91 The AutoNAT service enables nodes to determine their public reachability on the internet. [AutoNAT V2](https://github.com/libp2p/specs/pull/538) enhances this protocol with improved features. In this release, Kubo will offer both V1 and V2 services to other peers, although it will continue to use only V1 when acting as a client. Future releases will phase out V1, transitioning clients to utilize V2 exclusively.
92
93 For more details, see the [Deployment Plan for AutoNAT V2](https://github.com/ipfs/kubo/issues/10091) and [`AutoNAT`](https://github.com/ipfs/kubo/blob/master/docs/config.md#autonat) configuration options.
94
95 #### Automated `ipfs version check`
96
97 Kubo now performs privacy-preserving version checks using the [libp2p identify protocol](https://github.com/libp2p/specs/blob/master/identify/README.md) on peers detected by the Amino DHT client.
98 If more than 5% of Kubo peers seen by your node are running a newer version, you will receive a log message notification.
99
100 - For manual checks, refer to `ipfs version check --help` for details.
101 - To disable automated checks, set [`Version.SwarmCheckEnabled`](https://github.com/ipfs/kubo/blob/master/docs/config.md#versionswarmcheckenabled) to `false`.
102
103 #### Version Suffix Configuration
104
105 Defining the optional agent version suffix is now simpler. The [`Version.AgentSuffix`](https://github.com/ipfs/kubo/blob/master/docs/config.md#agentsuffix) value from the Kubo config takes precedence over any value provided via `ipfs daemon --agent-version-suffix` (which is still supported).
106
107 > [!NOTE]
108 > Setting a custom version suffix helps with ecosystem analysis, such as Amino DHT reports published at https://stats.ipfs.network
109
110 #### `/unix/` socket support in `Addresses.API`
111
112 This release fixes a bug which blocked users from using Unix domain sockets for [Kubo's RPC](https://docs.ipfs.tech/reference/kubo/rpc/) (instead of a local HTTP port).
113
114 ```console
115 $ ipfs config Addresses.API "/unix/tmp/kubo.socket"
116 $ ipfs daemon # start with rpc socket
117 ...
118 RPC API server listening on /unix/tmp/kubo.socket
119
120 $ # cli client, in different terminal can find socket via /api file
121 $ cat $IPFS_PATH/api
122 /unix/tmp/kubo.socket
123
124 $ # or have it passed via --api
125 $ ipfs --api=/unix/tmp/kubo.socket id
126 ```
127
128 #### Cleaned Up `ipfs daemon` Startup Log
129
130 The `ipfs daemon` startup output has been streamlined to enhance clarity and usability:
131
132 ```console
133 $ ipfs daemon
134 Initializing daemon...
135 Kubo version: 0.30.0
136 Repo version: 16
137 System version: amd64/linux
138 Golang version: go1.22.5
139 PeerID: 12D3KooWQ73s1CQsm4jWwQvdCAtc5w8LatyQt7QLQARk5xdhK9CE
140 Swarm listening on 127.0.0.1:4001 (TCP+UDP)
141 Swarm listening on 192.0.2.10:4001 (TCP+UDP)
142 Swarm listening on [::1]:4001 (TCP+UDP)
143 Swarm listening on [2001:0db8::10]:4001 (TCP+UDP)
144 Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.
145 RPC API server listening on /ip4/127.0.0.1/tcp/5001
146 WebUI: http://127.0.0.1:5001/webui
147 Gateway server listening on /ip4/127.0.0.1/tcp/8080
148 Daemon is ready
149 ```
150
151 The previous lengthy listing of all listener and announced multiaddrs has been removed due to its complexity, especially with modern libp2p nodes sharing multiple transports and long lists of `/webtransport` and `/webrtc-direct` certhashes.
152 The output now features a simplified list of swarm listeners, displayed in the format `host:port (TCP+UDP)`, which provides essential information for debugging connectivity issues, particularly related to port forwarding.
153 Announced libp2p addresses are no longer printed on startup, because libp2p may change or augment them based on AutoNAT, relay, and UPnP state. Instead, users are prompted to run `ipfs id` to obtain up-to-date list of listeners and announced multiaddrs in libp2p format.
154
155 #### Commands Preserve Specified Hostname
156
157 When executing a [CLI command](https://docs.ipfs.tech/reference/kubo/cli/) over [Kubo RPC API](https://docs.ipfs.tech/reference/kubo/rpc/), if a hostname is specified by `--api=/dns4/<domain>/` the resulting HTTP request now contains the hostname, instead of the the IP address that the hostname resolved to, as was the previous behavior. This makes it easier for those trying to run Kubo behind a reverse proxy using hostname-based rules.
158
159 #### Commands Preserve Specified Hostname
160
161 When executing a [CLI command](https://docs.ipfs.tech/reference/kubo/cli/) over [Kubo RPC API](https://docs.ipfs.tech/reference/kubo/rpc/), if a hostname is specified by `--api=/dns4/<domain>/` the resulting HTTP request now contains the hostname, instead of the the IP address that the hostname resolved to, as was the previous behavior. This makes it easier for those trying to run Kubo behind a reverse proxy using hostname-based rules.
162
163 ### 📝 Changelog
164
165 <details><summary>Full Changelog</summary>
166
167 - github.com/ipfs/kubo:
168 - chore: set version to 0.30.0
169 - chore: bump CurrentVersionNumber
170 - chore: boxo v0.23.0 and go-libp2p v0.36.3 (#10507) ([ipfs/kubo#10507](https://github.com/ipfs/kubo/pull/10507))
171 - fix: switch back to go 1.22 (#10502) ([ipfs/kubo#10502](https://github.com/ipfs/kubo/pull/10502))
172 - chore: update go-unixfsnode, cmds, and boxo (#10494) ([ipfs/kubo#10494](https://github.com/ipfs/kubo/pull/10494))
173 - fix(cli): preserve hostname specified with --api in http request headers (#10497) ([ipfs/kubo#10497](https://github.com/ipfs/kubo/pull/10497))
174 - chore: upgrade to go 1.23 (#10486) ([ipfs/kubo#10486](https://github.com/ipfs/kubo/pull/10486))
175 - fix: error during config when running benchmarks (#10495) ([ipfs/kubo#10495](https://github.com/ipfs/kubo/pull/10495))
176 - chore: update version to rc-2
177 - chore: update version
178 - chore: fix function name (#10481) ([ipfs/kubo#10481](https://github.com/ipfs/kubo/pull/10481))
179 - feat: Support storing UnixFS 1.5 Mode and ModTime (#10478) ([ipfs/kubo#10478](https://github.com/ipfs/kubo/pull/10478))
180 - fix(rpc): cross-platform support for /unix/ socket maddrs in Addresses.API ([ipfs/kubo#10019](https://github.com/ipfs/kubo/pull/10019))
181 - chore(daemon): sort listeners (#10480) ([ipfs/kubo#10480](https://github.com/ipfs/kubo/pull/10480))
182 - feat(daemon): improve stdout on startup (#10472) ([ipfs/kubo#10472](https://github.com/ipfs/kubo/pull/10472))
183 - fix(daemon): panic in kubo/daemon.go:595 (#10473) ([ipfs/kubo#10473](https://github.com/ipfs/kubo/pull/10473))
184 - feat: webui v4.3.0 (#10477) ([ipfs/kubo#10477](https://github.com/ipfs/kubo/pull/10477))
185 - docs(readme): add Gentoo Linux (#10474) ([ipfs/kubo#10474](https://github.com/ipfs/kubo/pull/10474))
186 - libp2p: default to preferring TLS ([ipfs/kubo#10227](https://github.com/ipfs/kubo/pull/10227))
187 - docs: document unofficial Ubuntu PPA ([ipfs/kubo#10467](https://github.com/ipfs/kubo/pull/10467))
188 - feat: run AutoNAT V2 service in addition to V1 (#10468) ([ipfs/kubo#10468](https://github.com/ipfs/kubo/pull/10468))
189 - feat: go-libp2p 0.36 and /webrtc-direct listener (#10463) ([ipfs/kubo#10463](https://github.com/ipfs/kubo/pull/10463))
190 - chore: update dependencies (#10462)(#10466) ([ipfs/kubo#10466](https://github.com/ipfs/kubo/pull/10466))
191 - feat: periodic version check and json config (#10438) ([ipfs/kubo#10438](https://github.com/ipfs/kubo/pull/10438))
192 - docs: clarify pnet limitations
193 - docs: "error mounting: could not resolve name" (#10449) ([ipfs/kubo#10449](https://github.com/ipfs/kubo/pull/10449))
194 - docs: update ipfs-swarm-key-gen example (#10453) ([ipfs/kubo#10453](https://github.com/ipfs/kubo/pull/10453))
195 - chore: update deps incl. boxo v0.21.0 (#10444) ([ipfs/kubo#10444](https://github.com/ipfs/kubo/pull/10444))
196 - chore: go-libp2p 0.35.1 (#10430) ([ipfs/kubo#10430](https://github.com/ipfs/kubo/pull/10430))
197 - docsa: update RELEASE_CHECKLIST.md
198 - chore: create next changelog (#10443) ([ipfs/kubo#10443](https://github.com/ipfs/kubo/pull/10443))
199 - Merge Release: v0.29.0 [skip changelog] ([ipfs/kubo#10442](https://github.com/ipfs/kubo/pull/10442))
200 - fix(cli): unify --name param in ls and add (#10439) ([ipfs/kubo#10439](https://github.com/ipfs/kubo/pull/10439))
201 - fix(libp2p): streams config validation in resource manager (#10435) ([ipfs/kubo#10435](https://github.com/ipfs/kubo/pull/10435))
202 - chore: fix some typos (#10396) ([ipfs/kubo#10396](https://github.com/ipfs/kubo/pull/10396))
203 - chore: update version
204 - github.com/ipfs/boxo (v0.20.0 -> v0.23.0):
205 - Release v0.23.0 ([ipfs/boxo#669](https://github.com/ipfs/boxo/pull/669))
206 - docs(changelog): move entry to correct release
207 - Release v0.22.0 ([ipfs/boxo#654](https://github.com/ipfs/boxo/pull/654))
208 - Release v0.21.0 ([ipfs/boxo#622](https://github.com/ipfs/boxo/pull/622))
209 - github.com/ipfs/go-ipfs-cmds (v0.11.0 -> v0.13.0):
210 - chore: release v0.13.0 (#261) ([ipfs/go-ipfs-cmds#261](https://github.com/ipfs/go-ipfs-cmds/pull/261))
211 - chore: release v0.12.0 (#259) ([ipfs/go-ipfs-cmds#259](https://github.com/ipfs/go-ipfs-cmds/pull/259))
212 - github.com/ipfs/go-unixfsnode (v1.9.0 -> v1.9.1):
213 - Update release version ([ipfs/go-unixfsnode#76](https://github.com/ipfs/go-unixfsnode/pull/76))
214 - chore: update dependencies ([ipfs/go-unixfsnode#75](https://github.com/ipfs/go-unixfsnode/pull/75))
215 - github.com/libp2p/go-libp2p (v0.34.1 -> v0.36.3):
216 - Release v0.36.3
217 - Fix: WebSocket: Clone TLS config before creating a new listener
218 - fix: enable dctur when interface address is public (#2931) ([libp2p/go-libp2p#2931](https://github.com/libp2p/go-libp2p/pull/2931))
219 - fix: QUIC/Webtransport Transports now will prefer their owned listeners for dialing out (#2936) ([libp2p/go-libp2p#2936](https://github.com/libp2p/go-libp2p/pull/2936))
220 - ci: uci/update-go (#2937) ([libp2p/go-libp2p#2937](https://github.com/libp2p/go-libp2p/pull/2937))
221 - fix: slice append value (#2938) ([libp2p/go-libp2p#2938](https://github.com/libp2p/go-libp2p/pull/2938))
222 - webrtc: wait for listener context before dropping connection (#2932) ([libp2p/go-libp2p#2932](https://github.com/libp2p/go-libp2p/pull/2932))
223 - ci: use go1.23, drop go1.21 (#2933) ([libp2p/go-libp2p#2933](https://github.com/libp2p/go-libp2p/pull/2933))
224 - Fail on any test timeout (#2929) ([libp2p/go-libp2p#2929](https://github.com/libp2p/go-libp2p/pull/2929))
225 - test: Try to fix test timeout (#2930) ([libp2p/go-libp2p#2930](https://github.com/libp2p/go-libp2p/pull/2930))
226 - ci: Out of the tarpit (#2923) ([libp2p/go-libp2p#2923](https://github.com/libp2p/go-libp2p/pull/2923))
227 - Fix proto import paths (#2920) ([libp2p/go-libp2p#2920](https://github.com/libp2p/go-libp2p/pull/2920))
228 - Release v0.36.2
229 - webrtc: reduce loglevel for pion logs (#2915) ([libp2p/go-libp2p#2915](https://github.com/libp2p/go-libp2p/pull/2915))
230 - webrtc: close connection when remote closes (#2914) ([libp2p/go-libp2p#2914](https://github.com/libp2p/go-libp2p/pull/2914))
231 - basic_host: close swarm on Close (#2916) ([libp2p/go-libp2p#2916](https://github.com/libp2p/go-libp2p/pull/2916))
232 - Revert "Create funding.json" (#2919) ([libp2p/go-libp2p#2919](https://github.com/libp2p/go-libp2p/pull/2919))
233 - Create funding.json
234 - Release v0.36.1
235 - Release v0.36.0 (#2905) ([libp2p/go-libp2p#2905](https://github.com/libp2p/go-libp2p/pull/2905))
236 - swarm: add a default timeout to conn.NewStream (#2907) ([libp2p/go-libp2p#2907](https://github.com/libp2p/go-libp2p/pull/2907))
237 - udpmux: Don't log an error if canceled because of shutdown (#2903) ([libp2p/go-libp2p#2903](https://github.com/libp2p/go-libp2p/pull/2903))
238 - ObsAddrManager: Infer external addresses for transports that share the same listening address. (#2892) ([libp2p/go-libp2p#2892](https://github.com/libp2p/go-libp2p/pull/2892))
239 - feat: WebRTC reuse QUIC conn (#2889) ([libp2p/go-libp2p#2889](https://github.com/libp2p/go-libp2p/pull/2889))
240 - examples/chat-with-mdns: default to a random port (#2896) ([libp2p/go-libp2p#2896](https://github.com/libp2p/go-libp2p/pull/2896))
241 - allow findpeers limit to be 0 (#2894) ([libp2p/go-libp2p#2894](https://github.com/libp2p/go-libp2p/pull/2894))
242 - quic: add support for quic-go metrics (#2823) ([libp2p/go-libp2p#2823](https://github.com/libp2p/go-libp2p/pull/2823))
243 - webrtc: remove experimental tag, enable by default (#2887) ([libp2p/go-libp2p#2887](https://github.com/libp2p/go-libp2p/pull/2887))
244 - config: fix AddrFactory for AutoNAT (#2868) ([libp2p/go-libp2p#2868](https://github.com/libp2p/go-libp2p/pull/2868))
245 - chore: /quic → /quic-v1 (#2888) ([libp2p/go-libp2p#2888](https://github.com/libp2p/go-libp2p/pull/2888))
246 - basichost: reset stream if SetProtocol fails (#2875) ([libp2p/go-libp2p#2875](https://github.com/libp2p/go-libp2p/pull/2875))
247 - feat: libp2phttp `/http-path` (#2850) ([libp2p/go-libp2p#2850](https://github.com/libp2p/go-libp2p/pull/2850))
248 - readme: update per latest multiversx rename (#2874) ([libp2p/go-libp2p#2874](https://github.com/libp2p/go-libp2p/pull/2874))
249 - websocket: don't return transport.ErrListenerClosed on closing listener (#2867) ([libp2p/go-libp2p#2867](https://github.com/libp2p/go-libp2p/pull/2867))
250 - Added tau to README.md (#2870) ([libp2p/go-libp2p#2870](https://github.com/libp2p/go-libp2p/pull/2870))
251 - basichost: reset new stream if rcmgr blocks (#2869) ([libp2p/go-libp2p#2869](https://github.com/libp2p/go-libp2p/pull/2869))
252 - transport integration tests: test conn attempt is dropped when the rcmgr blocks for WebRTC (#2856) ([libp2p/go-libp2p#2856](https://github.com/libp2p/go-libp2p/pull/2856))
253 - webtransport: close underlying h3 connection (#2862) ([libp2p/go-libp2p#2862](https://github.com/libp2p/go-libp2p/pull/2862))
254 - peerstore: don't intern protocols (#2860) ([libp2p/go-libp2p#2860](https://github.com/libp2p/go-libp2p/pull/2860))
255 - autonatv2: add server metrics for dial requests (#2848) ([libp2p/go-libp2p#2848](https://github.com/libp2p/go-libp2p/pull/2848))
256 - PR Comments
257 - Add a transport level test to ensure we close conns after rejecting them by the rcmgr
258 - Close quic conns when wrapping conn fails
259 - libp2p: use rcmgr for autonat dials (#2842) ([libp2p/go-libp2p#2842](https://github.com/libp2p/go-libp2p/pull/2842))
260 - metricshelper: improve checks for ip and transport (#2849) ([libp2p/go-libp2p#2849](https://github.com/libp2p/go-libp2p/pull/2849))
261 - Don't reuse the URL, make a new one
262 - Use default transport to make using the Host cheaper
263 - cleanup
264 - Add future test
265 - HTTP Host implements RoundTripper
266 - swarm: improve dial worker performance for common case
267 - pstoremanager: fix connectedness check
268 - autonatv2: implement autonatv2 spec (#2469) ([libp2p/go-libp2p#2469](https://github.com/libp2p/go-libp2p/pull/2469))
269 - webrtc: add a test for establishing many connections (#2801) ([libp2p/go-libp2p#2801](https://github.com/libp2p/go-libp2p/pull/2801))
270 - webrtc: fix ufrag prefix for dialing (#2832) ([libp2p/go-libp2p#2832](https://github.com/libp2p/go-libp2p/pull/2832))
271 - circuitv2: improve voucher validation (#2826) ([libp2p/go-libp2p#2826](https://github.com/libp2p/go-libp2p/pull/2826))
272 - libp2phttp: workaround for ResponseWriter's CloseNotifier (#2821) ([libp2p/go-libp2p#2821](https://github.com/libp2p/go-libp2p/pull/2821))
273 - Update README.md (#2830) ([libp2p/go-libp2p#2830](https://github.com/libp2p/go-libp2p/pull/2830))
274 - identify: add test for observed address handling (#2828) ([libp2p/go-libp2p#2828](https://github.com/libp2p/go-libp2p/pull/2828))
275 - identify: fix bug in observed address handling (#2825) ([libp2p/go-libp2p#2825](https://github.com/libp2p/go-libp2p/pull/2825))
276 - identify: Don't filter addr if remote is neither public nor private (#2820) ([libp2p/go-libp2p#2820](https://github.com/libp2p/go-libp2p/pull/2820))
277 - limit ping duration to 30s (#1358) ([libp2p/go-libp2p#1358](https://github.com/libp2p/go-libp2p/pull/1358))
278 - Remove out-dated code in example readme (#2818) ([libp2p/go-libp2p#2818](https://github.com/libp2p/go-libp2p/pull/2818))
279 - v0.35.0 (#2812) ([libp2p/go-libp2p#2812](https://github.com/libp2p/go-libp2p/pull/2812))
280 - rcmgr: Support specific network prefix in conn limiter (#2807) ([libp2p/go-libp2p#2807](https://github.com/libp2p/go-libp2p/pull/2807))
281 - github.com/libp2p/go-libp2p-kad-dht (v0.25.2 -> v0.26.1):
282 - Release v0.26.1 ([libp2p/go-libp2p-kad-dht#983](https://github.com/libp2p/go-libp2p-kad-dht/pull/983))
283 - fix: Unexport hasValidConnectedness to make a patch release ([libp2p/go-libp2p-kad-dht#982](https://github.com/libp2p/go-libp2p-kad-dht/pull/982))
284 - correctly merging fix from https://github.com/libp2p/go-libp2p-kad-dht/pull/976 ([libp2p/go-libp2p-kad-dht#980](https://github.com/libp2p/go-libp2p-kad-dht/pull/980))
285 - Release v0.26.0 ([libp2p/go-libp2p-kad-dht#979](https://github.com/libp2p/go-libp2p-kad-dht/pull/979))
286 - chore: update deps ([libp2p/go-libp2p-kad-dht#974](https://github.com/libp2p/go-libp2p-kad-dht/pull/974))
287 - Upgrade to go-log v2.5.1 ([libp2p/go-libp2p-kad-dht#971](https://github.com/libp2p/go-libp2p-kad-dht/pull/971))
288 - Fix: don't perform lookupCheck if not enough peers in routing table ([libp2p/go-libp2p-kad-dht#970](https://github.com/libp2p/go-libp2p-kad-dht/pull/970))
289 - findnode(self) should return multiple peers ([libp2p/go-libp2p-kad-dht#968](https://github.com/libp2p/go-libp2p-kad-dht/pull/968))
290 - github.com/libp2p/go-libp2p-routing-helpers (v0.7.3 -> v0.7.4):
291 - chore: release v0.7.4 (#85) ([libp2p/go-libp2p-routing-helpers#85](https://github.com/libp2p/go-libp2p-routing-helpers/pull/85))
292 - fix: composable parallel router tracing by index (#84) ([libp2p/go-libp2p-routing-helpers#84](https://github.com/libp2p/go-libp2p-routing-helpers/pull/84))
293 - github.com/multiformats/go-multiaddr (v0.12.4 -> v0.13.0):
294 - Release v0.13.0 ([multiformats/go-multiaddr#248](https://github.com/multiformats/go-multiaddr/pull/248))
295 - Add support for http-path ([multiformats/go-multiaddr#246](https://github.com/multiformats/go-multiaddr/pull/246))
296 - github.com/whyrusleeping/cbor-gen (v0.1.1 -> v0.1.2):
297 - properly extend strings (#95) ([whyrusleeping/cbor-gen#95](https://github.com/whyrusleeping/cbor-gen/pull/95))
298 - ioutil to io (#98) ([whyrusleeping/cbor-gen#98](https://github.com/whyrusleeping/cbor-gen/pull/98))
299
300 </details>
301
302 ### 👨‍👩‍👧‍👦 Contributors
303
304 | Contributor | Commits | Lines ± | Files Changed |
305 |-------------|---------|---------|---------------|
306 | Andrew Gillis | 14 | +4920/-1714 | 145 |
307 | sukun | 26 | +4402/-448 | 79 |
308 | Marco Munizaga | 32 | +2287/-536 | 73 |
309 | Marcin Rataj | 41 | +685/-193 | 86 |
310 | Patryk | 1 | +312/-10 | 8 |
311 | guillaumemichel | 7 | +134/-105 | 14 |
312 | Adin Schmahmann | 5 | +145/-80 | 9 |
313 | Henrique Dias | 2 | +190/-1 | 6 |
314 | Josh Klopfenstein | 1 | +90/-35 | 27 |
315 | gammazero | 5 | +90/-28 | 11 |
316 | Jeromy Johnson | 1 | +116/-0 | 5 |
317 | Daniel N | 3 | +27/-25 | 9 |
318 | Daniel Norman | 2 | +28/-19 | 4 |
319 | Ivan Shvedunov | 2 | +25/-10 | 2 |
320 | Michael Muré | 2 | +22/-9 | 4 |
321 | Dominic Della Valle | 1 | +23/-4 | 1 |
322 | Andrei Vukolov | 1 | +27/-0 | 1 |
323 | chris erway | 1 | +9/-9 | 9 |
324 | Vitaly Zdanevich | 1 | +12/-0 | 1 |
325 | Guillaume Michel | 1 | +4/-7 | 1 |
326 | swedneck | 1 | +10/-0 | 1 |
327 | Jorropo | 2 | +5/-5 | 3 |
328 | omahs | 1 | +4/-4 | 4 |
329 | THAT ONE GUY | 1 | +3/-5 | 2 |
330 | vyzo | 1 | +5/-2 | 1 |
331 | looklose | 1 | +3/-3 | 2 |
332 | web3-bot | 2 | +2/-3 | 4 |
333 | Dave Huseby | 1 | +5/-0 | 1 |
334 | shenpengfeng | 1 | +1/-1 | 1 |
335 | bytetigers | 1 | +1/-1 | 1 |
336 | Sorin Stanculeanu | 1 | +1/-1 | 1 |
337 | Lukáš Lukáč | 1 | +1/-1 | 1 |
338 | Gabe | 1 | +1/-1 | 1 |
339 | Bryan Stenson | 1 | +1/-1 | 1 |
340 | Samy Fodil | 1 | +1/-0 | 1 |
341 | Lane Rettig | 1 | +1/-0 | 1 |