Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.release notes
ipfs files writefixesOverview
Kubo 0.38 simplifies content announcement configuration, introduces an experimental sweeping DHT provider for efficient large-scale operations, and includes various performance improvements.
v0.38.1 includes fixes for migrations on Windows and Pebble datastore – if you are using either, make sure to use .1 release.
🔦 Highlights
🚀 Repository migration: simplified provide configuration
This release migrates the repository from version 17 to version 18, simplifying how you configure content announcements.
The old
ProviderandReprovidersections are now combined into a singleProvidesection. Your existing settings are automatically migrated - no manual changes needed.Migration happens automatically when you run
ipfs daemon --migrate. For manual migration:ipfs repo migrate --to=18.Read more about the new system below.
🧹 Experimental Sweeping DHT Provider
A new experimental DHT provider is available as an alternative to both the default provider and the resource-intensive accelerated DHT client. Enable it via
Provide.DHT.SweepEnabled.How it works: Instead of providing keys one-by-one, the sweep provider systematically explores DHT keyspace regions in batches.
Benefits for large-scale operations: Handles hundreds of thousands of CIDs with reduced memory and network connections, spreads operations evenly to eliminate resource spikes, maintains state across restarts through persistent keystore, and provides better metrics visibility.
Monitoring and debugging: Legacy mode (
SweepEnabled=false) tracksprovider_reprovider_provide_countandprovider_reprovider_reprovide_count, while sweep mode (SweepEnabled=true) trackstotal_provide_count_total. Enable debug logging withGOLOG_LOG_LEVEL=error,provider=debug,dht/provider=debugto see detailed logs from either system.For configuration details, see
Provide.DHT. For metrics documentation, see Provide metrics.📊 Exposed DHT metrics
Kubo now exposes DHT metrics from go-libp2p-kad-dht, including
total_provide_count_totalfor sweep provider operations and RPC metrics prefixed withrpc_inbound_andrpc_outbound_for DHT message traffic. See Kubo metrics documentation for details.🚨 Improved gateway error pages with diagnostic tools
Gateway error pages now provide more actionable information during content retrieval failures. When a 504 Gateway Timeout occurs, users see detailed retrieval state information including which phase failed and a sample of providers that were attempted:
🎨 Updated WebUI
The Web UI has been updated to v4.9 with a new Diagnostics screen for troubleshooting and system monitoring. Access it at
http://127.0.0.1:5001/webuiwhen running your local IPFS node.Additional improvements include a close button in the file viewer, better error handling, and fixed navigation highlighting.
📌 Pin name improvements
ipfs pin ls <cid> --namesnow correctly returns pin names for specific CIDs (#10649, boxo#1035), RPC no longer incorrectly returns names from other pins (#10966), and pin names are now limited to 255 bytes for better cross-platform compatibility (#10981).🛠️ Identity CID size enforcement and
ipfs files writefixesIdentity CID size limits are now enforced
Identity CIDs use multihash
0x00to embed data directly in the CID without hashing. This experimental optimization was designed for tiny data where a CID reference would be larger than the data itself, but without size limits it was easy to misuse and could turn into an anti-pattern that wastes resources and enables abuse. This release enforces a maximum of 128 bytes for identity CIDs - attempting to exceed this limit will return a clear error message.ipfs add --inline-limitand--hash=identitynow enforce the 128-byte maximum (error when exceeded)ipfs files writeprevents creation of oversized identity CIDsMultiple
ipfs files writebugs have been fixedThis release resolves several long-standing MFS issues: raw nodes now preserve their codec instead of being forced to dag-pb, append operations on raw nodes work correctly by converting to UnixFS when needed, and identity CIDs properly inherit the full CID prefix from parent directories.
📤 Provide Filestore and Urlstore blocks on write
Improvements to the providing system in the last release (provide blocks according to the configured Strategy) left out Filestore and Urlstore blocks when the "all" strategy was used. They would only be reprovided but not provided on write. This is now fixed, and both Filestore blocks (local file references) and Urlstore blocks (HTTP/HTTPS URL references) will be provided correctly shortly after initial add.
🚦 MFS operation limit for --flush=false
The new
Internal.MFSNoFlushLimitconfiguration option prevents unbounded memory growth when using--flush=falsewithipfs filescommands. After performing the configured number of operations without flushing (default: 256), further operations will fail with a clear error message instructing users to flush manually.📦️ Important dependency updates
boxoto v0.35.0go-libp2p-kad-dhtto v0.35.0ipfs-webuito v4.9.1 (incl. v4.9.0)go-ds-pebbleto v0.5.3v0.38.0
📝 Changelog
Full Changelog
--flush=false(#10985) (ipfs/kubo#10985)flush=false(#10971) (ipfs/kubo#10971)ipfs pin ls <cid> --names(#10970) (ipfs/kubo#10970)MaxRangeRequestFileSizeprotection (#1043) (ipfs/boxo#1043)CheckIfPinnedWithTypefor efficient checks with names (#1035) (ipfs/boxo#1035)time.Durationfor rebroadcast delay (#1027) (ipfs/boxo#1027)retrieval.RetrievalStatetoretrieval.State(#1026) (ipfs/boxo#1026)@masihform CODEOWNERS (ipld/go-car#605)👨👩👧👦 Contributors
v0.38.1
Fixes migration panic on Windows when upgrading from v0.37 to v0.38 ("panic: error can't be dealt with transactionally: Access is denied").
Updates go-ds-pebble to v0.5.3 (pebble v2.1.0).
📝 Changelog
Full Changelog
👨👩👧👦 Contributors
View the full release notes at https://github.com/ipfs/kubo/releases/tag/v0.38.1.