kubo

An IPFS implementation in Go

OTHER License

Stars
15.8K
Committers
428

Bot releases are hidden (Show)

kubo - v0.30.0-rc1 Latest Release

Published by lidel about 2 months ago

kubo - v0.29.0

Published by lidel 4 months ago

Overview

🔦 Highlights

Add search functionality for pin names

It is now possible to search for pins by name via ipfs pin ls --name "SomeName".
The search is case-sensitive and will return all pins that contain the specified substring in their name.

[!TIP]
The ipfs pin ls -n is now a shorthand for ipfs pin ls --name, mirroring the behavior of ipfs pin add.
See ipfs pin ls --help for more information.

Customizing ipfs add defaults

This release supports overriding global data ingestion defaults used by commands like ipfs add via user-defined Import.* configuration options.
The hash function, CID version, or UnixFS raw leaves and chunker behaviors can be set once, and used as the new implicit default for ipfs add.

[!TIP]
As a convenience, two CID profiles are provided: legacy-cid-v0 and test-cid-v1.
A test profile that defaults to modern CIDv1 can be applied via ipfs config profile apply test-cid-v1.
We encourage users to try it and report any issues in kubo#4143.

📝 Changelog

  • github.com/ipfs/kubo:
    • fix(cli): unify --name param in ls and add (#10439) (ipfs/kubo#10439)
    • chore: set version to 0.29.0-rc2
    • fix(libp2p): streams config validation in resource manager (#10435) (ipfs/kubo#10435)
    • chore: update version
    • chore: libp2p 0.34.1 (#10429) (ipfs/kubo#10429)
    • refactor: stop using github.com/pkg/errors (#10431) (ipfs/kubo#10431)
    • chore: fix --help text
    • config: introduce Import section (#10421) (ipfs/kubo#10421)
    • feat: enables searching pins by name (#10412) (ipfs/kubo#10412)
    • fix(fuse): ipfs path parsing (#10243) (ipfs/kubo#10243)
    • core/node: fix divide by zero fatal crash for reprovide rate check (#10411) (ipfs/kubo#10411)
    • chore: bump to go-ipfs-cmds @ v0.11
    • chore: create next changelog
    • Merge Release: v0.28.0 [skip changelog] (ipfs/kubo#10402)
    • docs: update release checklist (#10401) (ipfs/kubo#10401)
    • chore: update version
  • github.com/ipfs/boxo (v0.19.0 -> v0.20.0):
  • github.com/ipfs/go-blockservice (v0.5.0 -> v0.5.2):
    • docs: remove contribution section
    • chore: bump version
    • chore: deprecate types and readme
    • chore: release v0.5.1
    • fix: remove busyloop in getBlocks by removing batching
  • github.com/ipfs/go-ipfs-blockstore (v1.3.0 -> v1.3.1):
    • docs: remove contribution section
    • chore: bump version
    • chore: deprecate types and readme
  • github.com/ipfs/go-ipfs-cmds (v0.10.0 -> v0.11.0):
  • github.com/ipfs/go-ipfs-ds-help (v1.1.0 -> v1.1.1):
    • docs: remove contribution section
    • chore: bump version
    • chore: deprecate types and readme
  • github.com/ipfs/go-ipfs-exchange-interface (v0.2.0 -> v0.2.1):
  • github.com/ipfs/go-verifcid (v0.0.2 -> v0.0.3):
  • github.com/ipld/go-car (v0.5.0 -> v0.6.2):
    • v0.6.2 (ipld/go-car#464)
    • fix: opt-in way to allow empty list of roots in CAR headers (ipld/go-car#461)
    • feat: add inverse and version to filter cmd (ipld/go-car#457)
    • v0.6.1 bump
    • chore: update usage of merkledag by go-car (#437) (ipld/go-car#437)
    • feat(cmd/car): add '--no-wrap' option to 'create' command (ipld/go-car#432)
    • fix: remove github.com/ipfs/go-ipfs-blockstore dependency
    • feat: expose index for StorageCar
    • perf: reduce NewCarReader allocations
    • fix(deps): update deps for cmd (use master go-car and go-car/v2 for now)
    • fix: new error strings from go-cid
    • fix: tests should match stderr for verbose output
    • fix: reading from stdin should broadcast EOF to block loaders
    • refactor insertion index to be publicly accessible (ipld/go-car#408)
    • chore: unmigrate from go-libipfs
    • Create CODEOWNERS
    • blockstore: give a direct access to the index for read operations
    • blockstore: only close the file on error in OpenReadWrite, not OpenReadWriteFile
    • fix: handle (and test) WholeCID vs not; fast Has() path for storage
    • ReadWrite: faster Has() by using the in-memory index instead of reading on disk
    • fix: let extract skip missing unixfs shard links
    • fix: error when no files extracted
    • fix: make -f optional, read from stdin if omitted
    • fix: update cmd/car/README with latest description
    • chore: add test cases for extract modes
    • feat: extract accepts '-' as an output path for stdout
    • feat: extract specific path, accept stdin as streaming input
    • fix: if we don't read the full block data, don't error on !EOF
    • blockstore: try to close during Finalize(), even in case of previous error
    • ReadWrite: add an alternative FinalizeReadOnly+Close flow
    • feat: add WithTrustedCar() reader option (#381) (ipld/go-car#381)
    • blockstore: fast path for AllKeysChan using the index
    • fix: switch to crypto/rand.Read
    • stop using the deprecated io/ioutil package
    • fix(doc): fix storage package doc formatting
    • fix: return errors for unsupported operations
    • chore: move insertionindex into store pkg
    • chore: add experimental note
    • fix: minor lint & windows fd test problems
    • feat: docs for StorageCar interfaces
    • feat: ReadableWritable; dedupe shared code
    • feat: add Writable functionality to StorageCar
    • feat: StorageCar as a Readable storage, separate from blockstore
    • feat(blockstore): implement a streaming read only storage
    • feat(cmd): add index create subcommand to create an external carv2 index (ipld/go-car#350)
    • chore: bump version to 0.6.0
    • fix: use goreleaser instead
    • Allow using WalkOption in WriteCar function (ipld/go-car#357)
    • fix: update go-block-format to the version that includes the stubs
    • feat: upgrade from go-block-format to go-libipfs/blocks
    • cleanup readme a bit to make the cli more discoverable (#353) (ipld/go-car#353)
    • Update install instructions in README.md
    • Add a debugging form for car files. (#341) (ipld/go-car#341)
    • (ipld/go-car#340)
    • add a SkipNext method on block reader (#338) (ipld/go-car#338)
    • feat: Has() and Get() will respect StoreIdentityCIDs option
  • github.com/libp2p/go-libp2p (v0.33.2 -> v0.34.1):
  • github.com/libp2p/go-libp2p-pubsub (v0.10.0 -> v0.11.0):
  • github.com/multiformats/go-multiaddr (v0.12.3 -> v0.12.4):
  • github.com/whyrusleeping/cbor-gen (v0.1.0 -> v0.1.1):

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
Henrique Dias 33 +4994/-579 115
Rod Vagg 29 +3781/-1367 90
sukun 12 +2026/-1215 39
Marco Munizaga 18 +1482/-382 47
Will 5 +769/-213 17
Steven Allen 5 +540/-115 24
Sukun 4 +274/-194 11
Michael Muré 7 +372/-55 16
Marten Seemann 1 +243/-141 10
Marcin Rataj 7 +244/-134 13
hannahhoward 1 +277/-0 2
Will Scott 5 +54/-38 9
Hector Sanjuan 3 +68/-20 5
Jorropo 5 +34/-47 15
Andrew Gillis 2 +67/-7 3
IGP 1 +59/-8 5
Adin Schmahmann 2 +50/-0 3
Laurent Senta 1 +40/-4 2
Brad Fitzpatrick 1 +42/-2 2
Fabio Bozzo 1 +36/-1 3
Yolan Romailler 1 +15/-19 4
Hlib Kanunnikov 2 +14/-14 6
Andreas Penzkofer 1 +22/-2 3
Matthias Fasching 1 +8/-10 1
gopherfarm 2 +16/-1 2
Dreamacro 1 +1/-10 1
web3-bot 2 +7/-3 4
Rafał Leszko 1 +4/-4 1
Oleg Kovalov 1 +4/-4 3
dbeal 1 +5/-1 1
Antonio Navarro Perez 1 +4/-1 1
dozyio 1 +3/-0 1
zhiqiangxu 1 +1/-1 1
the harder the luckier 1 +1/-1 1
Lukáš Lukáč 1 +1/-1 1
Steve Loeppky 1 +1/-0 1
kubo - v0.29.0-rc2

Published by lidel 4 months ago

kubo - v0.29.0-rc1

Published by hacdias 5 months ago

kubo - v0.28.0

Published by hacdias 6 months ago

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 https://github.com/ipfs/kubo/issues/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.

👨‍👩‍👧‍👦 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
kubo - v0.28.0-rc1

Published by hacdias 6 months ago

kubo - v0.27.0

Published by hacdias 8 months ago

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 https://github.com/ipfs/kubo/issues/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

👨‍👩‍👧‍👦 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
kubo - v0.27.0-rc2

Published by hacdias 8 months ago

kubo - v0.27.0-rc1

Published by hacdias 8 months ago

kubo - v0.26.0

Published by hacdias 9 months ago

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:

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

  • 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):
  • github.com/ipfs/go-ipld-cbor (v0.0.6 -> v0.1.0):
  • 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):

👨‍👩‍👧‍👦 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
kubo - v0.26.0-rc1

Published by hacdias 9 months ago

kubo - v0.25.0

Published by Jorropo 10 months ago

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 https://github.com/ipfs/kubo/pull/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 https://github.com/ipfs/kubo/issues/10230.

📝 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):
  • 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
kubo - v0.25.0-rc1

Published by hacdias 11 months ago

kubo - v0.24.0

Published by hacdias 11 months ago

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 from 24h to 48h to take full advantage of
    the increased expiration window of Amino DHT
    (go-libp2p-kad-dht#793)
  • Default --ttl increased from 1m to 1h 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: the Cache-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

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
Henrique Dias 27 +4505/-3853 244
Marten Seemann 18 +4260/-1173 101
Sukun 24 +1499/-340 79
Andrew Gillis 4 +169/-1025 16
Adin Schmahmann 4 +788/-184 19
Hector Sanjuan 6 +619/-72 19
Steven Allen 11 +489/-101 14
Jorropo 10 +221/-192 28
Łukasz Magiera 2 +306/-9 3
Lucas Molas 1 +183/-52 2
Marcin Rataj 5 +160/-25 6
piersy 1 +57/-0 6
Raúl Kripalani 1 +25/-25 2
Alvin Reyes 1 +34/-14 1
Dennis Trautwein 1 +1/-40 2
Icarus9913 1 +14/-14 10
Takashi Matsuda 2 +18/-1 3
gammazero 4 +8/-5 7
xiaolou86 1 +6/-6 5
Daniel Martí 1 +9/-2 1
Rod Vagg 3 +5/-5 4
Andrej Manduch 1 +5/-5 3
vuittont60 1 +4/-4 3
vyzo 1 +5/-1 1
tkzktk 1 +3/-3 3
tk 1 +3/-3 2
Prem Chaitanya Prathi 1 +1/-5 1
Kay 2 +2/-3 2
Thomas Eizinger 1 +2/-2 1
Steve Loeppky 1 +2/-2 1
Jonas Keunecke 1 +2/-2 1
Alejandro Criado-Pérez 1 +1/-1 1
web3-bot 1 +1/-0 1
Eric 1 +1/-0 1
kubo - v0.24.0-rc2

Published by hacdias 12 months ago

kubo - v0.24.0-rc1

Published by hacdias 12 months ago

kubo - v0.23.0

Published by Jorropo about 1 year ago

Overview

🔦 Highlights

Mplex deprecation

Mplex is being deprecated, this is because it is unreliable and
randomly drop streams when sending data too fast.

New pieces of code rely on backpressure, that means the stream will dynamicaly
slow down the sending rate if data is getting backed up.
Backpressure is provided by Yamux and QUIC.

In case you need compatibility with older implementations that do not ship with
Yamux (like default's JS-IPFS) you can turned it back ON in the config with:

$ ipfs config --json Swarm.Transports.Multiplexers.Mplex 200

We will completely remove Mplex in v0.24 as it makes protocols very bad to implement,
if you are in this situation you need to add yamux support to your other implementation.

Gateway: meaningful CAR responses on Not Found errors

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 without having to trust the gateway.

Gateway: added Gateway.DisableHTMLErrors configuration option

The Gateway.DisableHTMLErrors configuration option forces errors to be
displayed in browsers as plain text (text/plain) rather than HTML error
pages. It's especially beneficial for whitelabel or middleware deployments that
wish to avoid IPFS branding and links on error pages in browsers.

Binary characters in file names: no longer works with old clients and new Kubo servers

In this version, we updated Kubo to support Go 1.20+. In Go 1.20, a regression
regarding multipart headers was introduced.
This only affects ipfs add when a file name has binary characters in its name.
As a consequence, we had to update the encoding of the file name headers. This is
the compatibility table:

New Client Old Client
New Server 🟡*
Old Server

*Old clients can only send Unicode file paths to the server.

Self-hosting /routing/v1 endpoint for delegated routing needs

The Routing system configured in Kubo can be now exposed on the gateway port as a standard
HTTP Routing V1 API endpoint. This allows
self-hosting and experimentation with custom delegated routers. This is disabled by default,
but can be enabled by setting Gateway.ExposeRoutingAPI to true .

Trustless Gateway Over Libp2p Experiment

In this update, we've introduced an experimental opt-in feature allowing users to
serve a subset of Trustless Gateway responses,
such as blocks and CARs, over libp2p. This enhancement leverages the ongoing
/http/1.1 specification work in libp2p
to make it easier to support HTTP semantics over libp2p streams.

This development means that if users wish to utilize the Trustless Gateway API
for data transport, they can now do so even in scenarios where standard HTTP
might be problematic, such as when the endpoint is behind a firewall or when
attempting to serve data to a browser without a CA certificate.

See HTTP Gateway over Libp2p for details about this experiment.

Removal of /quic (Draft 29) support

Kubo no longer supports QUIC Draft 29. This means that older nodes aren't able to connect
to newer nodes using QUIC Draft 29. However, they are still able to connect through any other
transport that both nodes talk (such as QUIC RFC 9000, or TCP). QUIC Draft 29 was a preliminary implementation of QUIC before
the official RFC 9000 was published, and it has now been dropped by go-libp2p
and therefore Kubo.

In Kubo 0.18, we shipped a migration
to have listeners for both /quic (Draft 29) and /quic-v1 (RFC 9000). Similarly, in this
version we are shipping a migration to remove the current /quic addresses, maintaining
the /quic-v1 addresses only. For more background information, check issue #9496.

Better Caching of multiaddresses for providers in DHT servers

Thanks to probelab.io's RFM17.1 DHT servers will now cache the addresses of content hosts for the lifetime of the provider record.

This means clients who resolve content from theses servers get a responses which include both peer id and multiaddresses.
In most cases this enables skipping a second query which resolves the peer id to multiaddresses for stable enough peers.

This will improve content fetching lantency in the network overtime as servers updates.

Fixed FUSE multiblock structures

lsing directories and reading dag-pb files on a fuse volume have been fixed. #9044
Thx a lot @bmwiedemann for debugging this issue.

📝 Changelog

  • github.com/ipfs/kubo:
    • fix: align systemd unit file with default IPFS installation path (#10163) (ipfs/kubo#10163)
    • docs: capitalize headers for consistency
    • Merge commit '695bf66674931a138862b6fa2cb0b16dc2f6ddd8' into release-v0.23.0
    • chore: update version
    • changelog: generalize fuse 9044's entry
    • changelog: update fuse 9044's entry
    • Update go-unixfsnode to 1.8.0 to fix FUSE
    • docs(readme): header improvements (#10144) (ipfs/kubo#10144)
    • fix(docker): allow nofuse builds for MacOS (#10135) (ipfs/kubo#10135)
    • docs: fix typos
    • docs: s/ipfs dht/amino dht/
    • changelog: mention probelab RFM17.1 dht improvement
    • tests: remove sharness ping tests
    • perf: make bootstrap saves O(N)
    • chore: update go-libp2p-kad-dht
    • chore: webui v4.1.1 (#10120) (ipfs/kubo#10120)
    • core/bootstrap: fix panic without backup bootstrap peer functions (#10029) (ipfs/kubo#10029)
    • feat: add Gateway.DisableHTMLErrors option (#10137) (ipfs/kubo#10137)
    • fix(migrations): use dweb.link (#10133) (ipfs/kubo#10133)
    • docs: add changelog info for QUIC Draft 29 (#10132) (ipfs/kubo#10132)
    • feat: add gateway to http over libp2p (ipfs/kubo#10108)
    • migration: update 14-to-15 to v1.0.1
    • chore: update to build with Go 1.21
    • refactor: stop using go-libp2p deprecated peer.ID.Pretty
    • docs(readonly): fix typo
    • docs(changelog): link to relevant IPIP
    • fix: hamt traversal in ipld-explorer ([email protected]) (#10025) (ipfs/kubo#10025)
    • refactor: if statement (#10105) (ipfs/kubo#10105)
    • chore: bump repo version to 15
    • docs: remove link to deleted #accelerated-dht-client
    • feat(gateway): expose /routing/v1 server (opt-in) (#9877) (ipfs/kubo#9877)
    • improve error in fuse node failures
    • chore: update boxo, go-libp2p, and internalize mplex (#10095) (ipfs/kubo#10095)
    • dockerfile: reorder copy order for better layer caching
    • refactor: using error is instead of == (#10093) (ipfs/kubo#10093)
    • fix: use %-encoded headers in most compatible way
    • fix: open /dev/null with read write permissions
    • chore: bump to go 1.20
    • docs(readme): new logo and header
    • docker: change to releases that follow debian's updates
    • docker: bump debian version to bookworm
    • chore: restore exec perms for t0116-gateway-cache.sh and fixtures (#10085) (ipfs/kubo#10085)
    • fix(gw): useful IPIP-402 CARs on not found errors (#10084) (ipfs/kubo#10084)
    • feat: add zsh completions (#10040) (ipfs/kubo#10040)
    • style: remove commented imports [skip changelog]
    • style: gofumpt and godot [skip changelog] (#10081) (ipfs/kubo#10081)
    • chore: bump boxo for verifcid breaking changes
    • chore: remove outdated comment (#10077) (ipfs/kubo#10077)
    • chore: remove deprecated testground plans
    • feat: allow users to optin again into mplex
    • feat: remove Mplex
    • docs(readme): minimal reqs (#10066) (ipfs/kubo#10066)
    • docs: add v0.23.md
    • docs: get ready for v0.23
    • chore: fix link in v0.22 changelog
  • github.com/ipfs/boxo (v0.11.0 -> v0.13.1):
  • github.com/ipfs/go-graphsync (v0.14.4 -> v0.15.1):
    • v0.15.1 bump
    • fix: partial revert of 1be7c1a20; make traverser process identity CIDs
    • v0.15.0 bump
    • chore: add identity CID parse tests
    • fix: traverser should skip over identity CIDs
    • fix(ipld): update ipld deps, only slurp LargeBytesNode when matching
    • docs(version): update for v0.14.7
    • Handle context cancellation properly (#428) (ipfs/go-graphsync#428)
    • chore(version.json): update for v0.14.6
    • feat: MaxLinks for requests (#420) (ipfs/go-graphsync#420)
    • fix(responsemanager): network disconnect reliability (#425) (ipfs/go-graphsync#425)
    • Update version to reflect latest fixes (#424) (ipfs/go-graphsync#424)
    • Fix shutdown bug in #412 (#422) (ipfs/go-graphsync#422)
  • github.com/ipfs/go-ipfs-cmds (v0.9.0 -> v0.10.0):
    • chore: version 0.10.0
    • fix: panic when calling .SetLength for writerResponseEmitter
    • fix!: client with raw abs path option
    • doc: clarify flag inheritance explanation
    • ci: uci/copy-templates (ipfs/go-ipfs-cmds#242)
    • chore: remove dep on github.com/Kubuxu/go-os-helper
  • github.com/ipfs/go-unixfsnode (v1.7.1 -> v1.8.1):
    • v1.8.1 bump
    • testutil: relax DirEntry usage for non-dag-pb
    • v1.8.0 bump
    • fix: add cross-impl shard test
    • files returned from unixfsnode should be traversable back to their substrate
    • fix: better import name
    • chore: refactor and add tests with fixtures
    • fix: proper tsize encoding in sharded files
    • rel 1.7.4
    • Provide path for getting sizes on directory iteration (ipfs/go-unixfsnode#60)
    • tag 1.7.3 (ipfs/go-unixfsnode#57)
    • Fail to construct preload hamt shards when traversal fails (ipfs/go-unixfsnode#55)
    • fix: large files support io.SeekCurrent (ipfs/go-unixfsnode#56)
    • chore(version): update version number
    • feat: add entity matcher w/o preload, add matcher fn for consuming bytes (ipfs/go-unixfsnode#52)
  • github.com/ipld/go-ipld-prime (v0.20.0 -> v0.21.0):
    • v0.21.0 release
    • fix(selectors): document ranges in slice matcher
    • fix(selectors): update ipld/ipld submodule with latest fixtures
    • fix(selectors): more permissive with slice "from" underflow
    • chore: extract simpleBytes to testutil package
    • feat(selectors): negative values for slice matcher's From and To
    • chore: extract MultiByteNote to testutil package
    • feat(test): add matcher/slice selector test cases
    • feat: remove hard-error when slice matcher reaches non-string/bytes node
    • fix: cache offsets for sequential reads
    • feat: add inline union representation to schema parser
    • fix: basic.NewInt returns pointer (like others)
    • fix(bindnode): listpairs value assembly handles complex reprs
    • fix(bindnode): listpairs repr assembler handles AssignNode
    • fix(schema): handle parsing of "listpairs" in the DSL
    • fix: remove _skipAbsent labels
    • fix: make listpairs repr [[k1,v1],[k2,v2]...]
    • feat(bindnode): support listpairs struct representation
    • fix(windows,test): avoid "already exists" error on codegen tests for Windows
    • Make traversal.WalkTransforming() work
    • doc: clean up and expand on traversal pkg docs
    • doc: add lots of notes about using the preloader and the budget
    • doc: expand on preloader docs
    • fix: inline initialPhase() logic for clarity
    • feat: preload walk using phase state, call preloader once per link
    • fix: handle Budget & SeenLinks
    • chore: remove BufferedLoader
    • fix: recurse preloader at block level
    • fix: Context->PreloadContext for clarity and consistency with LinkContext
    • fix: replace ioutil.ReadAll
    • fix: fix tooling complaints
    • feat: add BufferedLoader
    • feat(traversal): allow preloading functionality
    • fix: address dodgy test case variable capture
    • stop using the deprecated io/ioutil package
    • stop using the deprecated io/ioutil package
    • stop using the deprecated io/ioutil package
    • fix: make StartAtPath work properly for matching walks
  • github.com/libp2p/go-libp2p (v0.29.2 -> v0.31.0):
  • github.com/libp2p/go-libp2p-kad-dht (v0.24.2 -> v0.24.4):
  • github.com/libp2p/go-libp2p-routing-helpers (v0.7.1 -> v0.7.3):
    • chore: release v0.7.3
    • nit: invert if
    • fix: for getValueOrErrorParallel do not return values if they come with errors
    • test: add test to make sure we return not found when we get errors back with values
    • chore: release v0.7.2
    • tracing: do not leak goroutines when the context is canceled
    • tracing: allow for reuse of the tracing
    • tracing: add tracing to compose parallel's worker
    • tests: add more tests
    • tests: mark all tests Parallel
    • tracing: add highlevel APIs records on the composable routers
  • github.com/libp2p/go-reuseport (v0.3.0 -> v0.4.0):
  • github.com/multiformats/go-multiaddr (v0.10.1 -> v0.11.0):
  • github.com/warpfork/go-testmark (v0.11.0 -> v0.12.1):

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
Rod Vagg 48 +3578/-1789 110
Henrique Dias 24 +3173/-1128 104
Jorropo 51 +1721/-1297 252
Marco Munizaga 6 +1989/-505 39
Kay 3 +487/-474 163
hannahhoward 8 +626/-136 23
Calvin Behling 6 +496/-259 20
Eric Myhre 9 +610/-121 16
Adin Schmahmann 17 +659/-45 35
Marten Seemann 17 +218/-477 119
Sukun 11 +481/-174 29
CJB 1 +639/-2 5
Hector Sanjuan 10 +450/-127 21
Wondertan 2 +203/-127 8
Marcin Rataj 11 +148/-86 18
Andrew Gillis 2 +163/-14 5
P. Reis 3 +120/-4 4
Will Scott 4 +107/-12 6
Amir Mohammad Fakhimi 1 +97/-2 5
Ed Schouten 1 +55/-7 2
Icarus9913 1 +30/-30 18
Dirk McCormick 1 +3/-42 1
Raúl Kripalani 1 +20/-18 4
Michael Muré 1 +26/-7 5
Prem Chaitanya Prathi 1 +28/-1 2
ShengTao 1 +13/-14 4
Prithvi Shahi 3 +14/-13 3
web3-bot 5 +12/-10 9
Alejandro Criado-Pérez 1 +11/-11 6
Steven Allen 2 +6/-10 2
Andrej Manduch 1 +5/-5 3
Russell Dempsey 2 +4/-2 2
Johannes Maria Frank 1 +4/-1 1
downIoads 1 +2/-2 1
Will 2 +2/-2 2
Marin Kirkov 1 +2/-2 2
Gus Eggert 1 +2/-2 1
Bernhard M. Wiedemann 1 +4/-0 1
Dennis Trautwein 1 +1/-2 1
“GheisMohammadi” 1 +1/-1 1
cce 1 +1/-1 1
Joao Andrade 1 +1/-1 1
guillaumemichel 1 +1/-0 1
Santiago Botto 1 +0/-1 1
kubo - v0.23.0-rc1

Published by Jorropo about 1 year ago

kubo - v0.21.1

Published by Jorropo about 1 year ago

v0.21.1

Dependencies updates for bug fixes.

kubo - v0.22.0

Published by Jorropo about 1 year ago

Release issue #9911

v0.22.0

Overview

🔦 Highlights

Gateway: support for order= and dups= parameters (IPIP-412)

The updated boxo/gateway library
introduces support for ordered CAR responses through the inclusion of optional
CAR content type parameters: order=dfs and dups=y|n from
IPIP-412.

Previously, Kubo already provided CARs in DFS order without duplicate blocks.
With the implementation of IPIP-412, this behavior is now explicitly defined
rather than implied.

In the absence of dups or order in Accept request reader, the default CAR
response will have the Content-Type: application/vnd.ipld.car; version=1; order=dfs; dups=n
and the same blocks as Kubo 0.21.

Kubo 0.22 still only supports DFS block ordering (order=dfs). However, it is
now possible to request a DFS CAR stream with duplicate blocks by opting in via
Accept: application/vnd.ipld.car; order=dfs; dups=y. This opt-in feature can be
beneficial for memory-constrained clients and IoT devices, as it allows for
streaming large DAGs without the need to store all previously encountered
blocks in memory.

ipfs name publish now supports V2 only IPNS records

When publishing an IPNS record, you are now able to create v2 only records
by passing --v1compat=false. By default, we still create V1+V2 records, such
that there is the highest chance of backwards compatibility. The goal is to move
to V2 only in the future.

TODO: add links to IPIP https://github.com/ipfs/specs/issues/376

IPNS name resolution has been fixed

IPNS name resolution had a regression where if IPNS over PubSub was enabled, but the name was not also available via IPNS over PubSub it would take 1 minute to for the lookup to complete (if the record was not yet cached).

This has been fixed and as before will give the best record from either the DHT subsystem or IPNS over PubSub, whichever comes back first.

For details see #9927 and #10020.

go-libp2p v0.29.0 update with smart dialing

We updated from go-libp2p v0.27.7 to v0.29.0. This release includes smart dialing, which is a prioritization algorithm that will try to rank addresses and protocols rather than attempting all options in parallel. Anecdotally, we have observed Kubo nodes make 30% less dials with no to low latency impact.

This includes a breaking change to ipfs id and some of the ipfs swarm commands. We no longer report ProtocolVersion. This used to be hardcoded as ipfs/0.1.0 and sent to other peers but was not providing any distinguishing value. See libp2p/go-libp2p#2294 for more information.

📝 Changelog

👨‍👩‍👧‍👦 Contributors

Contributor Commits Lines ± Files Changed
Henrique Dias 14 +3735/-17889 185
Sukun 27 +5829/-957 98
Marten Seemann 39 +2924/-1831 161
Marco Munizaga 17 +1498/-580 76
Prem Chaitanya Prathi 1 +757/-740 61
Jorropo 20 +639/-444 49
Marcin Rataj 9 +331/-194 20
Will 2 +118/-211 9
Adin Schmahmann 4 +275/-41 8
Rod Vagg 8 +228/-46 28
Adrian Sutton 1 +190/-17 4
Hlib Kanunnikov 3 +139/-40 9
VM 2 +80/-79 49
web3-bot 3 +22/-46 4
Will Scott 2 +29/-28 6
Prithvi Shahi 2 +40/-7 2
Laurent Senta 1 +40/-4 2
Brad Fitzpatrick 1 +42/-2 2
Piotr Galar 3 +16/-16 3
Steve Loeppky 1 +6/-23 2
Sahib Yar 1 +4/-4 3
Russell Dempsey 2 +4/-2 2
Mohamed MHAMDI 1 +3/-3 1
Bryan White 1 +2/-2 1
Dennis Trautwein 1 +1/-1 1
Package Rankings
Top 22.28% on Conda-forge.org
Top 0.35% on Proxy.golang.org
Badges
Extracted from project README's
YouTube Channel Subscribers Follow @IPFS on Twitter Docker Image Version (latest semver) dist.ipfs.tech Downloads kubo via Community Repo kubo-git via AUR docs: Command-line quick start docs: Command-line reference