Skip to content

Releases: ipfs/boxo

v0.24.0

03 Oct 19:09
2fdde02
Compare
Choose a tag to compare

Added

  • boxo/bitswap/server:
    • A new WithWantHaveReplaceSize(n) option can be used with bitswap.New to fine-tune cost-vs-performance. It sets the maximum size of a block in bytes up to which the bitswap server will replace a WantHave with a WantBlock response. Setting this to 0 disables this WantHave replacement and means that block sizes are not read when processing WantHave requests. #672
  • routing/http:
    • added support for address and protocol filtering to the delegated routing server (IPIP-484) #671 #678
    • added support for address and protocol filtering to the delegated routing client (IPIP-484) #678. To add filtering to the client, use the WithFilterAddrs and WithFilterProtocols options when creating the client.Client-side filtering for servers that don't support filtering is enabled by default. To disable it, use the disableLocalFiltering option when creating the client.

Fixed

  • unixfs/hamt Log error instead of panic if both link and shard are nil #393

Full Changelog: v0.23.0...v0.24.0

v0.23.0

05 Sep 21:34
41b8882
Compare
Choose a tag to compare

Added

  • files, ipld/unixfs, mfs and tar now support optional UnixFS 1.5 mode and modification time metadata #653
  • gateway deserialized responses will have Last-Modified set to value from optional UnixFS 1.5 modification time field (if present in DAG) and a matching If-Modified-Since will return 304 Not Modified (UnixFS 1.5 files only) #659

Changed

  • updated Go in go.mod to 1.22 #661
  • updated go-libp2p to v0.36.3
  • chunker refactored to reduce overall memory use by reducing heap fragmentation #649
  • bitswap/server minor performance improvements in concurrent operations #666
  • removed dependency on go-ipfs-blocksutil #656

Full Changelog: v0.22.0...v0.23.0

v0.22.0

06 Aug 22:52
f0cf57d
Compare
Choose a tag to compare

What's Changed

Changed

  • go-libp2p dependency updated to v0.36 (release notes)
  • bitswap/server minor memory use and performance improvements #634
  • bitswap/server PeerLedger.Wants now returns bool (interface change from Wants(p peer.ID, e wl.Entry) to Wants(p peer.ID, e wl.Entry) bool) #629
  • bitswap unify logger names to use uniform format bitswap/path/pkgname #637
  • gateway now always returns meaningful cache-control headers for generated HTML listings of UnixFS directories #643
  • util generate random test data using ipfs/go-test instead of internal util code #638

Fixed

  • boxo/gateway now correctly returns 404 Status Not Found instead of 500 when the requested content cannot be found due to offline exchange, gateway running in no-fetch (non-recursive) mode, or a similar restriction that only serves a specific set of CIDs. #630
  • bitswap/client fix memory leak in BlockPresenceManager due to unlimited map growth. #636
  • bitswap/network fixed race condition when a timeout occurred before hole punching completed while establishing a first-time stream to a peer behind a NAT #651
  • bitswap: wantlist overflow handling now cancels existing entries to make room for newer entries. This fix prevents the wantlist from filling up with CIDs that the server does not have. #629

New Contributors

Full Changelog: v0.21.0...v0.22.0

v0.21.0

21 Jun 00:13
9555624
Compare
Choose a tag to compare

Changed

Removed

Fixed

  • routing/http: the FindPeer now returns routing.ErrNotFound when no addresses are found
  • routing/http: the FindProvidersAsync no longer causes a goroutine buildup

Full Changelog: v0.20.0...v0.21.0

v0.20.0

27 May 10:30
980447e
Compare
Choose a tag to compare

Added

  • gateway has new backend possibilities:
    • NewRemoteBlocksBackend allows you to create a gateway backend that uses one or multiple other gateways as backend. These gateways must support RAW block requests (application/vnd.ipld.raw), as well as IPNS Record requests (application/vnd.ipfs.ipns-record). With this, we also introduced NewCacheBlockStore, NewRemoteBlockstore and NewRemoteValueStore.
    • NewRemoteCarBackend allows you to create a gateway backend that uses one or multiple Trustless Gateways as backend. These gateways must support CAR requests (application/vnd.ipld.car), as well as the extensions describe in IPIP-402. With this, we also introduced NewCarBackend, NewRemoteCarFetcher and NewRetryCarFetcher.
  • gateway now sets the Content-Location header for requests with non-default content format, as a result of content negotiation. This allows generic and misconfigured HTTP caches to store Deserialized, CAR and Block responses separately, under distinct cache keys.
  • gateway now supports car-dups, car-order and car-version as query parameters in addition to the application/vnd.ipld.car parameters sent via Accept header. The parameters in the Accept header have always priority, but including them in URL simplifies HTTP caching and allows use in Content-Location header on CAR responses to maximize interoperability with wide array of HTTP caches.
  • bitswap/server now allows to override the default peer ledger with WithPeerLedger.

Fixed

  • routing/http/server now returns 404 Status Not Found when no records can be found.
  • routing/http/server now supports legacy RSA PeerIDs encoded as Base58 Multihash

What's Changed

Full Changelog: v0.18.0...v0.20.0

v0.19.0

09 Apr 10:00
b50fcfd
Compare
Choose a tag to compare

Added

  • routing/http/server now adds Cache-Control HTTP header to GET requests: 15 seconds for empty responses, or 5 minutes for responses with providers.
  • routing/http/server the /ipns endpoint is more friendly to users opening URL in web browsers: returns Content-Disposition header and defaults to application/vnd.ipfs.ipns-record response when Accept is missing.
  • provider:
    • Exports a NewPrioritizedProvider, which can be used to prioritize certain providers while ignoring duplicates.
    • 🛠️ NewPinnedProvider now prioritizes root blocks, even if onlyRoots is set to false.

Changed

  • go version changed to 1.21

Fixed

  • 🛠️routing/http/server: delegated peer routing endpoint now supports both PeerID string notaitons from libp2p specs.
  • bitswap: add missing client WithBlockReceivedNotifier and WithoutDuplicatedBlockStats options to the exchange.

Full Changelog: v0.18.0...v0.19.0

v0.18.0

20 Feb 08:46
c336fc9
Compare
Choose a tag to compare

Added

  • blockservice now has ContextWithSession and EmbedSessionInContext functions, which allows to embed a session in a context. Future calls to BlockGetter.GetBlock, BlockGetter.GetBlocks and NewSession will use the session in the context.
  • blockservice.NewWritethrough deprecated function has been removed, instead you can do blockservice.New(..., ..., WriteThrough()) like previously.
  • gateway: a new header configuration middleware has been added to replace the existing header configuration, which can be used more generically.
  • namesys now has a WithMaxCacheTTL option, which allows you to define a maximum TTL that will be used for caching IPNS entries.

Fixed

  • 🛠 boxo/gateway: when making a trustless CAR request with the "entity-bytes" parameter, using a negative index greater than the underlying entity length could trigger reading more data than intended
  • 🛠 boxo/gateway: the header configuration Config.Headers and AddAccessControlHeaders has been replaced by the new middleware provided by NewHeaders.
  • 🛠 routing/http/client: the default HTTP client is no longer a global singleton. Therefore, using WithUserAgent won't modify the user agent of existing routing clients. This will also prevent potential race conditions. In addition, incompatible options will now return errors instead of silently failing.

What's Changed

New Contributors

Full Changelog: v0.16.0...v0.18.0

v0.17.0

10 Jan 15:41
8530184
Compare
Choose a tag to compare

Added

  • 🛠 pinning/pinner: you can now give a custom name when pinning a CID. To reflect this, the Pinner has been adjusted. Note that calling Pin for the same CID with a different name will replace its current name by the newly given name.

Removed

  • 🛠 tracing jaeger exporter has been removed due to it's deprecation and removal from upstream, you should use otlp exporter instead. See the docs for an example.

What's Changed

New Contributors

Full Changelog: v0.16.0...v0.17.0

v0.16.0

06 Dec 09:27
709c7c6
Compare
Choose a tag to compare

Changed

  • 🛠 boxo/namesys: now fails when multiple valid DNSLink entries are found for the same domain. This used to cause undefined behavior before. Now, we return an error, according to the specification.

Removed

  • 🛠 boxo/gateway: removed support for undocumented legacy ipfs-404.html. Use _redirects instead.
  • 🛠 boxo/namesys: removed support for legacy DNSLink entries at the root of the domain. Use _dnslink. TXT record instead.
  • 🛠 boxo/coreapi, an intrinsic part of Kubo, has been removed and moved to kubo/core/coreiface.

Fixed

  • boxo/gateway
    • a panic (which is recovered) could sporadically be triggered inside a CAR request, if the right conditions were met.
    • no longer emits http: superfluous response.WriteHeader warnings when an error happens.

What's Changed

New Contributors

Full Changelog: v0.15.0...v0.16.0

v0.15.0

03 Nov 08:15
521f8d4
Compare
Choose a tag to compare

Changed

What's Changed

Full Changelog: v0.14.0...v0.15.0