Skip to content

Releases: ipfs/boxo

v0.11.0

27 Jul 07:15
77fb828
Compare
Choose a tag to compare

Added

  • ✨ The gateway now supports the optional order and dups CAR parameters from IPIP-412.
    • The BlocksBackend only implements order=dfs (Depth-First Search) ordering, which was already the default behavior.
    • If a request specifies no dups, response with dups=n is returned, which was already the default behavior.
    • If a request explicitly specifies a CAR order other than dfs, 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 returned Content-Type HTTP header.
  • ✨ 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.

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 when If-None-Match header is present (#412)

Security

v0.10.2

29 Jun 15:14
61f2939
Compare
Choose a tag to compare

Fixed

  • Gateway: include CORS on subdomain redirects.
  • Gateway: ensure 'X-Ipfs-Root' header is valid.

What's Changed

  • Update RELEASE.md based on 0.9 release by @BigLep in #343
  • fix(gateway): remove warning about X-Ipfs-Gateway-Prefix by @hacdias in #350
  • blockstore: replace go.uber.org/atomic with sync/atomic by @Jorropo in #357
  • fix(gateway): allow CAR trustless requests with path by @hacdias in #358
  • chore: version 0.10.1 by @hacdias in #359

Full Changelog: v0.10.0...v0.10.2

v0.10.1

19 Jun 12:19
198f9bc
Compare
Choose a tag to compare

Fixed

  • Allow CAR requests with a path when DeserializedResponses is false.

What's Changed

  • Update RELEASE.md based on 0.9 release by @BigLep in #343
  • fix(gateway): remove warning about X-Ipfs-Gateway-Prefix by @hacdias in #350
  • blockstore: replace go.uber.org/atomic with sync/atomic by @Jorropo in #357
  • fix(gateway): allow CAR trustless requests with path by @hacdias in #358

Full Changelog: v0.10.0...v0.10.1

v0.10.0

09 Jun 10:16
6f82d77
Compare
Choose a tag to compare

Added

  • ✨ The gateway now supports partial CAR exports via query parameters from IPIP-402.

Changed

  • 🛠 A few trivial breaking changes have been done to the gateway:
    • The signature of IPFSBackend.GetCAR has been adapted to support IPIP-402 CAR Parameters.
    • A few variables have been renamed for consistency:
      • WithHostname -> NewHostnameHandler
      • Specification -> PublicGateway
      • NewErrorResponse -> NewErrorStatusCode
      • NewErrorResponseForCode -> NewErrorStatusCodeFromStatus
      • BlocksGateway -> BlocksBackend
      • BlocksGatewayOption -> BlocksBackendOption
      • NewBlocksGateway -> NewBlocksBackend
    • Some functions that are not supposed to be outside of the package were removed: ServeContent.

Removed

None.

Fixed

None.

Security

None.

What's Changed

  • feat(gateway): implement IPIP-402 extensions for gateway CAR requests by @aschmahmann in #303
  • docs(changelog): add gateway deserialized responses by @hacdias in #341
  • feat: update gateway-conformance to v0.1 by @laurentsenta in #342

Full Changelog: v0.9.0...v0.10.0

v0.9.0

08 Jun 09:51
Compare
Choose a tag to compare

Added

  • gateway The gateway were updated to provide better features for users and gateway implementers:
    • New human-friendly error messages.
    • Updated, higher-definition icons in directory listings.
    • Customizable menu items next to "About IPFS" and "Install IPFS".
    • Valid DAG-CBOR and DAG-JSON blocks now provide a preview, where links can be followed.
  • ipns add ValidateWithPeerID and UnmarshalIpnsEntry helpers. (https://github.com/ipfs/boxo/pulls/292)
  • 🛠 coreiface/tests add *testing.T argument to the swarm provider. (https://github.com/ipfs/boxo/pulls/321)

Changed

  • 🛠 boxo/pinner some listing methods have been changed to now return a <-chan StreamedCid. This allows the consumption of pins while the pinner is listing them, which for large pinset can take a long time. (https://github.com/ipfs/boxo/pulls/336)
    The concerned methods are:
    • DirectKeys
    • RecursiveKeys
    • InternalKeys
  • 🛠 provider/batched.New has been moved to provider.New and arguments has been changed. (https://github.com/ipfs/boxo/pulls/273)
    • a routing system is now passed with the provider.Online option, by default the system run in offline mode (push stuff onto the queue); and
    • you do not have to pass a queue anymore, you pass a datastore.Datastore exclusively.
  • 🛠 provider.NewOfflineProvider has been renamed to provider.NewNoopProvider to show more clearly that is does nothing. (https://github.com/ipfs/boxo/pulls/273)
  • 🛠 provider.Provider and provider.Reprovider has been merged under one provider.System. (https://github.com/ipfs/boxo/pulls/273)
  • 🛠 routing/http responses now return a streaming iter.ResultIter generic interface. (https://github.com/ipfs/boxo/pulls/18)
  • 🛠 coreiface add options and AllowOffline option to RoutingAPI.Put. (https://github.com/ipfs/boxo/pulls/278)
  • 🛠 gateway now has deserialized responses turned off by default. This can be configured via DeserializedResponses. (#252)

Removed

Fixed

Security

None

What's Changed

  • refactor(gateway): switch to xxhash/v2 by @hsanjuan in #285
  • feat(routing): allow-offline with routing put by @laurentsenta in #278
  • routing/http: feat: add streaming support by @guseggert in #18
  • refactor: remove badger, leveldb dependencies by @hsanjuan in #286
  • feat: reusable ipns verify by @laurentsenta in #292
  • Revert "feat: reusable ipns verify" by @hacdias in #293
  • feat(ipns): helper ValidateWithPeerID and UnmarshalIpnsEntry by @hacdias in #294
  • add test cases for tar module by @fulldecent in #301
  • refactor: replace assert.Nil for assert.NoError by @hacdias in #302
  • feat(gateway): redirect ipns b58mh to cid by @hacdias in #236
  • fix(routing/v1): add newline in NDJSON responses by @hacdias in #300
  • feat: add deprecator by @guseggert in #297
  • ci: update Unified CI configuration by @galargh in #305
  • refactor(example): simplify ipns validation by @hacdias in #306
  • feat(gw): add ipfs_http_gw_request_types metric by @lidel in #311
  • feat(gw): add ipfs_http_gw_car_stream_fail_duration_seconds by @lidel in #312
  • bitswap/client: fix PeerResponseTrackerProbabilityOneKnownOneUnknownPeer by @Jorropo in #310
  • feat: pass records limit on routing.FindProviders by @hacdias in #299
  • feat: create pull_request_template by @galargh in #314
  • fix(gw): missing return in error case by @willscott in #319
  • feat(gateway)!: deserialised responses turned off by default by @hacdias in #252
  • feat(gateway): improved templates, user friendly errors by @hacdias in #298
  • coreiface: add a testing.T argument to the provider by @Jorropo in #321
  • feat(gateway): visualize dag-cbor and dag-json by @hacdias in #315
  • provider: refactor to only maintain one batched implementation and add throughput callback by @Jorropo in #273
  • provider: add breaking changes to the changelog by @Jorropo in #330
  • fix(gateway)!: no duplicate payload during subdomain redirects by @hacdias in #326
  • fix(gateway): question marks in url.Path when redirecting by @hacdias in #313
  • provider: revert throughput callback and related refactor by @Jorropo in #332
  • Streamed pins by @MichaelMure in #290
  • changelog: add changelog for async pin listing by @Jorropo in #336
  • chore: do not rely on deprecated logger by @hacdias in #338
  • feat: remove ipld legacy and format globals in ipld/merkledag by @aschmahmann in #322
  • rename unixfs protobuf package to unixfs.v1 by @aschmahmann in #318
  • rename dagpb protobuf to merkledag.v1 by @aschmahmann in #323
  • provider: second round of reprovider refactor by @Jorropo in #331

New Contributors

Full Changelog: v0.8.1...v0.9.0

v0.8.1

25 Apr 08:22
aa12ba3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.8.0...v0.8.1

v0.8.0

05 Apr 16:24
f2bb0c8
Compare
Choose a tag to compare

Added

  • Migrated repositories into Boxo
    • github.com/ipfs/interface-go-ipfs-core => ./coreiface
    • github.com/ipfs/go-pinning-service-http-client => ./pinning/remote/client
    • github.com/ipfs/go-path => ./path
    • github.com/ipfs/go-namesys => ./namesys
    • github.com/ipfs/go-mfs => ./mfs
    • github.com/ipfs/go-ipfs-provider => ./provider
    • github.com/ipfs/go-ipfs-pinner => ./pinning/pinner
    • github.com/ipfs/go-ipfs-keystore => ./keystore
    • github.com/ipfs/go-filestore => ./filestore
    • github.com/ipfs/go-ipns => ./ipns
    • github.com/ipfs/go-blockservice => ./blockservice
    • github.com/ipfs/go-ipfs-chunker => ./chunker
    • github.com/ipfs/go-fetcher => ./fetcher
    • github.com/ipfs/go-ipfs-blockstore => ./blockstore
    • github.com/ipfs/go-ipfs-posinfo => ./filestore/posinfo
    • github.com/ipfs/go-ipfs-util => ./util
    • github.com/ipfs/go-ipfs-ds-help => ./datastore/dshelp
    • github.com/ipfs/go-verifcid => ./verifcid
    • github.com/ipfs/go-ipfs-exchange-offline => ./exchange/offline
    • github.com/ipfs/go-ipfs-routing => ./routing
    • github.com/ipfs/go-ipfs-exchange-interface => ./exchange
    • github.com/ipfs/go-unixfs => ./ipld/unixfs
    • github.com/ipfs/go-merkledag => ./ipld/merkledag
    • github.com/ipld/go-car => ./ipld/car
  • Added a migration tool to aid in migrating from the migrated repositories to Boxo, see the documentation here: https://github.com/ipfs/boxo/blob/main/README.md#migrating-to-boxo
    • Added a check to ensure the migration tool is only run in a Git repository (with an optional override flag)
  • Added tracing and metrics to the refactored gateway for its IPFS backend

Changed

  • Removed a mention of "bitswap" in blockservice debug logs
  • Changed the Bitswap message package from "bitswap.message.pb" to "bitswap.message.v1.pb" to avoid protobuf panics due to duplicate registration with go-bitswap
  • Remove a busyloop in blockservice getBlocks by removing batching when caching

Deprecated

None

Removed

None

Fixed

  • Ensure dag-cbor/json codecs are registered in the gateway handler
  • Refactor the Gateway API to operate on higher level semantics
  • Fixed a panic in the gateway handler when returning errors

Security

None

v0.8.0-rc4

03 Apr 13:43
a3f1b66
Compare
Choose a tag to compare

What's Changed

  • blockservice: remove busyloop in getBlocks by removing batching by @Jorropo in #232
  • ci: delete test-examples workflow by @galargh in #239
  • ci: add gateway-conformance tests for car-gateway by @galargh in #237
  • ci: update Unified CI configuration by @web3-bot in #247
  • chore: remove libp2pio.car by @hacdias in #248
  • ci(gateway): enable subdomain conformance by @hacdias in #246
  • refactor(examples): proxy gateway to use exchange by @aschmahmann in #229
  • feat(gateway): IPFSBackend metrics and HTTP range support by @lidel in #245

Full Changelog: v0.8.0-rc3...v0.8.0-rc4

v0.8.0-rc2

28 Mar 22:06
Compare
Choose a tag to compare

What's Changed

  • fix: ensure (dag)-cbor/json codecs are registered by @hacdias in #223

Full Changelog: v0.8.0-rc1...v0.8.0-rc2

v0.8.0-rc1

27 Mar 22:00
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.7.0...v0.8.0-rc1