docs/changelogs/v0.36.md
<a href="https://ipshipyard.com/"></a>
This release was brought to you by the Interplanetary Shipyard team.
filestore command to remove bad blocksConnMgr.SilencePeriod configuration setting exposedThis release promotes the HTTP Retrieval client from an experimental feature to a standard feature that is enabled by default. When possible, Kubo will retrieve blocks over plain HTTPS (HTTP/2) without any extra user configuration.
See HTTPRetrieval for more details.
The Bitswap client now supports broadcast reduction logic, which is enabled by default. This feature significantly reduces the number of broadcast messages sent to peers, resulting in lower bandwidth usage during load spikes.
The overall logic works by sending to non-local peers only if those peers have previously replied that they have data blocks. To minimize impact on existing workloads, by default, broadcasts are still always sent to peers on the local network, or the ones defined in Peering.Peers.
At Shipyard, we conducted A/B testing on our internal Kubo staging gateway with organic CID requests to ipfs.io. While these results may not exactly match your specific workload, the benefits proved significant enough to make this feature default. Here are the key findings:
For more information about our A/B tests, see kubo#10825.
To revert to the previous behavior for your own A/B testing, set Internal.Bitswap.BroadcastControl.Enable to false and monitor relevant metrics (ipfs_bitswap_bcast_skips_total, ipfs_bitswap_haves_received, ipfs_bitswap_unique_blocks_received, ipfs_bitswap_wanthaves_broadcast, HTTP 200 success rate).
For a description of the configuration items, see the documentation of Internal.Bitswap.BroadcastControl.
go-log v2 has been out for quite a while now and it's time to deprecate v1.
go-log with go-log/v2/api/v0/log/tail useful over HTTPipfs log tailContextWithLoggable as this is not needed for tracing-like functionalityThis Kubo release starts utilizing AutoNATv2 client functionality. go-libp2p v0.42 supports and depends on both AutoNATv1 and v2, and Autorelay feature continues to use v1. go-libp2p v0.43+ will discontinue internal use of AutoNATv1. We will maintain support for both v1 and v2 until then, though v1 will gradually be deprecated and ultimately removed.
This update to libp2p and AutoTLS incorporates AutoNATv2 changes. It aims to reduce false-positive scenarios where AutoTLS certificate registration occurred before a publicly dialable multiaddr was available. This should result in fewer error logs during node start, especially when IPv6 and/or IPv4 NATs with UPnP/PCP/NAT-PMP are at play.
The ipfs files cp command has a --force option to allow it to overwrite existing files. Attempting to overwrite an existing directory results in an error.
The latest update to boxo/gateway adds support for negative HTTP Range requests, achieving [email protected] compatibility.
This provides greater interoperability with generic HTTP-based tools. For example, WebRecorder's https://replayweb.page/ can now directly load website snapshots from Kubo-backed URLs.
filestore command to remove bad blocksThe experimental filestore command has a new option, --remove-bad-blocks, to verify objects in the filestore and remove those that fail verification.
ConnMgr.SilencePeriod configuration setting exposedThis connection manager option controls how often connections are swept and potentially terminated. See the ConnMgr documentation.
The ipfs config edit command did not correctly handle the EDITOR environment variable when its value contains flags and arguments, i.e. EDITOR=emacs -nw. The command was treating the entire value of $EDITOR as the name of the editor command. This has been fixed to parse the value of $EDITOR into separate args, respecting shell quoting.
go-libp2p to v0.42.0go-libp2p-kad-dht to v0.33.0boxo to v0.33.0 (incl. v0.32.0)gateway-conformance to v0.8p2p-forge/client to v0.6.0github.com/cockroachdb/pebble/v2 to v2.0.6 for Go 1.25 support--force option to files cp command (#10823) (ipfs/kubo#10823)Provider.Enabled flag (#10804) (ipfs/kubo#10804)Wantlist (#961) (ipfs/boxo#961)BasicBlock methods (#61) (ipfs/go-block-format#61)purgeStore() (#3273) (libp2p/go-libp2p#3273)modernc.org/sqlite directly (#3227) (libp2p/go-libp2p#3227)| Contributor | Commits | Lines Β± | Files Changed |
|---|---|---|---|
| sukun | 25 | +7274/-1586 | 140 |
| galargh | 13 | +1714/-1680 | 115 |
| rvagg | 2 | +1383/-960 | 6 |
| Andrew Gillis | 46 | +1226/-564 | 140 |
| Marco Munizaga | 6 | +1643/-36 | 24 |
| Hector Sanjuan | 20 | +624/-202 | 40 |
| Marcin Rataj | 24 | +583/-175 | 49 |
| Dennis Trautwein | 1 | +134/-14 | 4 |
| Piotr Galar | 1 | +73/-71 | 23 |
| Guillaume Michel | 4 | +58/-44 | 23 |
| Ivan | 1 | +90/-9 | 3 |
| Will Scott | 1 | +97/-0 | 2 |
| gammazero | 11 | +47/-30 | 13 |
| guillaumemichel | 3 | +40/-35 | 21 |
| Adin Schmahmann | 1 | +58/-17 | 8 |
| Laurent Senta | 1 | +26/-24 | 4 |
| pullmerge | 1 | +20/-16 | 5 |
| vladopajic | 1 | +20/-14 | 1 |
| Probot | 1 | +18/-4 | 1 |
| Dmitry Markin | 1 | +13/-9 | 2 |
| overallteach | 1 | +4/-12 | 3 |
| web3-bot | 5 | +9/-6 | 7 |
| Pavel Zbitskiy | 1 | +14/-1 | 1 |
| Rod Vagg | 5 | +7/-7 | 5 |
| argentpapa | 1 | +3/-10 | 1 |
| GarmashAlex | 1 | +8/-3 | 1 |
| huochexizhan | 1 | +3/-3 | 1 |
| VolodymyrBg | 1 | +2/-3 | 1 |
| levisyin | 1 | +2/-2 | 2 |
| b00f | 1 | +3/-0 | 1 |
| achingbrain | 1 | +1/-1 | 1 |
| Ocenka | 1 | +1/-1 | 1 |
| Dreamacro | 1 | +1/-1 | 1 |
| Ε tefan Baebler | 1 | +1/-0 | 1 |