v0.14.0
Kubo v0.14 release
Overview
Below is an outline of all that is in this release, so you get a sense of all that's included.
🛠 BREAKING CHANGES
Removed mdns_legacy
implementation
The modern DNS-SD compatible zeroconf implementation
(based on this specification)
has been running next to the mdns_legacy
for a while (since v0.11). During
this transitional period Kubo nodes were sending twice as many LAN packets,
which ends with this release: we've removed the legacy implementation.
🔦 Highlights
🛣️ Delegated Routing
Content routing is the a term used to describe the problem of finding providers for a given piece of content.
If you have a hash, or CID of some data, how do you find who has it?
In IPFS, until now, only a DHT was used as a decentralized answer to content routing.
Now, content routing can be handled by clients implementing the Reframe protocol.
Example configuration usage using the Filecoin Network Indexer:
ipfs config Routing.Routers.CidContact --json '{
"Type": "reframe",
"Parameters": {
"Endpoint": "https://cid.contact/reframe"
}
}'
👥 Rename to Kubo
We've renamed Go-IPFS to Kubo (details).
Published artifacts use kubo
now, and are available at:
To minimize the impact on infrastructure that autoupdates on a new release,
the same binaries are still published under the old name at:
The libp2p identify useragent of Kubo has also been changed from go-ipfs
to kubo
.
🎒 ipfs repo migrate
This new command allows the you to run the repo migration without starting the daemon.
See ipfs repo migrate --help
for more info.
🚀 Emoji support in Multibase
Kubo now supports base256emoji
encoding in all Multibase contexts. Use it for testing Unicode support, as visual aid while explaining Multiformats, or just for fun:
$ echo -n "test" | ipfs multibase encode -b base256emoji -
🚀😈✋🌈😈
$ echo -n "🚀😈✋🌈😈" | ipfs multibase decode -
test
$ ipfs cid format -v 1 -b base256emoji bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊
/ipfs/🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊
Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: bump to v0.14.0
- docs(changelog): finish v0.14.0 changelog
- fix(gw): cache-control of index.html websites
- chore(license): fix broken link to apache-2.0
- fix: kubo in daemon and cli stdout
- backport: merge commit '839b0848a' into release-v0.14.0
- chore: Release v0.14-rc1
- docs: fix v0.14's changelog format
- chore: update go-multibase 🚀
- feat(routing): Delegated Routing (#8997) (ipfs/kubo#8997)
- chore: changelogs split
- feat(gw): Cache-Control: only-if-cached
- chore(deps): webui v2.15.1
- Follow-ups after repository rename
(ipfs/kubo#9098) - docs: refine wording
- docs: refine the wording of provider strategies
- refactor: rename to kubo
(ipfs/kubo#8958) - fix: correct cache-control in car responses
- docs: v0.13.1 (#9093) (ipfs/kubo#9093)
- chore: update go-car (ipfs/kubo#9089)
- update go-libp2p to v0.20.3 (ipfs/kubo#9038)
- docs: add SECURITY.md (#9062) (ipfs/kubo#9062)
- fix: remove mdns_legacy & Discovery.MDNS.Interval
- refactor: prealloc slices with known sizes (#8892) (ipfs/kubo#8892)
- docs: fix typo in
cid/base32
- docs: mark Swarm.ResourceMgr as experimental
- chore: replace ioutil with io and os (#8969) (ipfs/kubo#8969)
- feat: add a public function on peering to get the state
- fix: honor url filename when downloading as CAR/BLOCK
- Merge branch 'release'
- chore: GitHub format
- fix(cmd/config): make config edit subcommand work on windows
- chore: bump Go to 1.18.3 (#9021) (ipfs/kubo#9021)
- feat: upgrade to go-libp2p-kad-dht@v0.16.0 (#9005) (ipfs/kubo#9005)
- docs: fix typo in the
swarm/peering
help text - feat: disable resource manager by default (#9003) (ipfs/kubo#9003)
- fix: adjust rcmgr limits for accelerated DHT client rt refresh (#8982) (ipfs/kubo#8982)
- fix(ci): make go-ipfs-as-a-library work without external peers (#8978) (ipfs/kubo#8978)
- feat: log when resource manager limits are exceeded (#8980) (ipfs/kubo#8980)
- fix: JS caching via Access-Control-Expose-Headers (#8984) (ipfs/kubo#8984)
- docs: fix abstractions typo
- fix: hanging goroutine in get fileArchive handler
- chore: mark fuse experimental (#8962) (ipfs/kubo#8962)
- fix(node/libp2p): disable rcmgr checkImplicitDefaults (ipfs/kubo#8965)
- Add 'ipfs repo migrate' command (#8428) (ipfs/kubo#8428)
- pubsub multibase encoding (#8933) (ipfs/kubo#8933)
- 'pin rm' helptext: rewrite description as object is not removed from local storage (immediately) (ipfs/kubo#8947)
- (ipfs/kubo#8934)
- Add instructions to resolve repo migration error (#8946) (ipfs/kubo#8946)
- fix: use path instead of filepath for asset embeds to support Windows
- chore: update version to v0.14.0-dev
- github.com/ipfs/go-bitswap (v0.6.0 -> v0.7.0):
- chore: release v0.7.0 (#566) (ipfs/go-bitswap#566)
- feat: coalesce and queue connection event handling (#565) (ipfs/go-bitswap#565)
- fix initialisation example in README (#552) (ipfs/go-bitswap#552)
- github.com/ipfs/go-unixfs (v0.3.1 -> v0.4.0):
- Set version to v0.3.2 (ipfs/go-unixfs#122)
- Make switchToSharding more efficient
- github.com/ipld/go-ipld-prime (v0.16.0 -> v0.17.0):
failed to fetch repo - github.com/libp2p/go-libp2p (v0.19.4 -> v0.20.3):
- Release 0.20.3 (#1623) (libp2p/go-libp2p#1623)
- release v0.20.2
- feat: allow dialing wss peers using DNS multiaddrs
- update go-yamux to v3.1.2, release v0.20.1 (#1591) (libp2p/go-libp2p#1591)
- release v0.20.0 (#1530) (libp2p/go-libp2p#1530)
- update go-libp2p-core, remove stream methods from network.Notifiee (#1521) (libp2p/go-libp2p#1521)
- autonat: return E_DIAL_REFUSED when skipping dial (#1527) (libp2p/go-libp2p#1527)
- move go-stream-muxer-multistream here (libp2p/go-libp2p#1511)
- remove dependency on go-libp2p-testing/suites/sec (#1510) (libp2p/go-libp2p#1510)
- backoff: fix flaky tests in backoff cache (#1516) (libp2p/go-libp2p#1516)
- identify: fix flaky tests (#1515) (libp2p/go-libp2p#1515)
- quic: increase timeout in hole punching test (#1495) (libp2p/go-libp2p#1495)
- Fix badge image in README (#1517) (libp2p/go-libp2p#1517)
- move go-libp2p-nat here (libp2p/go-libp2p#1513)
- move go-reuseport-transport here (libp2p/go-libp2p#1459)
- holepunch: fix flaky TestEndToEndSimConnect test (#1508) (libp2p/go-libp2p#1508)
- swarm: fix flaky TestDialExistingConnection test (#1509) (libp2p/go-libp2p#1509)
- tcp: limit the number of connections in tcp suite test on non-linux hosts (#1507) (libp2p/go-libp2p#1507)
- increase overly short require.Eventually intervals (#1501) (libp2p/go-libp2p#1501)
- tls: fix flaky handshake cancelation test (#1503) (libp2p/go-libp2p#1503)
- merge the transport test suite from go-libp2p-testing here (libp2p/go-libp2p#1496)
- fix racy connection comparison in TestDialWorkerLoopBasic (#1499) (libp2p/go-libp2p#1499)
- swarm: fix race condition in TestFailFirst (#1490) (libp2p/go-libp2p#1490)
- basichost: fix flaky TestSignedPeerRecordWithNoListenAddrs (#1488) (libp2p/go-libp2p#1488)
- swarm: fix flaky and racy TestDialExistingConnection (#1491) (libp2p/go-libp2p#1491)
- quic: adjust timeout for reuse garbage collector detection in tests (#1487) (libp2p/go-libp2p#1487)
- quic: fix flaky TestResourceManagerAcceptDenied (#1485) (libp2p/go-libp2p#1485)
- quic: deflake the holepunching test (#1484) (libp2p/go-libp2p#1484)
- holepunch: fix incorrect message type for the SYNC message (#1478) (libp2p/go-libp2p#1478)
- use real keys in tests instead of go-libp2p-testing/netutil fake keys (#1475) (libp2p/go-libp2p#1475)
- quic: fix flaky TestResourceManagerAcceptDenied (libp2p/go-libp2p#1461)
- move go-libp2p-pnet here (libp2p/go-libp2p#1465)
- move go-libp2p-tls here (libp2p/go-libp2p#1466)
- fix race condition in relayFinder (libp2p/go-libp2p#1469)
- fix race condition in holepunch service (#1473) (libp2p/go-libp2p#1473)
- Update README to include supported Go Versions (#1470) (libp2p/go-libp2p#1470)
- move go-libp2p-noise here (libp2p/go-libp2p#1462)
- move go-libp2p-transport-upgrader here (libp2p/go-libp2p#1463)
- move go-conn-security-multistream here (libp2p/go-libp2p#1460)
- move go-libp2p-mplex here (libp2p/go-libp2p#1450)
- use yamux instead of mplex in tests (#1456) (libp2p/go-libp2p#1456)
- rename the yamux package (#1452) (libp2p/go-libp2p#1452)
- swarm: don't check return value of str.Close in TestResourceManager (#1453) (libp2p/go-libp2p#1453)
- move go-libp2p-yamux here (libp2p/go-libp2p#1439)
- quic: fix flaky TestConnectionGating test (#1442) (libp2p/go-libp2p#1442)
- quic: fix flaky TestReuseGarbageCollect test (#1446) (libp2p/go-libp2p#1446)
- quic: fix flaky holepunching test (#1443) (libp2p/go-libp2p#1443)
- move go-libp2p-quic-transport here (libp2p/go-libp2p#1424)
- remove flaky TestTcpSimultaneousConnect (#1425) (libp2p/go-libp2p#1425)
- move go-ws-transport here (libp2p/go-libp2p#1422)
- update go-multistream, stop using deprecated NegotiateLazy (#1417) (libp2p/go-libp2p#1417)
- fix flaky TestResourceManagerAcceptStream test (#1420) (libp2p/go-libp2p#1420)
- move go-tcp-transport here (libp2p/go-libp2p#1418)
- move the go-libp2p-swarm here (libp2p/go-libp2p#1414)
- reduce flakiness of backoff cache tests (#1415) (libp2p/go-libp2p#1415)
- move the go-libp2p-blankhost here (libp2p/go-libp2p#1411)
- github.com/libp2p/go-libp2p-core (v0.15.1 -> v0.16.1):
- release v0.16.1 (#255) (libp2p/go-libp2p-core#255)
- force usage of github.com/btcsuite/btcd v0.22.1 or newer (#254) (libp2p/go-libp2p-core#254)
- release v0.16.0 (#251) (libp2p/go-libp2p-core#251)
- remove OpenedStream and ClosedStream from Notifiee interface (#250) (libp2p/go-libp2p-core#250)
- deprecate Negotiator.NegotiateLazy (#249) (libp2p/go-libp2p-core#249)
- update btcec dependency (#247) (libp2p/go-libp2p-core#247)
- github.com/libp2p/go-libp2p-discovery (v0.6.0 -> v0.7.0):
- deprecate this repo (#84) (libp2p/go-libp2p-discovery#84)
- remove dependency on the go-libp2p-peerstore/addr package (#82) (libp2p/go-libp2p-discovery#82)
- fix flaky TestBackoffDiscoveryMultipleBackoff test on CI (#80) (libp2p/go-libp2p-discovery#80)
- chore: update go-log to v2 (libp2p/go-libp2p-discovery#76)
- sync: update CI config files (#74) (libp2p/go-libp2p-discovery#74)
- github.com/libp2p/go-libp2p-swarm (v0.10.2 -> v0.11.0):
- deprecate this repo (#320) (libp2p/go-libp2p-swarm#320)
- sync: update CI config files (libp2p/go-libp2p-swarm#317)
- github.com/libp2p/go-reuseport (v0.1.0 -> v0.2.0):
- release v0.2.0 (#90) (libp2p/go-reuseport#90)
- sync: update CI config files (#86) (libp2p/go-reuseport#86)
- github.com/multiformats/go-multibase (v0.0.3 -> v0.1.0):
- chore: release v0.1.0
- feat: add UTF-8 support and base256emoji
- submodule: spec/
- sync: update CI config files (#48) (multiformats/go-multibase#48)
- fix staticcheck (multiformats/go-multibase#41)
- Fix vet warnings about conversion of int to string (multiformats/go-multibase#39)
- github.com/multiformats/go-multihash (v0.1.0 -> v0.2.0):
- chore: replace blake2b implementation by golang.org/x/crypto (multiformats/go-multihash#157)
- sync: update CI config files (multiformats/go-multihash#156)
- github.com/multiformats/go-multistream (v0.3.0 -> v0.3.3):
- Release v0.3.3 (multiformats/go-multistream#90)
- Ignore error if can't write back multistream protocol id (multiformats/go-multistream#89)
- release v0.3.2 (#88) (multiformats/go-multistream#88)
- Ignore error if can't write back echoed protocol in negotiate (#87) (multiformats/go-multistream#87)
- release v0.3.1 (#86) (multiformats/go-multistream#86)
- deprecate NegotiateLazy (#85) (multiformats/go-multistream#85)
- return an ErrNotSupported when lazy negotiation fails (#84) (multiformats/go-multistream#84)
- github.com/warpfork/go-testmark (v0.9.0 -> v0.10.0):
- testexec: support a hunk named 'input' for stdin.
- readme: link to other implementations!
- readme: discuss autopatching and fixture regeneration
- readme: discuss extensions, and introduce testexec as an example.
Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marten Seemann | 376 | +11584/-15055 | 894 |
Jorropo | 18 | +11649/-11249 | 81 |
noot | 43 | +5974/-3332 | 170 |
Steven Allen | 173 | +5206/-3124 | 282 |
Yusef Napora | 49 | +1911/-3606 | 124 |
Juan Batiz-Benet | 14 | +3933/-53 | 48 |
Jeromy | 84 | +2140/-1328 | 240 |
vyzo | 51 | +2057/-1126 | 79 |
Raúl Kripalani | 39 | +1993/-867 | 103 |
Jeromy Johnson | 52 | +1700/-1081 | 233 |
Antonio Navarro Perez | 4 | +1874/-729 | 34 |
Aarsh Shah | 24 | +1428/-504 | 54 |
Marcin Rataj | 19 | +1051/-855 | 251 |
Alex Browne | 25 | +1207/-582 | 49 |
Jakub Sztandera | 29 | +898/-335 | 63 |
Friedel Ziegelmayer | 11 | +491/-284 | 18 |
Will Scott | 6 | +240/-319 | 17 |
Marco Munizaga | 11 | +377/-141 | 17 |
Hlib | 8 | +269/-135 | 15 |
Gus Eggert | 5 | +325/-63 | 19 |
lnykww | 1 | +275/-50 | 4 |
Łukasz Magiera | 3 | +196/-58 | 7 |
Matt Joiner | 14 | +79/-55 | 17 |
Eric Myhre | 4 | +122/-6 | 5 |
Andrew Gillis | 1 | +111/-6 | 4 |
Fazlul Shahriar | 2 | +84/-31 | 5 |
tg | 1 | +70/-15 | 2 |
Cory Schwartz | 4 | +50/-28 | 11 |
Lars Gierth | 3 | +33/-26 | 3 |
Cole Brown | 2 | +37/-16 | 9 |
web3-bot | 7 | +38/-11 | 18 |
Alvin Reyes | 1 | +34/-14 | 1 |
Hector Sanjuan | 4 | +34/-8 | 5 |
Guilhem Fanton | 2 | +28/-10 | 6 |
Brian Meek | 1 | +14/-17 | 4 |
Hlib Kanunnikov | 1 | +25/-3 | 1 |
Adin Schmahmann | 5 | +15/-13 | 5 |
Henrique Dias | 1 | +24/-2 | 4 |
Dennis Trautwein | 1 | +20/-4 | 2 |
galargh | 2 | +18/-2 | 2 |
M. Hawn | 3 | +10/-10 | 7 |
Can ZHANG | 1 | +12/-3 | 1 |
Masih H. Derkani | 1 | +4/-10 | 2 |
gammazero | 1 | +6/-6 | 2 |
Ikko Ashimine | 1 | +6/-6 | 2 |
Daniel N | 2 | +6/-5 | 2 |
watjurk | 1 | +8/-2 | 1 |
John Steidley | 2 | +4/-4 | 3 |
Aaron Bieber | 1 | +6/-2 | 1 |
Kishan Mohanbhai Sagathiya | 1 | +6/-1 | 1 |
siiky | 3 | +3/-3 | 3 |
Lucas Molas | 1 | +5/-1 | 1 |
Kevin Atkinson | 1 | +3/-3 | 1 |
Aayush Rajasekaran | 1 | +5/-1 | 1 |
T Mo | 1 | +2/-2 | 1 |
Piotr Galar | 1 | +2/-2 | 1 |
Arber Avdullahu | 1 | +2/-2 | 1 |
Russell Dempsey | 1 | +2/-1 | 1 |
anders | 1 | +1/-1 | 1 |
RubenKelevra | 1 | +1/-1 | 1 |
Jonathan Rudenberg | 1 | +1/-1 | 1 |
Ettore Di Giacinto | 1 | +2/-0 | 1 |
Daniel Norman | 1 | +1/-1 | 1 |
Chawye Hsu | 1 | +1/-1 | 1 |
Aliabbas Merchant | 1 | +1/-1 | 1 |
can | 1 | +1/-0 | 1 |
Ed Mazurek | 1 | +0/-0 | 1 |