Go IPFS v0.13.0 Release Notes

Release Date: 2022-05-04 // almost 2 years ago
  • We're happy to announce go-ipfs 0.13.0, packed full of changes and improvements!

    As usual, this release includes important fixes, some of which may be critical for security. Unless the fix addresses a bug being exploited in the wild, the fix will not be called out in the release notes. Please make sure to update ASAP. See our release process for details.

    Overview

    ๐Ÿš€ Below is an outline of all that is in this release, so you get a sense of all that's included.

    • [๐Ÿ›  BREAKING CHANGES](#---breaking-changes)
      • [ipfs block put command](#-ipfs-block-put--command)
      • [ipfs cid codecs command](#-ipfs-cid-codecs--command)
      • [Swarm configuration](#-swarm--configuration)
      • Circuit Relay V1 is deprecated
      • [ls requests for /multistream/1.0.0 are removed](#-ls--requests-for---multistream-100--are-removed)
      • Gateway Items
    • [๐Ÿ”ฆ Highlights](#---highlights)
      • [๐Ÿง‘โ€๐Ÿ’ผ libp2p Network Resource Manager (Swarm.ResourceMgr)](#------libp2p-network-resource-manager---swarmresourcemgr--)
      • [๐Ÿ”ƒ Relay V2 client with auto discovery (Swarm.RelayClient)](#---relay-v2-client-with-auto-discovery---swarmrelayclient--)
      • [๐ŸŒ‰ HTTP Gateway improvements](#---http-gateway-improvements)
      • [๐Ÿฑ Support for Block and CAR response formats](#---support-for-block-and-car-response-formats)
      • [๐ŸŽ Fast listing generation for huge directories](#---fast-listing-generation-for-huge--directories)
      • [๐ŸŽซ Improved Etag and If-None-Match for bandwidth savings](#---improved--etag--and--if-none-match--for-bandwidth-savings)
      • [โ›“๏ธ Added X-Ipfs-Roots for smarter HTTP caches](#---added-x-ipfs-roots-for-smarter-http-caches)
      • [๐ŸŒก๏ธ Added metrics per response type](#----added-metrics-per-response-type)
      • [๐Ÿ•ต๏ธ OpenTelemetry tracing](#----opentelemetry-tracing)
      • How to use Jaeger UI for visual tracing?
      • [๐Ÿฉบ Built-in ipfs diag profile to ease debugging](#---built-in--ipfs-diag-profile--to-ease-debugging)
      • [๐Ÿ”‘ Support for PEM/PKCS8 for key import/export](#---support-for-pem-pkcs8-for-key-import-export)
      • [๐Ÿงน Using standard IPLD codec names across the CLI/HTTP API](#---using-standard-ipld-codec-names-across-the-cli-http-api)
      • [๐Ÿณ Custom initialization for Docker](#---custom-initialization-for-docker)
      • RPC API docs for experimental and deprecated commands
      • Yamux over Mplex

    ๐Ÿ›  BREAKING CHANGES

    ipfs block put command

    0๏ธโƒฃ ipfs block put command returns a CIDv1 with raw codec by default now.

    • ipfs block put --cid-codec makes block put return CID with alternative codec
      • This impacts only the returned CID; it does not trigger any validation or data transformation.
      • Retrieving a block with a different codec or CID version than it was put with is valid.
      • Codec names are validated against tables from go-multicodec library.
    • ๐Ÿš€ ipfs block put --format is deprecated. It used incorrect codec names and should be avoided for new deployments. Use it only if you need the old, invalid behavior, namely:
      • ipfs block put --format=v0 will produce CIDv0 (implicit dag-pb)
      • ipfs block put --format=cbor will produce CIDv1 with dag-cbor (!)
      • ipfs block put --format=protobuf will produce CIDv1 with dag-pb (!)

    ipfs cid codecs command

    • Now lists codecs from go-multicodec library.
    • ๐Ÿ‘ ipfs cid codecs --supported can be passed to only show codecs supported in various go-ipfs commands.

    ipfs cid format command

    • ๐Ÿšš --codec was removed and replaced with --mc to ensure existing users are aware of the following changes:
      • --mc protobuf now correctly points to code 0x50 (was 0x70, which is dab-pg)
      • --mc cbor now correctly points to code 0x51 (was 0x71, which is dag-cbor)

    ๐Ÿ”ง Swarm configuration

    • ๐Ÿ—„ Daemon will refuse to start if long-deprecated RelayV1 config key Swarm.EnableAutoRelay or Swarm.DisableRelay is set to true.
    • If Swarm.Transports.Network.Relay is disabled, then Swarm.RelayService and Swarm.RelayClient are also disabled (unless they have been explicitly enabled).

    ๐Ÿ—„ Circuit Relay V1 is deprecated

    • 0๏ธโƒฃ By default, Swarm.RelayClient does not use Circuit Relay V1. Circuit V1 support is only enabled when Swarm.RelayClient.StaticRelays are specified.