Releases: ipfs/kubo
v0.28.0
Overview
RPC client: removed deprecated DHT API
The deprecated DHT API commands in the RPC client have been removed. Instead, use the Routing API.
Gateway: /api/v0
is removed
The legacy subset of the Kubo RPC that was available via the Gateway port and was deprecated is now completely removed. You can read more in #10312.
If you have a legacy software that relies on this behavior, and want to expose parts of /api/v0
next to /ipfs
, use reverse-proxy in front of Kubo to mount both Gateway and RPC on the same port. NOTE: exposing RPC to the internet comes with security risk: make sure to specify access control via API.Authorizations.
Removed deprecated Object API commands
The Object API commands deprecated back in 2021 have been removed, except for object diff
, object patch add-link
and object patch rm-link
, whose alternatives have not yet been built (see issues 4801 and 4782).
Kubo ignores loopback addresses on LAN DHT and private addresses on WAN DHT
Kubo no longer keeps track of loopback and private addresses on the LAN and WAN DHTs, respectively. This means that other nodes will not try to dial likely undialable addresses.
To support testing scenarios where multiple Kubo instances run on the same machine, Routing.LoopbackAddressesOnLanDHT
is set to true
when the test
profile is applied.
Pin roots are now prioritized when announcing
The root CIDs of pinned content are now prioritized when announcing to the Amino DHT with Reprovider.Strategy
set to all
(default) or pinned
, making the important CIDs accessible faster.
π Changelog
Security Note: CVE-2024-22189 has been addressed by upgrading to quic-go v0.42.0.
Full Changelog
- github.com/ipfs/kubo:
- chore: update version
- chore: update version
- core/node: prioritize announcing pin roots, and flat strategy (#10376) (ipfs/kubo#10376)
- chore: webui v4.2.1 (#10391) (ipfs/kubo#10391)
- docs(config): clarify RPC vs Gateway
- chore: upgrade go-libp2p-kad-dht (#10378) (ipfs/kubo#10378)
- chore(config): make Routing.AcceleratedDHTClient a Flag (#10384) (ipfs/kubo#10384)
- fix: switch lowpower profile to autoclient
- core: fix some typos (#10382) (ipfs/kubo#10382)
- docs: fix some typos (#10377) (ipfs/kubo#10377)
- core/commands!: remove deprecated object APIs (#10375) (ipfs/kubo#10375)
- docs: update default ipns lifetime
- coreapi/unixfs: don't create an additional IpfsNode for --only-hash
- chore: cleanup old workaround (#10369) (ipfs/kubo#10369)
- chore: finish reframe removal
- docs: remove repetitive words (#10370) (ipfs/kubo#10370)
- docs: updated links and refs to external resources (#10368) (ipfs/kubo#10368)
- core/corehttp!: remove /api/v0 from gateway port
- client/rpc!: remove deprecated DHT commands
- ci: upgrade to go 1.22 (#10355) (ipfs/kubo#10355)
- chore: create next changelog
- Merge Release: v0.27.0 [skip changelog] (ipfs/kubo#10362)
- test: cleanup content blocking tests (#10360) (ipfs/kubo#10360)
- docs: improve release issue template
- chore: update version
- github.com/ipfs/boxo (v0.18.0 -> v0.19.0):
- Release v0.19.0 (ipfs/boxo#598)
- github.com/libp2p/go-libp2p (v0.33.0 -> v0.33.2):
- chore: release v0.33.2 (#2755) (libp2p/go-libp2p#2755)
- Update quic-go to v0.42.0. Release v0.33.1 (#2741) (libp2p/go-libp2p#2741)
- github.com/libp2p/go-libp2p-kad-dht (v0.24.4 -> v0.25.2):
- chore: release v0.25.2 (libp2p/go-libp2p-kad-dht#961)
- add ctx canceled err check (libp2p/go-libp2p-kad-dht#960)
- chore: release v0.25.1
- perf: don't buffer the output of FindProvidersAsync
- chore: use go-libp2p-routing-helpers for tracing needs
- fix: properly iterate in tracing for protocol messenger
- fix: apply addrFilters in the dht (#872) (libp2p/go-libp2p-kad-dht#872)
- Add provider record addresses to peerstore (libp2p/go-libp2p-kad-dht#870)
- chore: release v0.25.0
- tracing: add protocol messages client tracing
- Enhance handleNewMessage Server Mode Logging: Convert Error Logs to Debug Level (libp2p/go-libp2p-kad-dht#860)
- tracing: fix DHT keys as string attribute not being valid utf-8 (libp2p/go-libp2p-kad-dht#859)
- merge: fix: issues discovered in kubo v0.21.0-rc2 (#853) (libp2p/go-libp2p-kad-dht#853)
- merge: fix: issues discovered in kubo v0.21.0-rc1 (#851) (libp2p/go-libp2p-kad-dht#851)
- Release v0.24.0 (libp2p/go-libp2p-kad-dht#844)
- fix: don't add unresponsive DHT servers to the Routing Table (#820) (libp2p/go-libp2p-kad-dht#820)
- filter local addresses (for WAN) and localhost addresses (for LAN) (libp2p/go-libp2p-kad-dht#839)
- github.com/multiformats/go-multiaddr (v0.12.2 -> v0.12.3):
- chore: release v0.12.3 (multiformats/go-multiaddr#240)
- chore: Expand comment ForEach (multiformats/go-multiaddr#238)
- .Decapsulate by Components (multiformats/go-multiaddr#239)
- github.com/whyrusleeping/cbor-gen (v0.0.0-20240109153615-66e95c3e8a87 -> v0.1.0):
- Nullable ints (#93) (whyrusleeping/cbor-gen#93)
- Introduce Gen{} struct for configurability (whyrusleeping/cbor-gen#94)
- Transparent encoding (whyrusleeping/cbor-gen#91)
- turn max length consts into global vars (whyrusleeping/cbor-gen#92)
π¨βπ©βπ§βπ¦ Contributors
Contributor | Commits | Lines Β± | Files Changed |
---|---|---|---|
Henrique Dias | 19 | +867/-2806 | 96 |
Rod Vagg | 7 | +921/-475 | 25 |
Marcin Rataj | 8 | +358/-344 | 18 |
Guillaume Michel - guissou | 1 | +145/-485 | 13 |
Jorropo | 8 | +429/-136 | 22 |
Εukasz Magiera | 4 | +284/-48 | 11 |
whyrusleeping | 1 | +90/-90 | 2 |
Michael MurΓ© | 2 | +48/-73 | 9 |
Marco Munizaga | 6 | +86/-29 | 10 |
guillaumemichel | 3 | +93/-1 | 3 |
Marten Seemann | 1 | +31/-4 | 4 |
godeamon | 3 | +11/-8 | 3 |
shuangcui | 1 | +6/-6 | 5 |
occupyhabit | 1 | +3/-3 | 3 |
crazehang | 1 | +2/-2 | 1 |
Dennis Trautwein | 1 | +1/-2 | 1 |
βGheisMohammadiβ | 1 | +1/-1 | 1 |
web3-bot | 1 | +2/-0 | 1 |
Daniel Norman | 1 | +1/-1 | 1 |
This release was brought to you by the Shipyard team.
v0.28.0-rc1
Changelog: docs/changelogs/v0.28.md
v0.27.0
Overview
π¦ Highlights
Gateway: support for /api/v0
is deprecated
Support for exposing the legacy subset of Kubo RPC via the Gateway port is deprecated and should not be used. It will be removed in the next version. You can read more in #10312.
If you have a legacy software that relies on this behavior, and want to expose parts of /api/v0
next to /ipfs
, use reverse-proxy in front of Kubo to mount both Gateway and RPC on the same port. NOTE: exposing RPC to the internet comes with security risk: make sure to specify access control via API.Authorizations.
IPNS resolver cache's TTL can now be configured
You can now configure the upper-bound of a cached IPNS entry's Time-To-Live via Ipns.MaxCacheTTL
.
RPC client: deprecated DHT API, added Routing API
The RPC client for GO (kubo/client/rpc
) now includes a Routing API to match the available commands in /api/v0/routing
. In addition, the DHT API has been marked as deprecated.
In the next version, all DHT deprecated methods will be removed from the Go RPC client.
Deprecated DHT commands removed from /api/v0/dht
All the DHT commands that were deprecated for over a year were finally removed from /api/v0/dht
. Users should switch to modern /api/v0/routing
which works with both Amino DHT and Delegated Routers.
Repository migrations are now trustless
Kubo now only uses trustless requests (e.g., CAR files) when downloading repository migrations via HTTP. This further strengthens Kubo by not delegating trust to public gateways. The migration binaries are locally verified before being executed.
π Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: update version
- chore: update version
- test: cleanup content blocking tests (#10360) (ipfs/kubo#10360)
- docs: improve release issue template
- chore: update version
- repo/fsrepo/migrations: verified HTTP migrations (#10324) (ipfs/kubo#10324)
- chore: fix link
- docs: clarify Gateway.ExposeRoutingAPI (#10337) (ipfs/kubo#10337)
- commands/add: return an error when using --only-hash and --to-files
- docs(config): mention routing v1 spec
- core/commands: remove 'ipfs dht' commands, except 'query' (#10328) (ipfs/kubo#10328)
- core: deprecate CoreAPI.Dht, introduce CoreAPI.Routing
- refactor: superfluous namespace test redirects (#10322) (ipfs/kubo#10322)
- feat: add Ipns.MaxCacheTTL
- fix(gw): negative entity-bytes beyond file size (#10320) (ipfs/kubo#10320)
- core/corehttp: wrap gateway with headers, deprecate gateway /api/v0
- docs: add changelog link to release issue template
- docs: remove whizzzkid
- chore: create next changelog
- Merge Release: v0.26.0 [skip changelog] (ipfs/kubo#10313)
- config: remove all options that are marked as REMOVED
- chore: remove Gateway.APICommands
- docs(cli): name inspect --verify (#10308) (ipfs/kubo#10308)
- docs: improve release issue template (#10305) (ipfs/kubo#10305)
- core/corehttp: wrap hostname option with otelhttp
- fix: profiling tests
- profile: add trace
- docs(config): clarify ReproviderStrategy roots
- chore: update version
- docs: in RELEASE_ISSUE_TEMPLATE ask releaser to ensure we are using the latest go release on the major branch
- github.com/ipfs/boxo (v0.17.0 -> v0.18.0):
- Release v0.18.0 (ipfs/boxo#581)
- github.com/libp2p/go-libp2p (v0.32.2 -> v0.33.0):
- release v0.33.0 (#2715) (libp2p/go-libp2p#2715)
- chore: update deps for v0.33 (#2713) (libp2p/go-libp2p#2713)
- webrtc: wait for FIN_ACK before closing data channels (#2615) (libp2p/go-libp2p#2615)
- quic: upgrade quic-go to v0.41.0 (#2710) (libp2p/go-libp2p#2710)
- chore: remove unused GenerateEKeyPair function (#2711) (libp2p/go-libp2p#2711)
- chore: drop support for go1.20 (#2708) (libp2p/go-libp2p#2708)
- chore: testify fix got, expected transpositions (#2666) (libp2p/go-libp2p#2666)
- docs: fix broken link in README
- chore: fix typos (#2694) (libp2p/go-libp2p#2694)
- libp2phttp: fix flaky ExampleHost_listenOnHTTPTransportAndStreams (#2697) (libp2p/go-libp2p#2697)
- chore(p2p/host): fix typos (#2683) (libp2p/go-libp2p#2683)
- chore: fix typos (#2689) (libp2p/go-libp2p#2689)
- defaults: do TLS by default for encryption (#2650) (libp2p/go-libp2p#2650)
- webrtc: fix flaky TestMaxInFlightRequests (#2682) (libp2p/go-libp2p#2682)
- chore: remove unnecessary conversions (#2680) (libp2p/go-libp2p#2680)
- chore: update chat-with-mdns example readme (#2678) (libp2p/go-libp2p#2678)
- examples: call NewStream from only one side (#2677) (libp2p/go-libp2p#2677)
- chore: fix typos in comment (#2674) (libp2p/go-libp2p#2674)
- chore: update go-libp2p-asn-util (#2673) (libp2p/go-libp2p#2673)
- chore: update go security policy url (#2665) (libp2p/go-libp2p#2665)
- security: remove separate licenses for Noise and TLS (#2663) (libp2p/go-libp2p#2663)
- webrtc: clarify that there is no reuseport functionality (#2652) (libp2p/go-libp2p#2652)
- rcmgr: fix connmgr connection limit conflict warning (#2648) (libp2p/go-libp2p#2648)
- tcp: fix build on loong64 (#2655) (libp2p/go-libp2p#2655)
- swarm: fix grafana dashboard templating (#2640) (libp2p/go-libp2p#2640)
- chore: fix typos (#2608) (libp2p/go-libp2p#2608)
- chore: add resource manager dashboard to docker-compose (#2641) (libp2p/go-libp2p#2641)
- pstoremanager: fix race condition when removing peers from peer store (#2644) (libp2p/go-libp2p#2644)
- examples: remove unused 'SetStreamHandler' (#2598) (libp2p/go-libp2p#2598)
- Update docs from RSA to Ed25519 (#2606) (libp2p/go-libp2p#2606)
- github.com/multiformats/go-multiaddr (v0.12.1 -> v0.12.2):
- chore: release v0.12.2
- tests: add round trip equality check to fuzz (#232) (multiformats/go-multiaddr#232)
- fix: correctly parse ports as uint16 and explicitely fail on overflows (#228) (multiformats/go-multiaddr#228)
- replace custom random tests with testing.F (#227) (multiformats/go-multiaddr#227)
π¨βπ©βπ§βπ¦ Contributors
Contributor | Commits | Lines Β± | Files Changed |
---|---|---|---|
Henrique Dias | 26 | +1668/-1484 | 96 |
Sukun | 13 | +983/-618 | 68 |
Jorropo | 18 | +501/-222 | 32 |
Marten Seemann | 2 | +17/-244 | 5 |
dozyio | 1 | +117/-132 | 31 |
Marcin Rataj | 7 | +100/-20 | 8 |
Alexandr Burdiyan | 2 | +29/-54 | 2 |
Tyler | 1 | +17/-19 | 2 |
KeienWang | 2 | +14/-14 | 12 |
HΓ₯vard Anda Estensen | 1 | +14/-14 | 11 |
Halimao | 2 | +17/-4 | 2 |
hannahhoward | 1 | +14/-6 | 2 |
alex | 1 | +8/-8 | 4 |
shuoer86 | 1 | +7/-7 | 5 |
John Chase | 1 | +0/-12 | 1 |
GoodDaisy | 1 | +5/-5 | 4 |
Michael MurΓ© | 1 | +6/-2 | 1 |
ε΄ε°η½ | 1 | +3/-3 | 3 |
Vehorny | 1 | +3/-3 | 2 |
Eric | 1 | +1/-1 | 1 |
v0.27.0-rc2
Changelog: docs/changelogs/v0.27.md
v0.27.0-rc1
Changelog: docs/changelogs/v0.27.md
v0.26.0
Overview
π¦ Highlights
Kubo binary imports
For users of Kubo preloaded plugins there is now a way to create a kubo instance with your plugins by depending on the cmd/ipfs/kubo
package rather than rebuilding kubo with the included plugins.
See the customization docs for more information.
Several deprecated commands have been removed
Several deprecated commands have been removed:
ipfs urlstore
deprecated in April 2019, Kubo 0.4.21, useipfs add -q --nocopy --cid-version=1 {url}
instead.ipfs repo fsck
deprecated in July 2019, Kubo 0.5.0ipfs file
(andipfs file ls
) deprecated in November 2020, Kubo 0.8.0, useipfs ls
andipfs files ls
instead.ipfs dns
deprecated in April 2022, Kubo 0.13, useipfs resolve /ipns/{name}
instead.ipfs tar
deprecated April 2022, Kubo 0.13
Support optional pin names
You can now add a name to a pin when pinning a CID. To do so, use ipfs pin add --name "Some Name" bafy...
. You can list your pins, including their names, with ipfs pin ls --names
.
jaeger
trace exporter has been removed
jaeger
exporter has been removed from upstream, you should use otlp
exporter instead.
See the boxo tracing docs for an example.
π Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: update version
- chore: update version
- feat(pinning): allow for overwriting pin name
- chore: update otlp
- Revert "build,docker: add support for riscv64"
- feat: support optional pin names (#10261) (ipfs/kubo#10261)
- build,docker: add support for riscv64
- feat(cmd/ipfs): Make it possible to depend on cmd/ipfs/kubo for easier preloaded plugin management (ipfs/kubo#10219)
- docs: fix broken link in HTTP RPC client doc (#10267) (ipfs/kubo#10267)
- Merge Release: v0.25.0 [skip changelog] (ipfs/kubo#10260)
- docs: add detail to NOpfs instructions in content-blocking.md
- commands: remove several deprecated commands
- fix: allow daemon to start correctly if the API is null (#10062) (ipfs/kubo#10062)
- chore: update version
- github.com/ipfs/boxo (v0.16.0 -> v0.17.0):
- Release v0.17.0 (ipfs/boxo#542)
- github.com/ipfs/go-ipld-cbor (v0.0.6 -> v0.1.0):
- v0.1.0 bump
- chore: add or force update version.json
- allow configuration of ipldStores default hash function (ipfs/go-ipld-cbor#86)
- sync: update CI config files (#85) (ipfs/go-ipld-cbor#85)
- github.com/ipfs/go-unixfsnode (v1.8.1 -> v1.9.0):
- v1.9.0 bump
- feat: expose ToDirEntryFrom to allow sub-dag representation
- feat: new UnixFS{File,Directory} with options pattern
- feat: testutil generator enhancements
- github.com/ipld/go-car/v2 (v2.10.2-0.20230622090957-499d0c909d33 -> v2.13.1):
- fix: BlockMetadata#Offset should be for section, not block data
- fix: add closed check, expose storage.ErrClosed
- fix: switch constructor args to match storage.New*, make roots plural
- feat: add DeferredCarWriter
- feat: fix BlockReader#SkipNext & add SourceOffset property
- v0.6.2 (ipld/go-car#464)
- fix: opt-in way to allow empty list of roots in CAR headers (ipld/go-car#461)
- github.com/libp2p/go-libp2p-asn-util (v0.3.0 -> v0.4.1):
- chore: release v0.4.1
- fix: add Init method on backward compat
- chore: release v0.4.0
- rewrite representation to a sorted binary list and embed it
- docs: fix incorrect markdown === in README
- ci: run go generate on CI (#27) (libp2p/go-libp2p-asn-util#27)
- github.com/multiformats/go-multiaddr (v0.12.0 -> v0.12.1):
- v0.12.1 bump
- manet: reduce allocations in resolve unspecified address
- github.com/whyrusleeping/cbor-gen (v0.0.0-20230126041949-52956bd4c9aa -> v0.0.0-20240109153615-66e95c3e8a87):
- Add a feature to preserve nil slices (#88) (whyrusleeping/cbor-gen#88)
- some cleanup for easier reading (whyrusleeping/cbor-gen#89)
- Support gen for map with value type
string
(#83) (whyrusleeping/cbor-gen#83) - feat: add support for pointers to CIDs in slices (#86) (whyrusleeping/cbor-gen#86)
- optimize anything using WriteString (whyrusleeping/cbor-gen#85)
- Implement *bool support and support omitempty for slices (whyrusleeping/cbor-gen#81)
π¨βπ©βπ§βπ¦ Contributors
Contributor | Commits | Lines Β± | Files Changed |
---|---|---|---|
Henrique Dias | 11 | +493/-1184 | 48 |
Εukasz Magiera | 3 | +610/-582 | 16 |
Rod Vagg | 11 | +1030/-151 | 18 |
whyrusleeping | 6 | +553/-388 | 14 |
Jorropo | 13 | +561/-348 | 84 |
Jeromy Johnson | 1 | +771/-48 | 6 |
Steven Allen | 2 | +264/-135 | 4 |
Forrest | 1 | +214/-0 | 5 |
Marcin Rataj | 1 | +89/-24 | 2 |
sukun | 1 | +31/-11 | 5 |
Will Scott | 3 | +25/-10 | 3 |
Adin Schmahmann | 3 | +21/-5 | 3 |
web3-bot | 2 | +8/-8 | 3 |
Marten Seemann | 1 | +13/-1 | 1 |
Bumblefudge | 1 | +5/-2 | 1 |
Will | 1 | +1/-1 | 1 |
Nicholas Ericksen | 1 | +1/-1 | 1 |
0xbasar | 1 | +1/-1 | 1 |
This release was brought to you by the Shipyard team.
v0.26.0-rc1
Changelog: docs/changelogs/v0.26.md
v0.25.0
Overview
π¦ Highlights
WebUI: Updated Peers View
WebUI v4.2.0 shipped with updated ipfs-geoip dataset and ability to filter the peers table.
RPC API.Authorizations
Kubo RPC API now supports optional HTTP Authorization.
Granular control over user access to the RPC can be defined in the API.Authorizations
map in the configuration file, allowing different users or apps to have unique access secrets and allowed paths.
This feature is opt-in. By default, no authorization is set up. For configuration instructions, refer to the documentation.
MPLEX Removal
After deprecating and removing mplex support by default in v0.23.0.
We now fully removed it. If you still need mplex support to talk with other pieces of software, please try updating them, and if they don't support yamux or QUIC talk to us about it.
Mplex is unreliable by design, it will drop data and generete errors when sending data too fast, yamux and QUIC support backpressure, that means if we send data faster than the remote machine can process it, we slows down to match the remote's speed.
Graphsync Experiment Removal
Currently the Graphsync server is to our knowledge not used due to lack of compatible software. And we are left to have to maintain the go-graphsync implementation when trying to update Kubo because some dependency changed and it fails to build anymore.
For more information see #9747.
Commands ipfs key sign
and ipfs key verify
This allows the Kubo node to sign arbitrary bytes to prove ownership of a PeerID or an IPNS Name. To avoid signature reuse, the signed payload is always prefixed with libp2p-key signed message:
.
These commands are also both available through the RPC client and implemented in client/rpc
.
For more information see #10230.
π Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: update version
- fix: allow daemon to start correctly if the API is null (#10062) (ipfs/kubo#10062)
- chore: update version
- feat: ipfs key sign|verify (#10235) (ipfs/kubo#10235)
- docs(cli): fix spelling
- feat: webui v4.2.0 (#10241) (ipfs/kubo#10241)
- Migrate coreiface (ipfs/kubo#10237)
- docs: clarify WebRTCDirect cannot reuse the same port as QUIC
- libp2p: remove mplex
- graphsync: remove support for the server
- docs: move kubo-specific docs (#10226) (ipfs/kubo#10226)
- feat(rpc): Opt-in HTTP RPC API Authorization (#10218) (ipfs/kubo#10218)
- docs: clarify ipfs id agent version
- fix: regression in 'ipfs dns'
- docs(changelog): clarify webrtc in v0.24
- chore: create next changelog
- Merge Release: v0.24.0 (ipfs/kubo#10209)
- fix: allow event emitting to happen in parallel with getting the query channel
- fixes to routing put command (#10205) (ipfs/kubo#10205)
- docs: fix accelerated-dht-client
- docs/config: remove extra commas in PublicGateways example entries
- docs: make it clear Web RTC Direct is experimental
- feat: add WebRTC Direct support
- docs: update EARLY_TESTERS.md (#10194) (ipfs/kubo#10194)
- Update Version: v0.24 (ipfs/kubo#10191)
- github.com/ipfs/boxo (v0.15.0 -> v0.16.0):
- Release 0.16.0 (ipfs/boxo#518)
- github.com/libp2p/go-libp2p (v0.32.1 -> v0.32.2):
- release v0.32.2
π¨βπ©βπ§βπ¦ Contributors
Contributor | Commits | Lines Β± | Files Changed |
---|---|---|---|
Εukasz Magiera | 149 | +7833/-2505 | 375 |
Henrique Dias | 26 | +2498/-7535 | 210 |
Steven Allen | 48 | +497/-373 | 129 |
Jorropo | 9 | +247/-604 | 49 |
Michael MurΓ© | 6 | +306/-79 | 14 |
Adin Schmahmann | 3 | +275/-8 | 5 |
Lucas Molas | 1 | +181/-56 | 2 |
Laurent Senta | 1 | +109/-24 | 7 |
Lars Gierth | 6 | +82/-18 | 8 |
Petar Maymounkov | 1 | +66/-32 | 3 |
web3-bot | 1 | +47/-42 | 17 |
Marcin Rataj | 6 | +57/-23 | 8 |
Kevin Atkinson | 5 | +31/-31 | 17 |
Marten Seemann | 3 | +27/-28 | 16 |
Hector Sanjuan | 3 | +28/-14 | 10 |
Overbool | 2 | +36/-3 | 3 |
RaΓΊl Kripalani | 1 | +11/-12 | 4 |
hannahhoward | 2 | +11/-7 | 6 |
Jeromy Johnson | 5 | +9/-9 | 5 |
ForrestWeston | 1 | +14/-1 | 1 |
Russell Dempsey | 1 | +10/-2 | 2 |
Will Scott | 1 | +8/-1 | 1 |
Jeromy | 2 | +4/-4 | 2 |
sukun | 1 | +2/-2 | 1 |
Steve Loeppky | 1 | +2/-2 | 1 |
Jonas Keunecke | 1 | +2/-2 | 1 |
Edgar Lee | 1 | +3/-1 | 1 |
Dreamacro | 1 | +2/-2 | 2 |
godcong | 1 | +1/-1 | 1 |
Cole Brown | 1 | +1/-1 | 1 |
v0.25.0-rc1
Changelog: docs/changelogs/v0.25.md
v0.24.0
Overview
π¦ Highlights
Support for content blocking
This Kubo release ships with built-in content-blocking subsystem announced earlier this year.
Content blocking is an opt-in decision made by the operator of ipfs daemon
.
The official build does not ship with any denylists.
Learn more at /docs/content-blocking.md
Gateway: the root of the CARs are no longer meaningful
When requesting a CAR from the gateway, the root of the CAR might no longer be
meaningful. By default, the CAR root will be the last resolvable segment of the
path. However, in situations where the path cannot be resolved, such as when
the path does not exist, a CAR will be sent with a root of bafkqaaa
(empty CID).
This CAR will contain all blocks necessary to validate that the path does not exist.
IPNS: improved publishing defaults
This release changes the default values used when publishing IPNS record
via ipfs name publish
command:
- Default
--lifetime
increased from24h
to48h
to take full advantage of
the increased expiration window of Amino DHT
(go-libp2p-kad-dht#793) - Default
--ttl
increased from1m
to1h
to improve website caching and follow
saner defaults present in similar systems like DNS
(specs#371)
This change only impacts the implicit defaults, when mentioned parameters are omitted
during publishing. Users are free to override the default if different value
makes more sense for their use case.
IPNS: record TTL is used for caching
In this release, we've made significant improvements to IPNS caching.
Previously, the TTL value in IPNS records was not utilized, and the
boxo/namesys
library maintained a static one-minute resolution cache.
With this update, IPNS publishers gain more control over how long a valid IPNS
record remains cached before checking an upstream routing system, such as Amino
DHT, for updates. The TTL value in the IPNS record now serves as a hint for:
boxo/namesys
: the internal cache, determining how long the IPNS resolution
result is cached before asking upsteam routing systems for updates.boxo/gateway
: theCache-Control
HTTP header in responses to requests made
for/ipns/name
content paths.
These changes make it easier for rarely updated IPNS-hosted websites to be
cached more efficiently and load faster in browser contexts.
Experimental Transport: WebRTC Direct
This Kubo release includes the initial work towards WebRTC Direct
introduced in go-libp2p
v0.32:
WebRTC Direct
allows browser nodes to connect to go-libp2p nodes directly,
without any configuration (e.g. TLS certificates) needed on the go-libp2p
side. This is useful for browser nodes that arenβt able to use
WebTransport.
The /webrtc-direct
transport is disabled by default in Kubo 0.24,
and not ready for production use yet, but we plan to enable it in a future release.
See Swarm.Transports.Network.WebRTCDirect
to learn how to enable it manually, and what current limitations are.
π Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: update version
- fix: allow event emitting to happen in parallel with getting the query channel
- fixes to routing put command (#10205) (ipfs/kubo#10205)
- docs: fix accelerated-dht-client
- docs/config: remove extra commas in PublicGateways example entries
- chore: update version
- docs: make it clear Web RTC Direct is experimental
- feat: add WebRTC Direct support
- docs: update EARLY_TESTERS.md (#10194) (ipfs/kubo#10194)
- Release: v0.24.0-1 (ipfs/kubo#10190)
- github.com/ipfs/boxo (v0.13.1 -> v0.15.0):
- Release v0.15.0 (ipfs/boxo#505)
- Release v0.14.0 (ipfs/boxo#500)
- github.com/ipfs/go-block-format (v0.1.2 -> v0.2.0):
- v0.2.0 bump
- github.com/ipfs/go-graphsync (v0.15.1 -> v0.16.0):
- chore: release 0.16.0
- chore: bump go-libp2p to 0.32.0
- github.com/ipfs/go-ipld-format (v0.5.0 -> v0.6.0):
- v0.6.0 bump
- chore: update deps
- fix: stop using the deprecated io/ioutil package
- github.com/libp2p/go-libp2p (v0.31.0 -> v0.32.1):
- release v0.32.1 (#2637) (libp2p/go-libp2p#2637)
- swarm: fix timer Leak in the dial loop (#2636) (libp2p/go-libp2p#2636)
- release v0.32.0 (#2625) (libp2p/go-libp2p#2625)
- chore: update js-libp2p examples repo (#2624) (libp2p/go-libp2p#2624)
- identify: don't filter dns addresses based on remote addr type (#2553) (libp2p/go-libp2p#2553)
- webrtc: fix race in TestRemoveConnByUfrag (#2620) (libp2p/go-libp2p#2620)
- swarm: fix recursive resolving of DNS multiaddrs (#2564) (libp2p/go-libp2p#2564)
- ci: migrate to renamed interop test action (#2617) (libp2p/go-libp2p#2617)
- quic: update quic-go to v0.39.1, set a static resumption token generator key (#2572) (libp2p/go-libp2p#2572)
- test/basichost: fix flaky test due to rcmgr (#2613) (libp2p/go-libp2p#2613)
- swarm: use typed atomics (#2612) (libp2p/go-libp2p#2612)
- swarm: cleanup stream handler goroutine (#2610) (libp2p/go-libp2p#2610)
- circuitv2: don't check ASN for private addrs (#2611) (libp2p/go-libp2p#2611)
- swarm: use happy eyeballs ranking for TCP dials (#2573) (libp2p/go-libp2p#2573)
- webrtc: fix race in TestMuxedConnection (#2607) (libp2p/go-libp2p#2607)
- tcp: fix build on riscv64 (#2590) (libp2p/go-libp2p#2590)
- Fix missing deprecation tag (#2605) (libp2p/go-libp2p#2605)
- swarm: wait for transient connections to upgrade for NewStream (#2542) (libp2p/go-libp2p#2542)
- docs: fix typos (#2604) (libp2p/go-libp2p#2604)
- webrtc: correctly report incoming packet address on muxed connection (#2586) (libp2p/go-libp2p#2586)
- swarm: add loopback to low timeout filter (#2595) (libp2p/go-libp2p#2595)
- Fix typos in comments and a test failure message (#2600) (libp2p/go-libp2p#2600)
- libp2phttp: don't strip
/
suffix when mounting handler (#2552) (libp2p/go-libp2p#2552) - interop: fix redis env var (#2585) (libp2p/go-libp2p#2585)
- quicreuse: remove QUIC metrics tracer (#2582) (libp2p/go-libp2p#2582)
- config: warn if connmgr limits conflict with rcmgr (#2527) (libp2p/go-libp2p#2527)
- update gomock to v0.3.0 (#2581) (libp2p/go-libp2p#2581)
- webrtc: fix deadlock on connection close (#2580) (libp2p/go-libp2p#2580)
- webrtc: put buffer back to pool (#2574) (libp2p/go-libp2p#2574)
- webrtc: fail Write early if deadline has exceeded before the call (#2578) (libp2p/go-libp2p#2578)
- swarm: fix DialPeer behaviour for transient connections (#2547) (libp2p/go-libp2p#2547)
- websocket: don't resolve /dnsaddr addresses (#2571) (libp2p/go-libp2p#2571)
- core/peer: remove deprecated ID.Pretty method (#2565) (libp2p/go-libp2p#2565)
- core/peer: remove deprecated Encode function (#2566) (libp2p/go-libp2p#2566)
- mock: use go.uber.org/mock (#2540) (libp2p/go-libp2p#2540)
- ...