Releases: ipfs/boxo
Releases · ipfs/boxo
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.
v0.16.0
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 legacyipfs-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 tokubo/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
- Merge Release v0.15.0 by @hacdias in #506
- feat: remove support for legacy ipfs-404.html by @hacdias in #509
- fix: gateway panic because of overshadowed err by @hacdias in #511
- fix(namesys): handling of multiple DNSLink TXT records by @hacdias in #510
- fix: all go-log import to v2 by @Dreamacro in #513
- bitswap/client: explain what the options do by @hsanjuan in #488
- fix(gateway): do not act on template errors by @hacdias in #515
- coreiface: remove and move to Kubo by @hacdias in #517
New Contributors
- @Dreamacro made their first contribution in #513
Full Changelog: v0.15.0...v0.16.0
v0.15.0
Changed
- 🛠 Bumped to
go-libp2p
0.32.
What's Changed
- Merge Release v0.14.0 by @hacdias in #501
- chore: bump to [email protected] by @hacdias in #503
Full Changelog: v0.14.0...v0.15.0
v0.14.0
Added
boxo/gateway
:- A new
WithResolver(...)
option can be used withNewBlocksBackend(...)
allowing the user to pass their customResolver
implementation. - The gateway now sets a
Cache-Control
header for requests under the/ipns/
namespace if the TTL for the corresponding IPNS Records or DNSLink entities is known.
- A new
boxo/bitswap/client
:- A new
WithoutDuplicatedBlockStats()
option can be used withbitswap.New
andbsclient.New
. This disable accounting for duplicated blocks, which requires ablockstore.Has()
lookup for every received block and thus, can impact performance.
- A new
- ✨ Migrated repositories into Boxo
github.com/ipfs/kubo/peering
=>./peering
A service which establish, overwatch and maintain long lived connections.github.com/ipfs/kubo/core/bootstrap
=> `./bootstrap
A service that maintains connections to a number of bootstrap peers.
Changed
boxo/gateway
- 🛠 The
IPFSBackend
interface was updated to make the responses of theHead
method more explicit. It now returns aHeadResponse
instead of afiles.Node
.
- 🛠 The
boxo/routing/http/client.Client
is now exported. This means you can now pass it around functions, or add it to a struct if you want.- 🛠 The
path
package has been massively refactored. With this refactor, we have condensed the different path-related and/or Kubo-specific packages under a single generic one. Therefore, there are many breaking changes. Please consult the documentation for more details on how to use the new package.- Note: content paths created with
boxo/path
are automatically normalized:- Replace multiple slashes with a single slash.
- Eliminate each
.
path name element (the current directory). - Eliminate each inner
..
path name element (the parent directory) along with the non-..
element that precedes it. - Eliminate
..
elements that begin a rooted path: that is, replace "/..
" by "/
" at the beginning of a path.
- Note: content paths created with
- 🛠 The signature of
CoreAPI.ResolvePath
incoreiface
has changed to now return the remainder segments as a second return value, matching the signature ofresolver.ResolveToLastNode
. - 🛠
routing/http/client.FindPeers
now returnsiter.ResultIter[types.PeerRecord]
instead ofiter.ResultIter[types.Record]
. The specification indicates that records for this method will always be Peer Records. - 🛠 The
namesys
package has been refactored. The following are the largest modifications:- The options in
coreiface/options/namesys
have been moved tonamesys
and their names have been made more consistent. - Many of the exported structs and functions have been renamed in order to be consistent with the remaining packages.
namesys.Resolver.Resolve
now returns a TTL, in addition to the resolved path. If the TTL is unknown, 0 is returned.IPNSResolver
is able to resolve a TTL, whileDNSResolver
is not.namesys/resolver.ResolveIPNS
has been moved tonamesys.ResolveIPNS
and now returns a TTL
in addition to the resolved path.
- The options in
- ✨
boxo/ipns
record defaults follow recommendations from IPNS Record Specification:DefaultRecordTTL
is now set to1h
DefaultRecordLifetime
follows the increased expiration window of Amino DHT (go-libp2p-kad-dht#793) and is set to48h
- 🛠 The
gateway
'sIPFSBackend.ResolveMutable
is now expected to return a TTL in addition to the resolved path. If the TTL is unknown, 0 should be returned.
Removed
- 🛠
util.MultiErr
has been removed. Please use Go's native support for wrapping errors, orerrors.Join
instead.
What's Changed
v0.13.1
Added
- An option
DisableHTMLErrors
has been added togateway.Config
. When this option
istrue
, pretty HTML error pages for web browsers are disabled. Instead, a
text/plain
page with the raw error message as the body is returned.
What's Changed
- fix(gateway): ipfs install link by @lidel in #468
- feat(gateway): add DisableHTMLErrors option by @hacdias in #463
Full Changelog: v0.13.0...v0.13.1
v0.13.0
Added
- ✨ The
routing/http
implements Delegated Peer Routing introduced in IPIP-417.
Changed
- 🛠 The
routing/http
package received the following modifications:- Client
GetIPNSRecord
andPutIPNSRecord
have been renamed toGetIPNS
and
PutIPNS
, respectively. Similarly, the required function names in the server
ContentRouter
have also been updated. ReadBitswapProviderRecord
has been renamed toBitswapRecord
and marked as deprecated.
From now on, please use the protocol-agnosticPeerRecord
for most use cases. The new
Peer Schema has been introduced in IPIP-417.
- Client
Removed
- 🛠 The
routing/http
package experienced following removals:- Server and client no longer support the experimental
Provide
method.
ProvideBitswap
is still usable, but marked as deprecated. A protocol-agnostic
provide mechanism is being worked on in IPIP-378. - Server no longer exports
FindProvidersPath
andProvidePath
.
- Server and client no longer support the experimental
Fixed
- The normalization of DNSLink identifiers in
gateway
has been corrected in the edge
case where the value passed to the path component of the URL is already normalized.
What's Changed
- ci: uci/copy-templates by @web3-bot in #431
- Merge release v0.12.0 by @hacdias in #448
- blockservice/test: passthrough blockservice options [skip changelog] by @Wondertan in #449
- bitswap: reenable tests by @Jorropo in #423
- bitswap: mark TestSessionGetBlocks flaky by @Jorropo in #456
- feat(routing/http)!: delegated peer routing server and client, IPIP 417 by @hacdias in #422
- ci: remove obsolete protocol/cache-go-action by @galargh in #460
- fix(gateway): normalization of DNSLink inlining by @lidel in #462
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Added
- The
routing/http
client and server now support Delegated IPNS at/routing/v1
as per IPIP-379. - 🛠 The
verifycid
package has been updated with the new Allowlist interface as part of reducing globals efforts. - The
blockservice
andprovider
packages has been updated to accommodate for changes inverifycid
.
Changed
- 🛠
blockservice.New
now accepts a variadic of func options following the Functional Options pattern.
Removed
N/A
Fixed
- HTTP Gateway API: Not having a block will result in a 5xx error rather than 404
- HTTP Gateway API: CAR requests will return 200s and a CAR file proving a requested path does not exist rather than returning an error
- 🛠
MultiFileReader
has been updated with a new header with the encoded file name instead of the plain filename, due to a regression found innet/textproto
. This only affects files with binary characters in their name. By keeping the old header, we maximize backwards compatibility.New Client Old Client New Server ✅ 🟡* Old Server ✅ ✅ *Old clients can only send Unicode file paths to the server.
Security
N/A
What's Changed
- Merge release v0.11.0 by @Jorropo in #418
- chore: gateway conformance v0.3 by @laurentsenta in #421
- [skip changelog] docs(readme): fix typo by @joaosa in #424
- Release v0.10.3 by @Jorropo in #425
- ci: uci/delete-templates by @web3-bot in #428
- ci: uci/copy-templates by @web3-bot in #429
- verifcid: introduce and integrate Allowlist interface by @Wondertan in #407
- feat(connecteventmanager): block Connected() until accepted by @rvagg in #435
- changelog: put the 435 fix in the right version by @Jorropo in #437
- fix(connecteventmanager): clean up tests for new synchronous flow by @rvagg in #438
- fix(gw): IPIP-402 CARs return useful blocks on not found errors by @aschmahmann in #440
- add wasm build option for filewriter flags[skip changelog] by @mar1n3r0 in #411
- style: run gofumpt by @Jorropo in #441
- ci: upload conformance logs by @laurentsenta in #442
- Revert "feat(connecteventmanager): block Connected() until accepted (#435)" and tests by @Jorropo in #444
- fix!: add escaped abspath header by @hacdias in #434
- feat(routing/http): delegated IPNS server and client, IPIP 379 by @hacdias in #333
- ci: uci/copy-templates by @web3-bot in #431
New Contributors
- @joaosa made their first contribution in #424
- @Wondertan made their first contribution in #407
- @rvagg made their first contribution in #435
- @mar1n3r0 made their first contribution in #411
Full Changelog: v0.11.0...v0.12.0
v0.10.3
Added
Changed
Removed
Fixed
- Handle
_redirects
file whenIf-None-Match
header is present (#412)
Security
What's Changed
- fix: handle _redirects for If-None-Match headers by @aschmahmann in #412
Full Changelog: v0.10.2...v0.10.3
v0.11.0
Added
- ✨ The gateway now supports the optional
order
anddups
CAR parameters from IPIP-412.- The
BlocksBackend
only implementsorder=dfs
(Depth-First Search) ordering, which was already the default behavior. - If a request specifies no
dups
, response withdups=n
is returned, which was already the default behavior. - If a request explicitly specifies a CAR
order
other thandfs
, it will result in an error. - The only change to the default behavior on CAR responses is that we follow IPIP-412 and make
order=dfs;dups=n
explicit in the returnedContent-Type
HTTP header.
- The
- ✨ While the call signature remains the same, the blocks that Bitswap returns can now be cast to traceability.Block, which will additionally tell you where the Block came from and how long it took to fetch. This helps consumers of Bitswap collect better metrics on Bitswap behavior.
Changed
- 🛠 The
ipns
package has been refactored.- You should no longer use the direct Protobuf version of the IPNS Record. Instead, we have a shiny new
ipns.Record
type that wraps all the required functionality to work the best as possible with IPNS v2 Records. Please check the documentation for more information, and follow ipfs/specs#376 for related IPIP. - There is no change to IPNS Records produced by
boxo/ipns
, it still produces both V1 and V2 signatures by default, it is still backward-compatible.
- You should no longer use the direct Protobuf version of the IPNS Record. Instead, we have a shiny new
Removed
- 🛠
ipld/car
has been removed. Please use ipld/go-car instead. More information regarding this decision can be found in issue 218.
Fixed
- Removed mentions of unused ARC algorithm (#336)
- Handle
_redirects
file whenIf-None-Match
header is present (#412)