Releases: ipfs/boxo
v0.24.2
Changed
- updated to go-libp2p to v0.37.0
ipns/pb: removed use of deprecatedExporter(SA1019, golang/protobuf#1640, 9a7055)
Fixed
bitswap/client: fix panic if current live count is greater than broadcast limit #702
Full Changelog: v0.24.1...v0.24.2
This release was brought to you by the Shipyard team.
v0.24.1
Changed
routing/http/client: creating delegated routing client withNewnow defaults to querying delegated routing server withDefaultProtocolFilter(IPIP-484) #689- updated go-libp2p to v0.36.5
- updated dependencies #693
- update
go-libp2p-kad-dhtto v0.27.0
Fixed
routing/http/client: optional address and protocol filter parameters from IPIP-484 use human-readable,instead of%2C. #688bitswap/clientCleanup live wants when wants are canceled. This prevents live wants from continuing to get rebroadcasted even after the wants are canceled. #690- Fix problem adding invalid CID to exhausted wants list resulting in possible performance issue. #692
Full Changelog: v0.24.0...v0.24.1
This release was brought to you by the Shipyard team.
v0.24.0
Added
boxo/bitswap/server:- A new
WithWantHaveReplaceSize(n)option can be used withbitswap.Newto 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
- A new
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
WithFilterAddrsandWithFilterProtocolsoptions when creating the client.Client-side filtering for servers that don't support filtering is enabled by default. To disable it, use thedisableLocalFilteringoption when creating the client.
Fixed
unixfs/hamtLog error instead of panic if both link and shard are nil #393
Full Changelog: v0.23.0...v0.24.0
This release was brought to you by the Shipyard team.
v0.23.0
Added
files,ipld/unixfs,mfsandtarnow support optional UnixFS 1.5 mode and modification time metadata #653gatewaydeserialized responses will haveLast-Modifiedset to value from optional UnixFS 1.5 modification time field (if present in DAG) and a matchingIf-Modified-Sincewill return304 Not Modified(UnixFS 1.5 files only) #659
Changed
- updated Go in
go.modto 1.22 #661 - updated go-libp2p to v0.36.3
chunkerrefactored to reduce overall memory use by reducing heap fragmentation #649bitswap/serverminor performance improvements in concurrent operations #666- removed dependency on go-ipfs-blocksutil #656
Full Changelog: v0.22.0...v0.23.0
This release was brought to you by the Shipyard team.
v0.22.0
What's Changed
Changed
go-libp2pdependency updated to v0.36 (release notes)bitswap/serverminor memory use and performance improvements #634bitswap/serverPeerLedger.Wantsnow returnsbool(interface change fromWants(p peer.ID, e wl.Entry)toWants(p peer.ID, e wl.Entry) bool) #629bitswapunify logger names to use uniform format bitswap/path/pkgname #637gatewaynow always returns meaningful cache-control headers for generated HTML listings of UnixFS directories #643utilgenerate random test data usingipfs/go-testinstead of internal util code #638
Fixed
boxo/gatewaynow 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. #630bitswap/clientfix memory leak in BlockPresenceManager due to unlimited map growth. #636bitswap/networkfixed race condition when a timeout occurred before hole punching completed while establishing a first-time stream to a peer behind a NAT #651bitswap: 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
- @stensonb made their first contribution in #635
- @omahs made their first contribution in #642
- @2color made their first contribution in #651
Full Changelog: v0.21.0...v0.22.0
This release was brought to you by the Shipyard team.
v0.21.0
Changed
boxo/gatewayis now tested against gateway-conformance v0.6bitswap/clientsupports additional tracing
Removed
- 🛠
routing/noneremovedConstructNilRouting, if you need this functionality, you can use theNullRouter from go-libp2p-routing-helpers.
Fixed
routing/http: theFindPeernow returnsrouting.ErrNotFoundwhen no addresses are foundrouting/http: theFindProvidersAsyncno longer causes a goroutine buildup
Full Changelog: v0.20.0...v0.21.0
This release was brought to you by the Shipyard team.
v0.20.0
Added
- ✨
gatewayhas new backend possibilities:NewRemoteBlocksBackendallows 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 introducedNewCacheBlockStore,NewRemoteBlockstoreandNewRemoteValueStore.NewRemoteCarBackendallows 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 introducedNewCarBackend,NewRemoteCarFetcherandNewRetryCarFetcher.
gatewaynow sets theContent-Locationheader 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.gatewaynow supportscar-dups,car-orderandcar-versionas query parameters in addition to theapplication/vnd.ipld.carparameters sent viaAcceptheader. The parameters in theAcceptheader have always priority, but including them in URL simplifies HTTP caching and allows use inContent-Locationheader on CAR responses to maximize interoperability with wide array of HTTP caches.bitswap/servernow allows to override the default peer ledger withWithPeerLedger.
Fixed
routing/http/servernow returns 404 Status Not Found when no records can be found.routing/http/servernow supports legacy RSA PeerIDs encoded as Base58 Multihash
What's Changed
- Merge release v0.18.0 by @hacdias in #582
- docs: use tag link instead of branch by @hacdias in #583
- fix(routing/http): support lookups with legacy peerid notation by @lidel in #585
- routing/http/server: add cache control by @hacdias in #584
- chore: go 1.21 by @hacdias in #588
- ci: uci/update-go by @web3-bot in #589
- ipns: fix test by using global random reader by @hacdias in #586
- ci: uci/copy-templates by @web3-bot in #590
- feat(routing/http/server): improve ux of /ipns by @lidel in #596
- bitswap: add missing client options to exchange by @hacdias in #597
- provider: prioritize roots and introduce NewPrioritizedProvider by @hacdias in #595
- Release v0.19.0 by @hacdias in #598
Full Changelog: v0.18.0...v0.20.0
This release was brought to you by the Shipyard team.
v0.19.0
Added
routing/http/servernow addsCache-ControlHTTP header to GET requests: 15 seconds for empty responses, or 5 minutes for responses with providers.routing/http/serverthe/ipnsendpoint is more friendly to users opening URL in web browsers: returnsContent-Dispositionheader and defaults toapplication/vnd.ipfs.ipns-recordresponse whenAcceptis missing.provider:- Exports a
NewPrioritizedProvider, which can be used to prioritize certain providers while ignoring duplicates. - 🛠️
NewPinnedProvidernow prioritizes root blocks, even ifonlyRootsis set tofalse.
- Exports a
Changed
goversion changed to 1.21
Fixed
- 🛠️
routing/http/server: delegated peer routing endpoint now supports both PeerID string notaitons from libp2p specs. bitswap: add missing clientWithBlockReceivedNotifierandWithoutDuplicatedBlockStatsoptions to the exchange.
Full Changelog: v0.18.0...v0.19.0
This release was brought to you by the Shipyard team.
v0.18.0
Added
blockservicenow hasContextWithSessionandEmbedSessionInContextfunctions, which allows to embed a session in a context. Future calls toBlockGetter.GetBlock,BlockGetter.GetBlocksandNewSessionwill use the session in the context.blockservice.NewWritethroughdeprecated function has been removed, instead you can doblockservice.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.namesysnow has aWithMaxCacheTTLoption, 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 configurationConfig.HeadersandAddAccessControlHeadershas been replaced by the new middleware provided byNewHeaders. - 🛠
routing/http/client: the default HTTP client is no longer a global singleton. Therefore, usingWithUserAgentwon'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
- Merge Release v0.16.0 by @hacdias in #519
- all: run perfsprint by @Jorropo in #521
- gateway/assets: process each template and ETag hash in parallel by @Jorropo in #530
- Update tracing.md by @0xbasar in #531
- blockservice: fix panic when closing an offline blockservice by @Jorropo in #533
- feat(pinning): add support for names by @hacdias in #525
- chore: update otlp by @Jorropo in #532
- feat(pinning): pinning existing CID with different name updates pin by @hacdias in #537
- chore: update dependencies by @hacdias in #541
- Release v0.17.0 by @hacdias in #542
New Contributors
Full Changelog: v0.16.0...v0.18.0
This release was brought to you by the Shipyard team.
v0.17.0
Added
- 🛠
pinning/pinner: you can now give a custom name when pinning a CID. To reflect this, thePinnerhas been adjusted. Note that callingPinfor the same CID with a different name will replace its current name by the newly given name.
Removed
- 🛠
tracingjaegerexporter has been removed due to it's deprecation and removal from upstream, you should useotlpexporter instead. See the docs for an example.
What's Changed
- Merge Release v0.16.0 by @hacdias in #519
- all: run perfsprint by @Jorropo in #521
- gateway/assets: process each template and ETag hash in parallel by @Jorropo in #530
- Update tracing.md by @0xbasar in #531
- blockservice: fix panic when closing an offline blockservice by @Jorropo in #533
- feat(pinning): add support for names by @hacdias in #525
- chore: update otlp by @Jorropo in #532
- feat(pinning): pinning existing CID with different name updates pin by @hacdias in #537
- chore: update dependencies by @hacdias in #541
New Contributors
Full Changelog: v0.16.0...v0.17.0
This release was brought to you by the Shipyard team.

