Releases: ipfs/boxo
v0.24.2
What's Changed
- chore: update go-libp2p to v0.37.0 by @gammazero in #699
- bitswap(session): fix slice prealloc by @Wondertan in #702
Full Changelog: v0.24.1...v0.24.2
This release was brought to you by the Shipyard team.
v0.24.1
What's Changed
- chore: update go-multiaddr-dns by @gammazero in #684
- Merge release v0.24.0 by @gammazero in #685
- chore: go-libp2p v0.36.5 by @lidel in #686
- fix(routing/http/client): avoid escaping comma query separator by @lidel in #688
- refactor: reuse timers instead of time.After in loops by @gammazero in #687
- refactor: bitswap client does not need ProviderQueryManager by @gammazero in #676
- feat(routing/http/client): DefaultProtocolFilter for IPIP-484 by @lidel in #689
- fix(bitswap/session): cleanup live wants on cancel by @Wondertan in #690
- fix: bitswap performance issue by @gammazero in #692
- chore: update dependencies by @gammazero in #693
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.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
- 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
WithFilterAddrs
andWithFilterProtocols
options when creating the client.Client-side filtering for servers that don't support filtering is enabled by default. To disable it, use thedisableLocalFiltering
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
This release was brought to you by the Shipyard team.
v0.23.0
Added
files
,ipld/unixfs
,mfs
andtar
now support optional UnixFS 1.5 mode and modification time metadata #653gateway
deserialized responses will haveLast-Modified
set to value from optional UnixFS 1.5 modification time field (if present in DAG) and a matchingIf-Modified-Since
will return304 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 #649bitswap/server
minor 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-libp2p
dependency updated to v0.36 (release notes)bitswap/server
minor memory use and performance improvements #634bitswap/server
PeerLedger.Wants
now returnsbool
(interface change fromWants(p peer.ID, e wl.Entry)
toWants(p peer.ID, e wl.Entry) bool
) #629bitswap
unify logger names to use uniform format bitswap/path/pkgname #637gateway
now always returns meaningful cache-control headers for generated HTML listings of UnixFS directories #643util
generate random test data usingipfs/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. #630bitswap/client
fix memory leak in BlockPresenceManager due to unlimited map growth. #636bitswap/network
fixed 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/gateway
is now tested against gateway-conformance v0.6bitswap/client
supports additional tracing
Removed
- 🛠
routing/none
removedConstructNilRouting
, if you need this functionality, you can use theNull
Router from go-libp2p-routing-helpers.
Fixed
routing/http
: theFindPeer
now returnsrouting.ErrNotFound
when no addresses are foundrouting/http
: theFindProvidersAsync
no 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
- ✨
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 introducedNewCacheBlockStore
,NewRemoteBlockstore
andNewRemoteValueStore
.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 introducedNewCarBackend
,NewRemoteCarFetcher
andNewRetryCarFetcher
.
gateway
now sets theContent-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 supportscar-dups
,car-order
andcar-version
as query parameters in addition to theapplication/vnd.ipld.car
parameters sent viaAccept
header. The parameters in theAccept
header have always priority, but including them in URL simplifies HTTP caching and allows use inContent-Location
header on CAR responses to maximize interoperability with wide array of HTTP caches.bitswap/server
now allows to override the default peer ledger withWithPeerLedger
.
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
- 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/server
now addsCache-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: returnsContent-Disposition
header and defaults toapplication/vnd.ipfs.ipns-record
response whenAccept
is missing.provider
:- Exports a
NewPrioritizedProvider
, which can be used to prioritize certain providers while ignoring duplicates. - 🛠️
NewPinnedProvider
now prioritizes root blocks, even ifonlyRoots
is set tofalse
.
- Exports a
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 clientWithBlockReceivedNotifier
andWithoutDuplicatedBlockStats
options 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
blockservice
now hasContextWithSession
andEmbedSessionInContext
functions, which allows to embed a session in a context. Future calls toBlockGetter.GetBlock
,BlockGetter.GetBlocks
andNewSession
will use the session in the context.blockservice.NewWritethrough
deprecated 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.namesys
now has aWithMaxCacheTTL
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 configurationConfig.Headers
andAddAccessControlHeaders
has been replaced by the new middleware provided byNewHeaders
. - 🛠
routing/http/client
: the default HTTP client is no longer a global singleton. Therefore, usingWithUserAgent
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
- 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, thePinner
has been adjusted. Note that callingPin
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 useotlp
exporter 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.