| 1 | # Kubo changelog v0.14 |
| 2 | |
| 3 | ## v0.14.0 |
| 4 | |
| 5 | ### Overview |
| 6 | |
| 7 | Below is an outline of all that is in this release, so you get a sense of all that's included. |
| 8 | |
| 9 | - [🛠 BREAKING CHANGES](#-breaking-changes) |
| 10 | - [Removed `mdns_legacy` implementation](#removed-mdns_legacy-implementation) |
| 11 | - [🔦 Highlights](#-highlights) |
| 12 | - [🛣️ Delegated Routing](#-delegated-routing) |
| 13 | - [👥 Rename to Kubo](#-rename-to-kubo) |
| 14 | - [🎒 `ipfs repo migrate`](#-ipfs-repo-migrate) |
| 15 | - [🚀 Emoji support in Multibase](#-emoji-support-in-multibase) |
| 16 | |
| 17 | ### 🛠 BREAKING CHANGES |
| 18 | |
| 19 | #### Removed `mdns_legacy` implementation |
| 20 | |
| 21 | The modern DNS-SD compatible [zeroconf implementation](https://github.com/libp2p/zeroconf#readme) |
| 22 | (based on [this specification](https://github.com/libp2p/specs/blob/master/discovery/mdns.md)) |
| 23 | has been running next to the `mdns_legacy` for a while (since v0.11). During |
| 24 | this transitional period Kubo nodes were sending twice as many LAN packets, |
| 25 | which ends with this release: we've [removed](https://github.com/ipfs/kubo/pull/9048) the legacy implementation. |
| 26 | |
| 27 | ### 🔦 Highlights |
| 28 | |
| 29 | #### 🛣️ Delegated Routing |
| 30 | |
| 31 | Content routing is the a term used to describe the problem of finding providers for a given piece of content. |
| 32 | If you have a hash, or CID of some data, how do you find who has it? |
| 33 | In IPFS, until now, only a DHT was used as a decentralized answer to content routing. |
| 34 | Now, content routing can be handled by clients implementing the [Reframe protocol](https://github.com/ipfs/specs/tree/main/reframe#readme). |
| 35 | |
| 36 | Example configuration usage using the [Filecoin Network Indexer](https://docs.cid.contact/filecoin-network-indexer/overview): |
| 37 | |
| 38 | ``` |
| 39 | ipfs config Routing.Routers.CidContact --json '{ |
| 40 | "Type": "reframe", |
| 41 | "Parameters": { |
| 42 | "Endpoint": "https://cid.contact/reframe" |
| 43 | } |
| 44 | }' |
| 45 | |
| 46 | ``` |
| 47 | |
| 48 | #### 👥 Rename to Kubo |
| 49 | |
| 50 | We've renamed Go-IPFS to Kubo ([details](https://github.com/ipfs/go-ipfs/issues/8959)). |
| 51 | |
| 52 | Published artifacts use `kubo` now, and are available at: |
| 53 | |
| 54 | - https://dist.ipfs.tech/kubo/ |
| 55 | - https://hub.docker.com/r/ipfs/kubo/ |
| 56 | |
| 57 | To minimize the impact on infrastructure that autoupdates on a new release, |
| 58 | the same binaries are still published under the old name at: |
| 59 | |
| 60 | - https://dist.ipfs.tech/go-ipfs/ |
| 61 | - https://hub.docker.com/r/ipfs/go-ipfs/ |
| 62 | |
| 63 | The libp2p identify useragent of Kubo has also been changed from `go-ipfs` to `kubo`. |
| 64 | |
| 65 | #### 🎒 `ipfs repo migrate` |
| 66 | |
| 67 | This new command allows the you to run the repo migration without starting the daemon. |
| 68 | |
| 69 | See `ipfs repo migrate --help` for more info. |
| 70 | |
| 71 | #### 🚀 Emoji support in Multibase |
| 72 | |
| 73 | Kubo now supports [`base256emoji`](https://github.com/multiformats/multibase/blob/master/rfcs/Base256Emoji.md) encoding in all [Multibase](https://docs.ipfs.tech/concepts/glossary/#multibase) contexts. Use it for testing Unicode support, as visual aid while explaining Multiformats, or just for fun: |
| 74 | |
| 75 | ```console |
| 76 | $ echo -n "test" | ipfs multibase encode -b base256emoji - |
| 77 | 🚀😈✋🌈😈 |
| 78 | |
| 79 | $ echo -n "🚀😈✋🌈😈" | ipfs multibase decode - |
| 80 | test |
| 81 | |
| 82 | $ ipfs cid format -v 1 -b base256emoji bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi |
| 83 | 🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊 |
| 84 | ``` |
| 85 | |
| 86 | [`/ipfs/🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊`](https://ipfs.io/ipfs/🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊) |
| 87 | |
| 88 | ### Changelog |
| 89 | |
| 90 | <details> |
| 91 | <summary>Full Changelog</summary> |
| 92 | |
| 93 | - github.com/ipfs/kubo: |
| 94 | - chore: bump to v0.14.0 |
| 95 | - docs(changelog): finish v0.14.0 changelog |
| 96 | - fix(gw): cache-control of index.html websites |
| 97 | - chore(license): fix broken link to apache-2.0 |
| 98 | - fix: kubo in daemon and cli stdout |
| 99 | - backport: merge commit '839b0848a' into release-v0.14.0 |
| 100 | - chore: Release v0.14-rc1 |
| 101 | - docs: fix v0.14's changelog format |
| 102 | - chore: update go-multibase 🚀 |
| 103 | - feat(routing): Delegated Routing (#8997) ([ipfs/kubo#8997](https://github.com/ipfs/kubo/pull/8997)) |
| 104 | - chore: changelogs split |
| 105 | - feat(gw): Cache-Control: only-if-cached |
| 106 | - chore(deps): webui v2.15.1 |
| 107 | - Follow-ups after repository rename |
| 108 | ([ipfs/kubo#9098](https://github.com/ipfs/kubo/pull/9098)) |
| 109 | - docs: refine wording |
| 110 | - docs: refine the wording of provider strategies |
| 111 | - refactor: rename to kubo |
| 112 | ([ipfs/kubo#8958](https://github.com/ipfs/kubo/pull/8958)) |
| 113 | - fix: correct cache-control in car responses |
| 114 | - docs: v0.13.1 (#9093) ([ipfs/kubo#9093](https://github.com/ipfs/kubo/pull/9093)) |
| 115 | - chore: update go-car ([ipfs/kubo#9089](https://github.com/ipfs/kubo/pull/9089)) |
| 116 | - update go-libp2p to v0.20.3 ([ipfs/kubo#9038](https://github.com/ipfs/kubo/pull/9038)) |
| 117 | - docs: add SECURITY.md (#9062) ([ipfs/kubo#9062](https://github.com/ipfs/kubo/pull/9062)) |
| 118 | - fix: remove mdns_legacy & Discovery.MDNS.Interval |
| 119 | - refactor: prealloc slices with known sizes (#8892) ([ipfs/kubo#8892](https://github.com/ipfs/kubo/pull/8892)) |
| 120 | - docs: fix typo in `cid/base32` |
| 121 | - docs: mark Swarm.ResourceMgr as experimental |
| 122 | - chore: replace ioutil with io and os (#8969) ([ipfs/kubo#8969](https://github.com/ipfs/kubo/pull/8969)) |
| 123 | - feat: add a public function on peering to get the state |
| 124 | - fix: honor url filename when downloading as CAR/BLOCK |
| 125 | - Merge branch 'release' |
| 126 | - chore: GitHub format |
| 127 | - fix(cmd/config): make config edit subcommand work on windows |
| 128 | - chore: bump Go to 1.18.3 (#9021) ([ipfs/kubo#9021](https://github.com/ipfs/kubo/pull/9021)) |
| 129 | - feat: upgrade to go-libp2p-kad-dht@v0.16.0 (#9005) ([ipfs/kubo#9005](https://github.com/ipfs/kubo/pull/9005)) |
| 130 | - docs: fix typo in the `swarm/peering` help text |
| 131 | - feat: disable resource manager by default (#9003) ([ipfs/kubo#9003](https://github.com/ipfs/kubo/pull/9003)) |
| 132 | - fix: adjust rcmgr limits for accelerated DHT client rt refresh (#8982) ([ipfs/kubo#8982](https://github.com/ipfs/kubo/pull/8982)) |
| 133 | - fix(ci): make go-ipfs-as-a-library work without external peers (#8978) ([ipfs/kubo#8978](https://github.com/ipfs/kubo/pull/8978)) |
| 134 | - feat: log when resource manager limits are exceeded (#8980) ([ipfs/kubo#8980](https://github.com/ipfs/kubo/pull/8980)) |
| 135 | - fix: JS caching via Access-Control-Expose-Headers (#8984) ([ipfs/kubo#8984](https://github.com/ipfs/kubo/pull/8984)) |
| 136 | - docs: fix abstractions typo |
| 137 | - fix: hanging goroutine in get fileArchive handler |
| 138 | - chore: mark fuse experimental (#8962) ([ipfs/kubo#8962](https://github.com/ipfs/kubo/pull/8962)) |
| 139 | - fix(node/libp2p): disable rcmgr checkImplicitDefaults ([ipfs/kubo#8965](https://github.com/ipfs/kubo/pull/8965)) |
| 140 | - Add 'ipfs repo migrate' command (#8428) ([ipfs/kubo#8428](https://github.com/ipfs/kubo/pull/8428)) |
| 141 | - pubsub multibase encoding (#8933) ([ipfs/kubo#8933](https://github.com/ipfs/kubo/pull/8933)) |
| 142 | - 'pin rm' helptext: rewrite description as object is not removed from local storage (immediately) ([ipfs/kubo#8947](https://github.com/ipfs/kubo/pull/8947)) |
| 143 | - ([ipfs/kubo#8934](https://github.com/ipfs/kubo/pull/8934)) |
| 144 | - Add instructions to resolve repo migration error (#8946) ([ipfs/kubo#8946](https://github.com/ipfs/kubo/pull/8946)) |
| 145 | - fix: use path instead of filepath for asset embeds to support Windows |
| 146 | - chore: update version to v0.14.0-dev |
| 147 | - github.com/ipfs/go-bitswap (v0.6.0 -> v0.7.0): |
| 148 | - chore: release v0.7.0 (#566) ([ipfs/go-bitswap#566](https://github.com/ipfs/go-bitswap/pull/566)) |
| 149 | - feat: coalesce and queue connection event handling (#565) ([ipfs/go-bitswap#565](https://github.com/ipfs/go-bitswap/pull/565)) |
| 150 | - fix initialisation example in README (#552) ([ipfs/go-bitswap#552](https://github.com/ipfs/go-bitswap/pull/552)) |
| 151 | - github.com/ipfs/go-unixfs (v0.3.1 -> v0.4.0): |
| 152 | - Set version to v0.3.2 ([ipfs/go-unixfs#122](https://github.com/ipfs/go-unixfs/pull/122)) |
| 153 | - Make switchToSharding more efficient |
| 154 | - github.com/ipld/go-ipld-prime (v0.16.0 -> v0.17.0): |
| 155 | failed to fetch repo |
| 156 | - github.com/libp2p/go-libp2p (v0.19.4 -> v0.20.3): |
| 157 | - Release 0.20.3 (#1623) ([libp2p/go-libp2p#1623](https://github.com/libp2p/go-libp2p/pull/1623)) |
| 158 | - release v0.20.2 |
| 159 | - feat: allow dialing wss peers using DNS multiaddrs |
| 160 | - update go-yamux to v3.1.2, release v0.20.1 (#1591) ([libp2p/go-libp2p#1591](https://github.com/libp2p/go-libp2p/pull/1591)) |
| 161 | - release v0.20.0 (#1530) ([libp2p/go-libp2p#1530](https://github.com/libp2p/go-libp2p/pull/1530)) |
| 162 | - update go-libp2p-core, remove stream methods from network.Notifiee (#1521) ([libp2p/go-libp2p#1521](https://github.com/libp2p/go-libp2p/pull/1521)) |
| 163 | - autonat: return E_DIAL_REFUSED when skipping dial (#1527) ([libp2p/go-libp2p#1527](https://github.com/libp2p/go-libp2p/pull/1527)) |
| 164 | - move go-stream-muxer-multistream here ([libp2p/go-libp2p#1511](https://github.com/libp2p/go-libp2p/pull/1511)) |
| 165 | - remove dependency on go-libp2p-testing/suites/sec (#1510) ([libp2p/go-libp2p#1510](https://github.com/libp2p/go-libp2p/pull/1510)) |
| 166 | - backoff: fix flaky tests in backoff cache (#1516) ([libp2p/go-libp2p#1516](https://github.com/libp2p/go-libp2p/pull/1516)) |
| 167 | - identify: fix flaky tests (#1515) ([libp2p/go-libp2p#1515](https://github.com/libp2p/go-libp2p/pull/1515)) |
| 168 | - quic: increase timeout in hole punching test (#1495) ([libp2p/go-libp2p#1495](https://github.com/libp2p/go-libp2p/pull/1495)) |
| 169 | - Fix badge image in README (#1517) ([libp2p/go-libp2p#1517](https://github.com/libp2p/go-libp2p/pull/1517)) |
| 170 | - move go-libp2p-nat here ([libp2p/go-libp2p#1513](https://github.com/libp2p/go-libp2p/pull/1513)) |
| 171 | - move go-reuseport-transport here ([libp2p/go-libp2p#1459](https://github.com/libp2p/go-libp2p/pull/1459)) |
| 172 | - holepunch: fix flaky TestEndToEndSimConnect test (#1508) ([libp2p/go-libp2p#1508](https://github.com/libp2p/go-libp2p/pull/1508)) |
| 173 | - swarm: fix flaky TestDialExistingConnection test (#1509) ([libp2p/go-libp2p#1509](https://github.com/libp2p/go-libp2p/pull/1509)) |
| 174 | - tcp: limit the number of connections in tcp suite test on non-linux hosts (#1507) ([libp2p/go-libp2p#1507](https://github.com/libp2p/go-libp2p/pull/1507)) |
| 175 | - increase overly short require.Eventually intervals (#1501) ([libp2p/go-libp2p#1501](https://github.com/libp2p/go-libp2p/pull/1501)) |
| 176 | - tls: fix flaky handshake cancellation test (#1503) ([libp2p/go-libp2p#1503](https://github.com/libp2p/go-libp2p/pull/1503)) |
| 177 | - merge the transport test suite from go-libp2p-testing here ([libp2p/go-libp2p#1496](https://github.com/libp2p/go-libp2p/pull/1496)) |
| 178 | - fix racy connection comparison in TestDialWorkerLoopBasic (#1499) ([libp2p/go-libp2p#1499](https://github.com/libp2p/go-libp2p/pull/1499)) |
| 179 | - swarm: fix race condition in TestFailFirst (#1490) ([libp2p/go-libp2p#1490](https://github.com/libp2p/go-libp2p/pull/1490)) |
| 180 | - basichost: fix flaky TestSignedPeerRecordWithNoListenAddrs (#1488) ([libp2p/go-libp2p#1488](https://github.com/libp2p/go-libp2p/pull/1488)) |
| 181 | - swarm: fix flaky and racy TestDialExistingConnection (#1491) ([libp2p/go-libp2p#1491](https://github.com/libp2p/go-libp2p/pull/1491)) |
| 182 | - quic: adjust timeout for reuse garbage collector detection in tests (#1487) ([libp2p/go-libp2p#1487](https://github.com/libp2p/go-libp2p/pull/1487)) |
| 183 | - quic: fix flaky TestResourceManagerAcceptDenied (#1485) ([libp2p/go-libp2p#1485](https://github.com/libp2p/go-libp2p/pull/1485)) |
| 184 | - quic: deflake the holepunching test (#1484) ([libp2p/go-libp2p#1484](https://github.com/libp2p/go-libp2p/pull/1484)) |
| 185 | - holepunch: fix incorrect message type for the SYNC message (#1478) ([libp2p/go-libp2p#1478](https://github.com/libp2p/go-libp2p/pull/1478)) |
| 186 | - use real keys in tests instead of go-libp2p-testing/netutil fake keys (#1475) ([libp2p/go-libp2p#1475](https://github.com/libp2p/go-libp2p/pull/1475)) |
| 187 | - quic: fix flaky TestResourceManagerAcceptDenied ([libp2p/go-libp2p#1461](https://github.com/libp2p/go-libp2p/pull/1461)) |
| 188 | - move go-libp2p-pnet here ([libp2p/go-libp2p#1465](https://github.com/libp2p/go-libp2p/pull/1465)) |
| 189 | - move go-libp2p-tls here ([libp2p/go-libp2p#1466](https://github.com/libp2p/go-libp2p/pull/1466)) |
| 190 | - fix race condition in relayFinder ([libp2p/go-libp2p#1469](https://github.com/libp2p/go-libp2p/pull/1469)) |
| 191 | - fix race condition in holepunch service (#1473) ([libp2p/go-libp2p#1473](https://github.com/libp2p/go-libp2p/pull/1473)) |
| 192 | - Update README to include supported Go Versions (#1470) ([libp2p/go-libp2p#1470](https://github.com/libp2p/go-libp2p/pull/1470)) |
| 193 | - move go-libp2p-noise here ([libp2p/go-libp2p#1462](https://github.com/libp2p/go-libp2p/pull/1462)) |
| 194 | - move go-libp2p-transport-upgrader here ([libp2p/go-libp2p#1463](https://github.com/libp2p/go-libp2p/pull/1463)) |
| 195 | - move go-conn-security-multistream here ([libp2p/go-libp2p#1460](https://github.com/libp2p/go-libp2p/pull/1460)) |
| 196 | - move go-libp2p-mplex here ([libp2p/go-libp2p#1450](https://github.com/libp2p/go-libp2p/pull/1450)) |
| 197 | - use yamux instead of mplex in tests (#1456) ([libp2p/go-libp2p#1456](https://github.com/libp2p/go-libp2p/pull/1456)) |
| 198 | - rename the yamux package (#1452) ([libp2p/go-libp2p#1452](https://github.com/libp2p/go-libp2p/pull/1452)) |
| 199 | - swarm: don't check return value of str.Close in TestResourceManager (#1453) ([libp2p/go-libp2p#1453](https://github.com/libp2p/go-libp2p/pull/1453)) |
| 200 | - move go-libp2p-yamux here ([libp2p/go-libp2p#1439](https://github.com/libp2p/go-libp2p/pull/1439)) |
| 201 | - quic: fix flaky TestConnectionGating test (#1442) ([libp2p/go-libp2p#1442](https://github.com/libp2p/go-libp2p/pull/1442)) |
| 202 | - quic: fix flaky TestReuseGarbageCollect test (#1446) ([libp2p/go-libp2p#1446](https://github.com/libp2p/go-libp2p/pull/1446)) |
| 203 | - quic: fix flaky holepunching test (#1443) ([libp2p/go-libp2p#1443](https://github.com/libp2p/go-libp2p/pull/1443)) |
| 204 | - move go-libp2p-quic-transport here ([libp2p/go-libp2p#1424](https://github.com/libp2p/go-libp2p/pull/1424)) |
| 205 | - remove flaky TestTcpSimultaneousConnect (#1425) ([libp2p/go-libp2p#1425](https://github.com/libp2p/go-libp2p/pull/1425)) |
| 206 | - move go-ws-transport here ([libp2p/go-libp2p#1422](https://github.com/libp2p/go-libp2p/pull/1422)) |
| 207 | - update go-multistream, stop using deprecated NegotiateLazy (#1417) ([libp2p/go-libp2p#1417](https://github.com/libp2p/go-libp2p/pull/1417)) |
| 208 | - fix flaky TestResourceManagerAcceptStream test (#1420) ([libp2p/go-libp2p#1420](https://github.com/libp2p/go-libp2p/pull/1420)) |
| 209 | - move go-tcp-transport here ([libp2p/go-libp2p#1418](https://github.com/libp2p/go-libp2p/pull/1418)) |
| 210 | - move the go-libp2p-swarm here ([libp2p/go-libp2p#1414](https://github.com/libp2p/go-libp2p/pull/1414)) |
| 211 | - reduce flakiness of backoff cache tests (#1415) ([libp2p/go-libp2p#1415](https://github.com/libp2p/go-libp2p/pull/1415)) |
| 212 | - move the go-libp2p-blankhost here ([libp2p/go-libp2p#1411](https://github.com/libp2p/go-libp2p/pull/1411)) |
| 213 | - github.com/libp2p/go-libp2p-core (v0.15.1 -> v0.16.1): |
| 214 | - release v0.16.1 (#255) ([libp2p/go-libp2p-core#255](https://github.com/libp2p/go-libp2p-core/pull/255)) |
| 215 | - force usage of github.com/btcsuite/btcd v0.22.1 or newer (#254) ([libp2p/go-libp2p-core#254](https://github.com/libp2p/go-libp2p-core/pull/254)) |
| 216 | - release v0.16.0 (#251) ([libp2p/go-libp2p-core#251](https://github.com/libp2p/go-libp2p-core/pull/251)) |
| 217 | - remove OpenedStream and ClosedStream from Notifiee interface (#250) ([libp2p/go-libp2p-core#250](https://github.com/libp2p/go-libp2p-core/pull/250)) |
| 218 | - deprecate Negotiator.NegotiateLazy (#249) ([libp2p/go-libp2p-core#249](https://github.com/libp2p/go-libp2p-core/pull/249)) |
| 219 | - update btcec dependency (#247) ([libp2p/go-libp2p-core#247](https://github.com/libp2p/go-libp2p-core/pull/247)) |
| 220 | - github.com/libp2p/go-libp2p-discovery (v0.6.0 -> v0.7.0): |
| 221 | - deprecate this repo (#84) ([libp2p/go-libp2p-discovery#84](https://github.com/libp2p/go-libp2p-discovery/pull/84)) |
| 222 | - remove dependency on the go-libp2p-peerstore/addr package (#82) ([libp2p/go-libp2p-discovery#82](https://github.com/libp2p/go-libp2p-discovery/pull/82)) |
| 223 | - fix flaky TestBackoffDiscoveryMultipleBackoff test on CI (#80) ([libp2p/go-libp2p-discovery#80](https://github.com/libp2p/go-libp2p-discovery/pull/80)) |
| 224 | - chore: update go-log to v2 ([libp2p/go-libp2p-discovery#76](https://github.com/libp2p/go-libp2p-discovery/pull/76)) |
| 225 | - sync: update CI config files (#74) ([libp2p/go-libp2p-discovery#74](https://github.com/libp2p/go-libp2p-discovery/pull/74)) |
| 226 | - github.com/libp2p/go-libp2p-swarm (v0.10.2 -> v0.11.0): |
| 227 | - deprecate this repo (#320) ([libp2p/go-libp2p-swarm#320](https://github.com/libp2p/go-libp2p-swarm/pull/320)) |
| 228 | - sync: update CI config files ([libp2p/go-libp2p-swarm#317](https://github.com/libp2p/go-libp2p-swarm/pull/317)) |
| 229 | - github.com/libp2p/go-reuseport (v0.1.0 -> v0.2.0): |
| 230 | - release v0.2.0 (#90) ([libp2p/go-reuseport#90](https://github.com/libp2p/go-reuseport/pull/90)) |
| 231 | - sync: update CI config files (#86) ([libp2p/go-reuseport#86](https://github.com/libp2p/go-reuseport/pull/86)) |
| 232 | - github.com/multiformats/go-multibase (v0.0.3 -> v0.1.0): |
| 233 | - chore: release v0.1.0 |
| 234 | - feat: add UTF-8 support and base256emoji |
| 235 | - submodule: spec/ |
| 236 | - sync: update CI config files (#48) ([multiformats/go-multibase#48](https://github.com/multiformats/go-multibase/pull/48)) |
| 237 | - fix staticcheck ([multiformats/go-multibase#41](https://github.com/multiformats/go-multibase/pull/41)) |
| 238 | - Fix vet warnings about conversion of int to string ([multiformats/go-multibase#39](https://github.com/multiformats/go-multibase/pull/39)) |
| 239 | - github.com/multiformats/go-multihash (v0.1.0 -> v0.2.0): |
| 240 | - chore: replace blake2b implementation by golang.org/x/crypto ([multiformats/go-multihash#157](https://github.com/multiformats/go-multihash/pull/157)) |
| 241 | - sync: update CI config files ([multiformats/go-multihash#156](https://github.com/multiformats/go-multihash/pull/156)) |
| 242 | - github.com/multiformats/go-multistream (v0.3.0 -> v0.3.3): |
| 243 | - Release v0.3.3 ([multiformats/go-multistream#90](https://github.com/multiformats/go-multistream/pull/90)) |
| 244 | - Ignore error if can't write back multistream protocol id ([multiformats/go-multistream#89](https://github.com/multiformats/go-multistream/pull/89)) |
| 245 | - release v0.3.2 (#88) ([multiformats/go-multistream#88](https://github.com/multiformats/go-multistream/pull/88)) |
| 246 | - Ignore error if can't write back echoed protocol in negotiate (#87) ([multiformats/go-multistream#87](https://github.com/multiformats/go-multistream/pull/87)) |
| 247 | - release v0.3.1 (#86) ([multiformats/go-multistream#86](https://github.com/multiformats/go-multistream/pull/86)) |
| 248 | - deprecate NegotiateLazy (#85) ([multiformats/go-multistream#85](https://github.com/multiformats/go-multistream/pull/85)) |
| 249 | - return an ErrNotSupported when lazy negotiation fails (#84) ([multiformats/go-multistream#84](https://github.com/multiformats/go-multistream/pull/84)) |
| 250 | - github.com/warpfork/go-testmark (v0.9.0 -> v0.10.0): |
| 251 | - testexec: support a hunk named 'input' for stdin. |
| 252 | - readme: link to other implementations! |
| 253 | - readme: discuss autopatching and fixture regeneration |
| 254 | - readme: discuss extensions, and introduce testexec as an example. |
| 255 | |
| 256 | </details> |
| 257 | |
| 258 | ### Contributors |
| 259 | |
| 260 | | Contributor | Commits | Lines ± | Files Changed | |
| 261 | |-------------|---------|---------|---------------| |
| 262 | | Marten Seemann | 376 | +11584/-15055 | 894 | |
| 263 | | Jorropo | 18 | +11649/-11249 | 81 | |
| 264 | | noot | 43 | +5974/-3332 | 170 | |
| 265 | | Steven Allen | 173 | +5206/-3124 | 282 | |
| 266 | | Yusef Napora | 49 | +1911/-3606 | 124 | |
| 267 | | Juan Batiz-Benet | 14 | +3933/-53 | 48 | |
| 268 | | Jeromy | 84 | +2140/-1328 | 240 | |
| 269 | | vyzo | 51 | +2057/-1126 | 79 | |
| 270 | | Raúl Kripalani | 39 | +1993/-867 | 103 | |
| 271 | | Jeromy Johnson | 52 | +1700/-1081 | 233 | |
| 272 | | Antonio Navarro Perez | 4 | +1874/-729 | 34 | |
| 273 | | Aarsh Shah | 24 | +1428/-504 | 54 | |
| 274 | | Marcin Rataj | 19 | +1051/-855 | 251 | |
| 275 | | Alex Browne | 25 | +1207/-582 | 49 | |
| 276 | | Jakub Sztandera | 29 | +898/-335 | 63 | |
| 277 | | Friedel Ziegelmayer | 11 | +491/-284 | 18 | |
| 278 | | Will Scott | 6 | +240/-319 | 17 | |
| 279 | | Marco Munizaga | 11 | +377/-141 | 17 | |
| 280 | | Hlib | 8 | +269/-135 | 15 | |
| 281 | | Gus Eggert | 5 | +325/-63 | 19 | |
| 282 | | lnykww | 1 | +275/-50 | 4 | |
| 283 | | Łukasz Magiera | 3 | +196/-58 | 7 | |
| 284 | | Matt Joiner | 14 | +79/-55 | 17 | |
| 285 | | Eric Myhre | 4 | +122/-6 | 5 | |
| 286 | | Andrew Gillis | 1 | +111/-6 | 4 | |
| 287 | | Fazlul Shahriar | 2 | +84/-31 | 5 | |
| 288 | | tg | 1 | +70/-15 | 2 | |
| 289 | | Cory Schwartz | 4 | +50/-28 | 11 | |
| 290 | | Lars Gierth | 3 | +33/-26 | 3 | |
| 291 | | Cole Brown | 2 | +37/-16 | 9 | |
| 292 | | web3-bot | 7 | +38/-11 | 18 | |
| 293 | | Alvin Reyes | 1 | +34/-14 | 1 | |
| 294 | | Hector Sanjuan | 4 | +34/-8 | 5 | |
| 295 | | Guilhem Fanton | 2 | +28/-10 | 6 | |
| 296 | | Brian Meek | 1 | +14/-17 | 4 | |
| 297 | | Hlib Kanunnikov | 1 | +25/-3 | 1 | |
| 298 | | Adin Schmahmann | 5 | +15/-13 | 5 | |
| 299 | | Henrique Dias | 1 | +24/-2 | 4 | |
| 300 | | Dennis Trautwein | 1 | +20/-4 | 2 | |
| 301 | | galargh | 2 | +18/-2 | 2 | |
| 302 | | M. Hawn | 3 | +10/-10 | 7 | |
| 303 | | Can ZHANG | 1 | +12/-3 | 1 | |
| 304 | | Masih H. Derkani | 1 | +4/-10 | 2 | |
| 305 | | gammazero | 1 | +6/-6 | 2 | |
| 306 | | Ikko Ashimine | 1 | +6/-6 | 2 | |
| 307 | | Daniel N | 2 | +6/-5 | 2 | |
| 308 | | watjurk | 1 | +8/-2 | 1 | |
| 309 | | John Steidley | 2 | +4/-4 | 3 | |
| 310 | | Aaron Bieber | 1 | +6/-2 | 1 | |
| 311 | | Kishan Mohanbhai Sagathiya | 1 | +6/-1 | 1 | |
| 312 | | siiky | 3 | +3/-3 | 3 | |
| 313 | | Lucas Molas | 1 | +5/-1 | 1 | |
| 314 | | Kevin Atkinson | 1 | +3/-3 | 1 | |
| 315 | | Aayush Rajasekaran | 1 | +5/-1 | 1 | |
| 316 | | T Mo | 1 | +2/-2 | 1 | |
| 317 | | Piotr Galar | 1 | +2/-2 | 1 | |
| 318 | | Arber Avdullahu | 1 | +2/-2 | 1 | |
| 319 | | Russell Dempsey | 1 | +2/-1 | 1 | |
| 320 | | anders | 1 | +1/-1 | 1 | |
| 321 | | RubenKelevra | 1 | +1/-1 | 1 | |
| 322 | | Jonathan Rudenberg | 1 | +1/-1 | 1 | |
| 323 | | Ettore Di Giacinto | 1 | +2/-0 | 1 | |
| 324 | | Daniel Norman | 1 | +1/-1 | 1 | |
| 325 | | Chawye Hsu | 1 | +1/-1 | 1 | |
| 326 | | Aliabbas Merchant | 1 | +1/-1 | 1 | |
| 327 | | can | 1 | +1/-0 | 1 | |
| 328 | | Ed Mazurek | 1 | +0/-0 | 1 | |