Back to Kubo

Kubo changelog v0.17

docs/changelogs/v0.17.md

0.41.011.3 KB
Original Source

Kubo changelog v0.17

v0.17.0

Overview

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

🔦 Highlights

<!-- TODO -->

libp2p resource management enabled by default

To help protect nodes from DoS (resource exhaustion) and eclipse attacks, go-libp2p released a Network Resource Manager with a host of improvements throughout 2022.

Kubo first exposed this functionality in Kubo 0.13, but it was disabled by default.

The resource manager is now enabled by default to protect nodes.
The defaults balance providing protection from various attacks while still enabling normal usecases to work as expected.

If you want to adjust the defaults, then you can:

  1. bound the amount of memory and file descriptors that libp2p will use with Swarm.ResourceMgr.MaxMemory and Swarm.ResourceMgr.MaxFileDescriptors and/or
  2. override any specific resource scopes/limits with Swarm.ResourceMgr.Limits

See Swarm.ResourceMgr for

  1. what limits are set by default,
  2. example override configuration,
  3. how to access Prometheus metrics and view Grafana dashboards of resource usage, and
  4. how to set explicit "allow lists" to protect against eclipse attacks.

Implicit connection manager limits

Starting with this release, ipfs init will no longer store the default Connection Manager limits in the user config under Swarm.ConnMgr.

Users are still free to use this setting to set custom values, but for most use cases, the defaults provided with the latest Kubo release should be sufficient.

To remove any custom limits and switch to the implicit defaults managed by Kubo:

console
$ ipfs config --json Swarm.ConnMgr '{}'

We will be adjusting defaults in the future releases.

TAR Response Format on Gateways

Implemented IPIP-288 which adds support for requesting deserialized UnixFS directory as a TAR stream.

HTTP clients can request TAR response by passing the ?format=tar URL parameter, or setting Accept: application/x-tar HTTP header:

console
$ export DIR_CID=bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
$ curl -H "Accept: application/x-tar" "http://127.0.0.1:8080/ipfs/$DIR_CID" > dir.tar
$ curl "http://127.0.0.1:8080/ipfs/$DIR_CID?format=tar" | tar xv
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1 - alt.txt
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1 - transcript.txt
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1.png

Dialling /wss peer behind a reverse proxy

This release resolves a regression introduced in Kubo 0.16, making it possible again to connect to a peer over a WebSockets endpoint (/wss) that is deployed behind a reverse proxy.

More details in go-libp2p release notes.

Changelog

<details><summary>Full Changelog</summary>
  • github.com/ipfs/kubo:
    • chore: bump version to v0.17.0 (ipfs/kubo#9427)
    • chore: bump version to v0.17.0-rc2 (ipfs/kubo#9414)
    • Doc improvements and changelog for resource manager (#9413) (ipfs/kubo#9413)
    • fix(docs): typo
    • docs: document /wss fixes in 0.17
    • refactor(config): remove Swarm.ConnMgr defaults
    • fix(config): skip nulls in ResourceMgr
    • Apply go fmt
    • Update core/node/libp2p/rcmgr_defaults.go
    • Remove limitation by HighWater param.
    • Fix RM errors when acceleratedDHT is active
    • docs: Deprecate Reframe on docs. (#9401) (ipfs/kubo#9401)
    • chore: bump version to v0.17.0-rc1 (ipfs/kubo#9394)
    • feat: Improve ResourceManager UX (#9338) (ipfs/kubo#9338)
    • feat: ipfs-webui 2.20.0
    • docs: note log tail is broken (#9383) (ipfs/kubo#9383)
    • feat(gateway): TAR response format (#9029) (ipfs/kubo#9029)
    • fix: error when using huge json limit file
    • chore: go-multicodec v0.7.0
    • fix: remove old unused buggy coredag code
    • feat: Add command line completion for fish
    • chore: delete snap configuration (ipfs/kubo#9352)
    • docs: update scoop package
    • docs: init release issue template improvement process v0.16.0 (ipfs/kubo#9283)
    • feat: add delegated routing metrics (#9354) (ipfs/kubo#9354)
    • chore: create v0.17.md changelog (ipfs/kubo#9353)
    • docs: pin remote arg
    • feat: [email protected]
    • test(car): export/import of (dag-)cbor/json codecs
    • add refs local alias repo ls (#9320) (ipfs/kubo#9320)
    • docs(cmds): Clarify block fetching of refs endpoint.
    • chore(cmds): dag import: use ipld legacy decode (ipfs/kubo#9219)
    • fix ipfs swarm peering crash in offline mode (#9261) (ipfs/kubo#9261)
    • feat: remove provider delay interval in bitswap (#9053) (ipfs/kubo#9053)
    • feat: --reset flag on swarm limit command (#9310) (ipfs/kubo#9310)
    • fix: add InlineDNSLink flag to PublicGateways config (#9328) (ipfs/kubo#9328)
    • docs: Fix typo and grammar in README
    • ci: add stylecheck to golangci-lint (#9334) (ipfs/kubo#9334)
    • Fix: swarm stats all command
    • Merge release v0.16.0 back into master (ipfs/kubo#9324)
    • fix: Set default Methods value to nil
    • docs: add WebTransport docs (ipfs/kubo#9314)
    • chore: bump version to 0.17.0-dev
  • github.com/ipfs/go-delegated-routing (v0.6.0 -> v0.7.0):
  • github.com/ipfs/go-ipfs-files (v0.1.1 -> v0.2.0):
    • Release v0.2.0
    • fix: error when TAR has files outside of root (#56) (ipfs/go-ipfs-files#56)
    • sync: update CI config files (ipfs/go-ipfs-files#55)
    • chore(Directory): add DirIterator API restriction: iterate only once
  • github.com/ipfs/go-unixfs (v0.4.0 -> v0.4.1):
  • github.com/ipld/go-ipld-prime (v0.18.0 -> v0.19.0):
    • Prepare v0.19.0
    • fix: correct json codec links & bytes handling
    • test(basicnode): increase test coverage for int and map types (#454) (ipld/go-ipld-prime#454)
    • fix: remove reliance on ioutil
    • run gofmt -s
    • bump go.mod to Go 1.18 and run go fix
    • feat: add kinded union to gendemo
  • github.com/libp2p/go-libp2p (v0.23.2 -> v0.23.4):
    • Release v0.23.4 (#1864) (libp2p/go-libp2p#1864)
    • release v0.23.3
    • websocket: set the HTTP host header in WSS
  • github.com/libp2p/go-netroute (v0.2.0 -> v0.2.1):
  • github.com/marten-seemann/qpack (v0.2.1 -> v0.3.0):
  • github.com/multiformats/go-multicodec (v0.6.0 -> v0.7.0):
</details>

Contributors

ContributorCommitsLines ±Files Changed
Antonio Navarro Perez11+780/-98731
Marcin Rataj14+791/-54326
web3-bot7+393/-42771
galargh20+309/-27721
Gus Eggert5+358/-22258
Henrique Dias3+409/-3013
Dustin Long1+314/-02
Marco Munizaga2+211/-4611
Rod Vagg4+188/-6213
Jorropo2+4/-2195
Steve Loeppky1+115/-724
Andreas Källberg1+145/-55
Lucas Molas3+76/-539
snyh2+36/-182
Piotr Galar2+31/-42
Ondrej Kokes1+25/-42
Marten Seemann6+14/-1414
Yann Autissier1+14/-41
maxos1+8/-12
reidlw1+1/-41
Russell Dempsey2+4/-12
Ian Davis1+4/-02
Daniel Norman1+3/-11
Will Scott1+1/-11
Nikhilesh Susarla1+2/-02
Jamie Wilkinson1+1/-11
Will1+0/-11