Skip to content

Conversation

BrewTestBot
Copy link
Member

Created by brew bump


Created with brew bump-formula-pr.

release notes

[!NOTE]
This release was brought to you by the Shipyard team.

Overview

🔦 Highlights

HTTP Retrieval Client Now Enabled by Default

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

Bitswap Broadcast Reduction

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

  • Dramatic Resource Usage Reduction: Internal testing demonstrated a reduction in Bitswap broadcast messages by 80-98% and network bandwidth savings of 50-95%, with the greatest improvements occurring during high traffic and peer spikes. These efficiency gains lower operational costs of running Kubo under high load and improve the IPFS Mainnet (which is >80% Kubo-based) by reducing ambient traffic for all connected peers.
  • Improved Memory Stability: Memory stays stable even during major CID request spikes that increase peer count, preventing the out-of-memory (OOM) issues found in earlier Kubo versions.
  • Data Retrieval Performance Remains Strong: Our tests suggest that Kubo gateway hosts with broadcast reduction enabled achieve similar or better HTTP 200 success rates compared to version 0.35, while maintaining equivalent or higher want-have responses and unique blocks received.

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.

Update go-log to v2

go-log v2 has been out for quite a while now and it's time to deprecate v1.

  • Replace all use of go-log with go-log/v2
  • Makes /api/v0/log/tail useful over HTTP
  • Fixes ipfs log tail
  • Removes support for ContextWithLoggable as this is not needed for tracing-like functionality

Kubo now uses AutoNATv2 as a client

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

Smarter AutoTLS registration

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.

Overwrite option for files cp command

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.

Gateway now supports negative HTTP Range requests

The latest update to boxo/gateway adds support for negative HTTP Range requests, achieving gateway-conformance@v0.8 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.

Option for filestore command to remove bad blocks

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

This connection manager option controls how often connections are swept and potentially terminated. See the ConnMgr documentation.

Fix handling of EDITOR env var

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.

📦️ Important dependency updates

  • update go-libp2p to v0.42.0
  • update go-libp2p-kad-dht to v0.33.0
  • update boxo to v0.33.0 (incl. v0.32.0)
  • update gateway-conformance to v0.8
  • update p2p-forge/client to v0.6.0
  • update github.com/cockroachdb/pebble/v2 to v2.0.6 for Go 1.25 support

📝 Changelog

Full Changelog

👨‍👩‍👧‍👦 Contributors

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

View the full release notes at https://github.com/ipfs/kubo/releases/tag/v0.36.0.


@github-actions github-actions bot added go Go use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels Jul 14, 2025
Copy link
Contributor

🤖 An automated task has requested bottles to be published to this PR.

Caution

Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch.

@github-actions github-actions bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Jul 14, 2025
@BrewTestBot BrewTestBot enabled auto-merge July 14, 2025 20:30
@BrewTestBot BrewTestBot added this pull request to the merge queue Jul 14, 2025
Merged via the queue into main with commit 957ab36 Jul 14, 2025
22 checks passed
@BrewTestBot BrewTestBot deleted the bump-ipfs-0.36.0 branch July 14, 2025 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. go Go use is a significant feature of the PR or issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants