From 85cf6f20a18172008c6c7afae439cb81101970be Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Fri, 15 Feb 2019 16:29:27 -0800 Subject: [PATCH 01/10] CHANGELOG: add 0.4.19 License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 584 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 584 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07070afff..20e8501b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,589 @@ # go-ipfs changelog +## 0.4.19 2018-02-14 + +We're happy to announce go 0.4.19. As usual, this release contains a bunch of +important fixes and a slew of new and improved features. Please upgrade ASAP. + +### Features + +#### Autorelay + +This release pulls in a new feature from libp2p land. + +TODO: WRITE THIS + +#### Offline Operation + +There are two new "offline" features in this release: a global `--offline` flag +and an option to configure the gateway to not fetch files. + +All go-ipfs commands now support the `--offline` flag. This causes IPFS to avoid +network operations when performing the requested operation. If you've ever used +the `--local` flag, the `--offline` flag is the universally supported +replacement (it works everywhere). + +For example: + +* If the daemon is started with `ipfs daemon --offline`, it won't even _connect_ + to the network. (note: this feature isn't new, just an example). +* `ipfs add --offline some_file` won't send out provider records. +* `ipfs cat --offline Qm...` won't fetch any blocks from the network. +* `ipfs block stat --offline Qm...` is a great way to tell if a block is locally + available. + +On to the gateway, there's a new `Gateway.NoFetch` option to configure the +gateway to only serve locally present files. This makes it possible to run an +IPFS node as a gateway to serve content of _your_ choosing (i.e., stuff you've +pinned locally) but no other content. + +#### Adding And Pinning Content + +There's a new `--pin` flag for both `ipfs block put` and `ipfs urlstore add` to +match the `--pin` flag in `ipfs add`. This allows one to atomically add and pin +content with these APIs. + +**NOTE 1:** For `ipfs urlstore add`, `--pin` has been enabled _by default_ to +match the behavior in `ipfs add`. However, `ipfs block put` _does not_ pin by +default to match the _current_ behavior. + +**NOTE 2:** If you had previously used the urlstore and _weren't_ explicitly +pinning content after adding it, it isn't pinned and running the garbage +collector will delete it. While technically documented in the `ipfs urlstore +add` helptext, this behavior was non-obvious and bears mentioning. + +#### File Listing + +The `ipfs ls` command has two significant changes this release: it reports +_file_ sizes instead of _dag_ sizes and has gained a new `--stream` flag. + +First up, `ipfs ls` now reports _file_ sizes instead of _dag_ sizes. Previously, +for historical reasons, `ipfs ls` would report the size of a file/directory as +seen by IPFS _including_ all the filesystem datastructures and metadata. +However, this meant that `ls -l` and `ipfs ls` would print _different_ sizes: + +```bash +> ipfs ls /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv + +QmZTR5bcpQD7cFgTorqxZDYaew1Wqgfbd2ud9QqGPAkK2V 1688 about +QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y 200 contact +QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7 322 help +QmejvEPop4D7YUadeGqYWmZxHhLc4JBUCzJJHWMzdcMe2y 12 ping +QmXgqKTbzdh83pQtKFb19SpMCpDDcKR2ujqk3pKph9aCNF 1692 quick-start +QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB 1102 readme +QmQ5vhrL7uv6tuoN9KeVBwd4PwfQkXdVVmDLUZuTNxqgvm 1173 security-notes + +> ipfs get /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv +Saving file(s) to QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv + 6.39 KiB / 6.39 KiB [================================] 100.00% 0s + +> ls -l QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv +total 28 +-rw------- 1 user group 1677 Feb 14 17:03 about +-rw------- 1 user group 189 Feb 14 17:03 contact +-rw------- 1 user group 311 Feb 14 17:03 help +-rw------- 1 user group 4 Feb 14 17:03 ping +-rw------- 1 user group 1681 Feb 14 17:03 quick-start +-rw------- 1 user group 1091 Feb 14 17:03 readme +-rw------- 1 user group 1162 Feb 14 17:03 security-notes +``` + +This is now no longer the case. `ipfs ls` and `ls -l` now return the _same_ +sizes. + +Second up, `ipfs ls` now has a new `--stream` flag. In IPFS, very large +directories (e.g., Wikipedia) are split up into multiple chunks (shards) as +there are too many entries to fit in a single block. Unfortunately, `ipfs ls` +buffers the _entire_ file list in memory and then sorts it. This means that +`ipfs ls /ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki` (wikipedia) +will take a _very_ long time to return anything (it'll also use quite a bit of +memory). + +However, the new `--stream` flag makes it possible to stream a directory listing +as new chunks are fetched from the network. To test this, you can run `ipfs ls +--stream --size=false --resolve-type=false +/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki`. You probably won't +want to wait for that command to finish, Wikipedia has a _lot_ of entries. + +#### HTTP Proxy + +This release sees a new (experimental) feature contributed by our friends at +[Peergos](https://peergos.org): HTTP proxy over libp2p. When enabled, the local +gateway can act as an HTTP proxy and forward HTTP requests libp2p peers. When +combined with the `ipfs p2p` command, users can use this to expose HTTP services +to other go-ipfs nodes via their gateways. For details, check out the +[documentation](https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#p2p-http-proxy). + +### Performance And Reliability + +This release introduces quite a few performance/reliability improvements and, as +usual, fixes several memory leaks. Below is a non-exhaustive list of noticeable changes. + +#### DHT + +This release includes an important DHT fix that should significantly: + +1. Reduce dialing. +2. Speed up DHT queries. +3. Improve performance of the gateways. + +Basically, in the worst case, a DHT query would turn into a random walk of the +entire IPFS network. Yikes! + +Relevant PR: https://github.com/libp2p/go-libp2p-kad-dht/pull/237 + +#### Bitswap + +Bitswap sessions have improved and are now used for _all_ requests. Sessions +allow us to group related content and ask peers most likely to _have_ the +content instead of broadcasting the request to all connected peers. This gives +us two significant benefits: + +1. Less wasted upload bandwidth. Instead of broadcasting which blocks we want to + everyone, we can ask fewer peers thus reducing the number of requests we send + out. +2. Less wasted download bandwidth. Because we _know_ which peers likely have + content, we can ask an individual peer for a block and expect to get an + answer. In the past, we'd ask every peer at the same time to optimize for + latency at the expense of bandwidth (getting the same block from multiple + peers). We had to do this because we had to assume that _most_ peers didn't + have the requested block. + +#### Pubsub + +This release includes some significant reliability improvements in pubsub +subscription handling. If you've previously had issues with connected pubsub +peers _not_ seeing each-other's messages, please upgrade ASAP. + +#### Reuseport + +In this release, we've rewritten our previously error-prone `go-reuseport` +library to _not_ duplicate a significant portion of Go's low-level networking +code. This was made possible by Go's new `Control` +[`net.Dialer`](https://golang.org/pkg/net/#Dialer) option. + +In the past, our first suggestion to anyone experiencing weird resource or +connectivity issues was to disable `REUSEPORT` (set `IPFS_REUSEPORT` to false). +This should no longer be necessary. + +#### + +### Refactors and Endeavors + +#### Commands Library + +The legacy commands library shim has now been completely removed. This won't +mean much for many users but the go-ipfs team is happy to have this behind them. + +#### Base32 CIDs + +This release can now encode CIDs in responses in bases other than base58. This +is primarily useful for web-browser integration as it allows us to (a) encode +CIDs in a lower-case base (e.g., base32) and then use them in the _origin_ part +of URLs. The take away is: this release brings us a step closer to better +browser integration. + +Specifically, this release adds two flags: + +1. `--cid-base`: When specified, the IPFS CLI will encode all CIDv1 CIDs using the + requested base. +2. `--upgrade-cidv0-in-output`: When specified, the IPFS CLI will _upgrade_ CIDv0 + CIDs to CIDv1 CIDs when returning them to the user. This upgrade is necessary + because CIDv0 doesn't support multibase however, it's off by default as it + changes the _binary_ representation of the CIDs (which could have unintended + consequences). + +#### CoreAPI + +The work on the CoreAPI refactor ([ipfs/go-ipfs#4498][]) has progressed leaps and +bounds this release. The CoreAPI is a comprehensive programmatic interface +designed to allow go-ipfs be used as a daemon or a library interchangeably. + +As of this release, go-ipfs now has: + +* External interface definitions in [ipfs/interface-go-ipfs-core][]. +* A work-in-progress implementation ([ipfs/go-ipfs-http-client][]) of these + interfaces that uses the IPFS HTTP API. This will replace the + ([ipfs/go-ipfs-api][]) library. +* A new plugin type ["Daemon"][daemon-plugin]. Daemon plugins are started and + stopped along with the go-ipfs daemon and are instantiated with a copy of the + CoreAPI. This allows them to control and extend the go-ipfs daemon from within + the daemon itself. + +The next steps are: + +1. Finishing the remaining API surface area. At the moment, the two key missing + parts are: + 1. Config manipulation. + 2. The `ipfs files` API. +1. Finalizing the [ipfs/go-ipfs-http-client][] implementation. +2. Creating a simple way to construct and initialize a go-ipfs node when using + go-ipfs as a library. + +[ipfs/go-ipfs#4498]: https://github.com/ipfs/go-ipfs/issues/4498 +[ipfs/interface-go-ipfs-core]: https://github.com/ipfs/interface-go-ipfs-core +[ipfs/go-ipfs-http-client]: https://github.com/ipfs/go-ipfs-http-client +[ipfs/go-ipfs-api]: https://github.com/ipfs/go-ipfs-http-client +[daemon-plugin]: https://github.com/ipfs/go-ipfs/blob/master/docs/plugins.md#daemon + +### Changelogs + +- github.com/ipfs/go-ipfs: + - gx: update libp2p stuff ([ipfs/go-ipfs#5997](https://github.com/ipfs/go-ipfs/pull/5997)) + - Improve "name publish" ttl option documentation ([ipfs/go-ipfs#5979](https://github.com/ipfs/go-ipfs/pull/5979)) + - fix(cmd/mv): dst filename error ([ipfs/go-ipfs#5964](https://github.com/ipfs/go-ipfs/pull/5964)) + - coreapi: extract interface ([ipfs/go-ipfs#5978](https://github.com/ipfs/go-ipfs/pull/5978)) + - coreapi: cleanup non-gx references ([ipfs/go-ipfs#5976](https://github.com/ipfs/go-ipfs/pull/5976)) + - coreapi: fix seek test on http impl ([ipfs/go-ipfs#5971](https://github.com/ipfs/go-ipfs/pull/5971)) + - block put --pin ([ipfs/go-ipfs#5969](https://github.com/ipfs/go-ipfs/pull/5969)) + - Port `ipfs ls` to CoreAPI ([ipfs/go-ipfs#5962](https://github.com/ipfs/go-ipfs/pull/5962)) + - docs: duplicate default helptext in `name publish` ([ipfs/go-ipfs#5960](https://github.com/ipfs/go-ipfs/pull/5960)) + - plugin: add a daemon plugin with access to the CoreAPI ([ipfs/go-ipfs#5955](https://github.com/ipfs/go-ipfs/pull/5955)) + - coreapi: add some seeker tests ([ipfs/go-ipfs#5934](https://github.com/ipfs/go-ipfs/pull/5934)) + - Refactor ipfs get to use CoreAPI ([ipfs/go-ipfs#5943](https://github.com/ipfs/go-ipfs/pull/5943)) + - refact(cmd/init): change string option to const ([ipfs/go-ipfs#5949](https://github.com/ipfs/go-ipfs/pull/5949)) + - cmds/pin: use coreapi/pin ([ipfs/go-ipfs#5843](https://github.com/ipfs/go-ipfs/pull/5843)) + - Only perform DNSLink lookups on fully qualified domain names (FQDN) ([ipfs/go-ipfs#5950](https://github.com/ipfs/go-ipfs/pull/5950)) + - Fix DontCheckOSXFUSE config command example ([ipfs/go-ipfs#5951](https://github.com/ipfs/go-ipfs/pull/5951)) + - refact(cmd/config): change string option to const ([ipfs/go-ipfs#5948](https://github.com/ipfs/go-ipfs/pull/5948)) + - clarification the document of --resolve flag in name.publish ([ipfs/go-ipfs#5651](https://github.com/ipfs/go-ipfs/pull/5651)) + - Drop some coreunix code ([ipfs/go-ipfs#5938](https://github.com/ipfs/go-ipfs/pull/5938)) + - commands: fix verbose flag ([ipfs/go-ipfs#5940](https://github.com/ipfs/go-ipfs/pull/5940)) + - Fixes #4558 ([ipfs/go-ipfs#5937](https://github.com/ipfs/go-ipfs/pull/5937)) + - Port dag commansds to CoreAPI ([ipfs/go-ipfs#5939](https://github.com/ipfs/go-ipfs/pull/5939)) + - mfs: make sure to flush after mv and chcid ([ipfs/go-ipfs#5936](https://github.com/ipfs/go-ipfs/pull/5936)) + - docs/code-flow : Add code flow documentation for add cmd. ([ipfs/go-ipfs#5864](https://github.com/ipfs/go-ipfs/pull/5864)) + - coreapi: few more error check fixes ([ipfs/go-ipfs#5935](https://github.com/ipfs/go-ipfs/pull/5935)) + - Fixed and cleaned up TestIpfsStressRead ([ipfs/go-ipfs#5920](https://github.com/ipfs/go-ipfs/pull/5920)) + - Clarify that chunker sizes are in bytes ([ipfs/go-ipfs#5923](https://github.com/ipfs/go-ipfs/pull/5923)) + - refact(cmd/patch): change string to const ([ipfs/go-ipfs#5931](https://github.com/ipfs/go-ipfs/pull/5931)) + - refact(cmd/object): change option string to const ([ipfs/go-ipfs#5932](https://github.com/ipfs/go-ipfs/pull/5932)) + - coreapi: replace coreiface.DagAPI with ipld.DAGService ([ipfs/go-ipfs#5922](https://github.com/ipfs/go-ipfs/pull/5922)) + - Add global option to specify the multibase encoding (server side) ([ipfs/go-ipfs#5789](https://github.com/ipfs/go-ipfs/pull/5789)) + - coreapi: Adjust some tests for go-ipfs-http-api ([ipfs/go-ipfs#5926](https://github.com/ipfs/go-ipfs/pull/5926)) + - chore: update to Web UI v2.3.3 ([ipfs/go-ipfs#5928](https://github.com/ipfs/go-ipfs/pull/5928)) + - ls: Report real file size ([ipfs/go-ipfs#5906](https://github.com/ipfs/go-ipfs/pull/5906)) + - Improve the Filestore document ([ipfs/go-ipfs#5927](https://github.com/ipfs/go-ipfs/pull/5927)) + - [CORS] Bubble go-ipfs-cmds 2.0.10 - Updates CORS library ([ipfs/go-ipfs#5919](https://github.com/ipfs/go-ipfs/pull/5919)) + - reduce verbosity of daemon start ([ipfs/go-ipfs#5904](https://github.com/ipfs/go-ipfs/pull/5904)) + - feat: update to Web UI v2.3.2 ([ipfs/go-ipfs#5899](https://github.com/ipfs/go-ipfs/pull/5899)) + - CoreAPI: Don't panic when testing incomplete implementions ([ipfs/go-ipfs#5900](https://github.com/ipfs/go-ipfs/pull/5900)) + - gateway: fix CORs headers ([ipfs/go-ipfs#5893](https://github.com/ipfs/go-ipfs/pull/5893)) + - Local Gateway option ([ipfs/go-ipfs#5649](https://github.com/ipfs/go-ipfs/pull/5649)) + - Show hash on gateway ([ipfs/go-ipfs#5830](https://github.com/ipfs/go-ipfs/pull/5830)) + - fix: ulimit docs mistake ([ipfs/go-ipfs#5894](https://github.com/ipfs/go-ipfs/pull/5894)) + - Move coreapi tests to the interface ([ipfs/go-ipfs#5865](https://github.com/ipfs/go-ipfs/pull/5865)) + - Move checkHelptextRecursive forward a bit ([ipfs/go-ipfs#5889](https://github.com/ipfs/go-ipfs/pull/5889)) + - coreapi/unixfs: Use path instead of raw hash in AddEvent ([ipfs/go-ipfs#5854](https://github.com/ipfs/go-ipfs/pull/5854)) + - Fix name resolve --offline ([ipfs/go-ipfs#5885](https://github.com/ipfs/go-ipfs/pull/5885)) + - testing: slow down republisher sharness test ([ipfs/go-ipfs#5856](https://github.com/ipfs/go-ipfs/pull/5856)) + - docs: flesh out plugin documentation ([ipfs/go-ipfs#5876](https://github.com/ipfs/go-ipfs/pull/5876)) + - main: move InterruptHandler to util ([ipfs/go-ipfs#5872](https://github.com/ipfs/go-ipfs/pull/5872)) + - make: fix building source tarball on macos ([ipfs/go-ipfs#5860](https://github.com/ipfs/go-ipfs/pull/5860)) + - fix config data race ([ipfs/go-ipfs#5634](https://github.com/ipfs/go-ipfs/pull/5634)) + - CoreAPI: Global offline option ([ipfs/go-ipfs#5825](https://github.com/ipfs/go-ipfs/pull/5825)) + - Update for go-ipfs-files refactor ([ipfs/go-ipfs#5661](https://github.com/ipfs/go-ipfs/pull/5661)) + - feat: update Web UI to v2.3.0 ([ipfs/go-ipfs#5855](https://github.com/ipfs/go-ipfs/pull/5855)) + - Stateful plugin loading ([ipfs/go-ipfs#4806](https://github.com/ipfs/go-ipfs/pull/4806)) + - startup: always load the private key ([ipfs/go-ipfs#5844](https://github.com/ipfs/go-ipfs/pull/5844)) + - add --dereference-args parameter ([ipfs/go-ipfs#5801](https://github.com/ipfs/go-ipfs/pull/5801)) + - config: document the connection manager ([ipfs/go-ipfs#5839](https://github.com/ipfs/go-ipfs/pull/5839)) + - add pinning support to the urlstore ([ipfs/go-ipfs#5834](https://github.com/ipfs/go-ipfs/pull/5834)) + - refact(cmd/cat): remove useless code ([ipfs/go-ipfs#5836](https://github.com/ipfs/go-ipfs/pull/5836)) + - Really run as non-root user in docker container ([ipfs/go-ipfs#5048](https://github.com/ipfs/go-ipfs/pull/5048)) + - README: document guix package ([ipfs/go-ipfs#5832](https://github.com/ipfs/go-ipfs/pull/5832)) + - docs: Improve config documentation ([ipfs/go-ipfs#5829](https://github.com/ipfs/go-ipfs/pull/5829)) + - block: rm extra output ([ipfs/go-ipfs#5751](https://github.com/ipfs/go-ipfs/pull/5751)) + - merge github-issue-guide with the issue template ([ipfs/go-ipfs#4636](https://github.com/ipfs/go-ipfs/pull/4636)) + - docs: fix inconsistent capitalization of "API". ([ipfs/go-ipfs#5824](https://github.com/ipfs/go-ipfs/pull/5824)) + - Update README.md ([ipfs/go-ipfs#5818](https://github.com/ipfs/go-ipfs/pull/5818)) + - CONTRIBUTING.md link ([ipfs/go-ipfs#5811](https://github.com/ipfs/go-ipfs/pull/5811)) + - README: Update required Go version ([ipfs/go-ipfs#5813](https://github.com/ipfs/go-ipfs/pull/5813)) + - p2p: report-peer-id option for listen ([ipfs/go-ipfs#5771](https://github.com/ipfs/go-ipfs/pull/5771)) + - really fix netcat race ([ipfs/go-ipfs#5803](https://github.com/ipfs/go-ipfs/pull/5803)) + - [http_proxy_over_p2p] ([ipfs/go-ipfs#5526](https://github.com/ipfs/go-ipfs/pull/5526)) + - coreapi/pin: Use CID's directly in maps instead of converting to string ([ipfs/go-ipfs#5809](https://github.com/ipfs/go-ipfs/pull/5809)) + - Gx update go-merkledag and related deps. ([ipfs/go-ipfs#5802](https://github.com/ipfs/go-ipfs/pull/5802)) + - cmds: rm old lib ([ipfs/go-ipfs#5786](https://github.com/ipfs/go-ipfs/pull/5786)) + - badger: add truncate flag ([ipfs/go-ipfs#5625](https://github.com/ipfs/go-ipfs/pull/5625)) + - docker: allow IPFS_PROFILE to choose the profile for `ipfs init` ([ipfs/go-ipfs#5473](https://github.com/ipfs/go-ipfs/pull/5473)) + - Add --stream option to `ls` command ([ipfs/go-ipfs#5611](https://github.com/ipfs/go-ipfs/pull/5611)) + - Switch to using request.Context() ([ipfs/go-ipfs#5782](https://github.com/ipfs/go-ipfs/pull/5782)) + - Update go-ipfs-delay and assoc deps ([ipfs/go-ipfs#5762](https://github.com/ipfs/go-ipfs/pull/5762)) + - Suppress bootstrap error ([ipfs/go-ipfs#5769](https://github.com/ipfs/go-ipfs/pull/5769)) + - ISSUE_TEMPLATE: move the support question comment to the very top ([ipfs/go-ipfs#5770](https://github.com/ipfs/go-ipfs/pull/5770)) + - cmds: use MakeTypedEncoder ([ipfs/go-ipfs#5760](https://github.com/ipfs/go-ipfs/pull/5760)) + - cmds/bitswap: sort wantlist ([ipfs/go-ipfs#5759](https://github.com/ipfs/go-ipfs/pull/5759)) + - cmds/update: use new cmds lib ([ipfs/go-ipfs#5730](https://github.com/ipfs/go-ipfs/pull/5730)) + - cmds/file: use new cmds lib ([ipfs/go-ipfs#5756](https://github.com/ipfs/go-ipfs/pull/5756)) + - cmds: remove reduntant func ([ipfs/go-ipfs#5750](https://github.com/ipfs/go-ipfs/pull/5750)) + - commands/refs: use new cmds ([ipfs/go-ipfs#5679](https://github.com/ipfs/go-ipfs/pull/5679)) + - commands/pin: use new cmds lib ([ipfs/go-ipfs#5674](https://github.com/ipfs/go-ipfs/pull/5674)) + - commands/boostrap: use new cmds ([ipfs/go-ipfs#5678](https://github.com/ipfs/go-ipfs/pull/5678)) + - fix(cmd/add): progressbar output error when input is read from stdin ([ipfs/go-ipfs#5743](https://github.com/ipfs/go-ipfs/pull/5743)) + - unexport GOFLAGS ([ipfs/go-ipfs#5747](https://github.com/ipfs/go-ipfs/pull/5747)) + - refactor(cmds): use new cmds ([ipfs/go-ipfs#5659](https://github.com/ipfs/go-ipfs/pull/5659)) + - commands/filestore: use new cmds lib ([ipfs/go-ipfs#5673](https://github.com/ipfs/go-ipfs/pull/5673)) + - Fix broken links ([ipfs/go-ipfs#5721](https://github.com/ipfs/go-ipfs/pull/5721)) + - fix `ipfs help` bug #5557 ([ipfs/go-ipfs#5573](https://github.com/ipfs/go-ipfs/pull/5573)) + - commands/bitswap: use new cmds lib ([ipfs/go-ipfs#5676](https://github.com/ipfs/go-ipfs/pull/5676)) + - refact(cmd/repo): repo's sub cmds uses new cmd lib ([ipfs/go-ipfs#5677](https://github.com/ipfs/go-ipfs/pull/5677)) + - fix the maketarball script ([ipfs/go-ipfs#5718](https://github.com/ipfs/go-ipfs/pull/5718)) + - output link to WebUI on daemon startup ([ipfs/go-ipfs#5729](https://github.com/ipfs/go-ipfs/pull/5729)) + - Move persistent datastores to plugins ([ipfs/go-ipfs#5695](https://github.com/ipfs/go-ipfs/pull/5695)) + - Update IPTB test ([ipfs/go-ipfs#5636](https://github.com/ipfs/go-ipfs/pull/5636)) + - enhance(cmd/verify): add goroutine count to improve verify speed ([ipfs/go-ipfs#5710](https://github.com/ipfs/go-ipfs/pull/5710)) + - Update go-mfs and go-unixfs ([ipfs/go-ipfs#5714](https://github.com/ipfs/go-ipfs/pull/5714)) + - fix(flag/version): flag `all` should have a higher priority ([ipfs/go-ipfs#5719](https://github.com/ipfs/go-ipfs/pull/5719)) + - commands/p2p: use new cmds lib ([ipfs/go-ipfs#5672](https://github.com/ipfs/go-ipfs/pull/5672)) + - commands/dht: use new cmds lib ([ipfs/go-ipfs#5671](https://github.com/ipfs/go-ipfs/pull/5671)) + - commands/object: use new cmds ([ipfs/go-ipfs#5666](https://github.com/ipfs/go-ipfs/pull/5666)) + - commands/files: use new cmds ([ipfs/go-ipfs#5665](https://github.com/ipfs/go-ipfs/pull/5665)) + - cmds/env: add a config path helper ([ipfs/go-ipfs#5712](https://github.com/ipfs/go-ipfs/pull/5712)) +- github.com/ipfs/dir-index-html: + - show hash if given ([ipfs/dir-index-html#21](https://github.com/ipfs/dir-index-html/pull/21)) + - Add "jpeg" as an alias to "jpg". ([ipfs/dir-index-html#16](https://github.com/ipfs/dir-index-html/pull/16)) +- github.com/libp2p/go-addr-util: + - Improve test coverage ([libp2p/go-addr-util#14](https://github.com/libp2p/go-addr-util/pull/14)) +- github.com/ipfs/go-bitswap: + - providers: don't add every connected node as a provider ([ipfs/go-bitswap#59](https://github.com/ipfs/go-bitswap/pull/59)) + - refactor(GetBlocks): Merge session/non-session ([ipfs/go-bitswap#64](https://github.com/ipfs/go-bitswap/pull/64)) + - Feat: A more robust provider finder for sessions (for now) and soon for all bitswap ([ipfs/go-bitswap#60](https://github.com/ipfs/go-bitswap/pull/60)) + - fix(tests): stabilize session tests ([ipfs/go-bitswap#63](https://github.com/ipfs/go-bitswap/pull/63)) + - contexts: make sure to abort when a context is canceled ([ipfs/go-bitswap#58](https://github.com/ipfs/go-bitswap/pull/58)) + - fix(sessions): explicitly connect found peers ([ipfs/go-bitswap#56](https://github.com/ipfs/go-bitswap/pull/56)) + - Speed up sessions Round #1 ([ipfs/go-bitswap#27](https://github.com/ipfs/go-bitswap/pull/27)) + - Fix debug log formatting issues ([ipfs/go-bitswap#37](https://github.com/ipfs/go-bitswap/pull/37)) + - Feat/bandwidth limited tests ([ipfs/go-bitswap#42](https://github.com/ipfs/go-bitswap/pull/42)) + - fix(tests): stabilize unreliable session tests ([ipfs/go-bitswap#44](https://github.com/ipfs/go-bitswap/pull/44)) + - Bitswap Refactor #4: Extract session peer manager from sessions ([ipfs/go-bitswap#26](https://github.com/ipfs/go-bitswap/pull/26)) + - Bitswap Refactor #3: Extract sessions to package ([ipfs/go-bitswap#30](https://github.com/ipfs/go-bitswap/pull/30)) + - docs(comments): end comment sentences to have full-stop ([ipfs/go-bitswap#33](https://github.com/ipfs/go-bitswap/pull/33)) + - Bitswap Refactor #2: Extract PeerManager From Want Manager + Unit Test ([ipfs/go-bitswap#29](https://github.com/ipfs/go-bitswap/pull/29)) + - Bitswap Refactor #1: Session Manager & Extract Want Manager ([ipfs/go-bitswap#28](https://github.com/ipfs/go-bitswap/pull/28)) + - fix(Receiver): Ignore unwanted blocks ([ipfs/go-bitswap#24](https://github.com/ipfs/go-bitswap/pull/24)) + - feat(Benchmarks): Add real world dup blocks test ([ipfs/go-bitswap#25](https://github.com/ipfs/go-bitswap/pull/25)) + - Feat/bitswap pr improvements ([ipfs/go-bitswap#19](https://github.com/ipfs/go-bitswap/pull/19)) +- github.com/ipfs/go-blockservice: + - Don't return errors on closed exchange ([ipfs/go-blockservice#15](https://github.com/ipfs/go-blockservice/pull/15)) +- github.com/ipfs/go-cid: + - add codecs for Dash blocks, tx ([ipfs/go-cid#78](https://github.com/ipfs/go-cid/pull/78)) +- github.com/ipfs/go-cidutil: + - Fix Travis CI to run all tests. ([ipfs/go-cidutil#11](https://github.com/ipfs/go-cidutil/pull/11)) + - Changes needed for `--cid-base` option in go-ipfs (simplified vesion) ([ipfs/go-cidutil#10](https://github.com/ipfs/go-cidutil/pull/10)) + - add a utility method for sorting CID slices ([ipfs/go-cidutil#5](https://github.com/ipfs/go-cidutil/pull/5)) +- github.com/libp2p/go-conn-security: + - fix link to usage example in README ([libp2p/go-conn-security#4](https://github.com/libp2p/go-conn-security/pull/4)) +- github.com/ipfs/go-datastore: + - interfaces: make GetBacked* take a Read instead of a Datastore ([ipfs/go-datastore#115](https://github.com/ipfs/go-datastore/pull/115)) + - remove closer type assertions ([ipfs/go-datastore#112](https://github.com/ipfs/go-datastore/pull/112)) + - remove io.Closer from the transaction interface ([ipfs/go-datastore#113](https://github.com/ipfs/go-datastore/pull/113)) + - feat(datastore): expose datastore Close() ([ipfs/go-datastore#111](https://github.com/ipfs/go-datastore/pull/111)) + - query: make datastore ordering act like a user would expect ([ipfs/go-datastore#110](https://github.com/ipfs/go-datastore/pull/110)) + - delayed: implement io.Closer and export datastore type. ([ipfs/go-datastore#108](https://github.com/ipfs/go-datastore/pull/108)) + - split the datastore into a read and a write interface ([ipfs/go-datastore#107](https://github.com/ipfs/go-datastore/pull/107)) + - Describe behavior of Batching datastores ([ipfs/go-datastore#105](https://github.com/ipfs/go-datastore/pull/105)) + - handle concurrent puts/deletes in BasicBatch ([ipfs/go-datastore#103](https://github.com/ipfs/go-datastore/pull/103)) + - add a GetSize method ([ipfs/go-datastore#99](https://github.com/ipfs/go-datastore/pull/99)) +- github.com/ipfs/go-ds-badger: + - removed additional/wasteful Prefix conversion ([ipfs/go-ds-badger#45](https://github.com/ipfs/go-ds-badger/pull/45)) + - Enable Jenkins ([ipfs/go-ds-badger#35](https://github.com/ipfs/go-ds-badger/pull/35)) + - fix application or ordering for interface change ([ipfs/go-ds-badger#44](https://github.com/ipfs/go-ds-badger/pull/44)) + - Update badger ([ipfs/go-ds-badger#40](https://github.com/ipfs/go-ds-badger/pull/40)) +- github.com/ipfs/go-ds-flatfs: + - fix a goroutine leak killing the gateways ([ipfs/go-ds-flatfs#51](https://github.com/ipfs/go-ds-flatfs/pull/51)) +- github.com/ipfs/go-ds-leveldb: + - Expose Datastore type ([ipfs/go-ds-leveldb#20](https://github.com/ipfs/go-ds-leveldb/pull/20)) + - fix application or ordering for interface change ([ipfs/go-ds-leveldb#23](https://github.com/ipfs/go-ds-leveldb/pull/23)) +- github.com/ipfs/go-ipfs-cmds: + - expand on the api error ([ipfs/go-ipfs-cmds#138](https://github.com/ipfs/go-ipfs-cmds/pull/138)) + - set the connection close header if we have a body to read ([ipfs/go-ipfs-cmds#116](https://github.com/ipfs/go-ipfs-cmds/pull/116)) + - print a nicer error on timeout/cancel ([ipfs/go-ipfs-cmds#137](https://github.com/ipfs/go-ipfs-cmds/pull/137)) + - Add link traversal option ([ipfs/go-ipfs-cmds#96](https://github.com/ipfs/go-ipfs-cmds/pull/96)) + - Don't skip stdin test on Windows ([ipfs/go-ipfs-cmds#136](https://github.com/ipfs/go-ipfs-cmds/pull/136)) + - MakeTypedEncoder: accept results by pointer or value ([ipfs/go-ipfs-cmds#134](https://github.com/ipfs/go-ipfs-cmds/pull/134)) +- github.com/ipfs/go-ipfs-config: + - Gateway.NoFetch ([ipfs/go-ipfs-config#19](https://github.com/ipfs/go-ipfs-config/pull/19)) + - add a Clone function ([ipfs/go-ipfs-config#16](https://github.com/ipfs/go-ipfs-config/pull/16)) + - randomports: give user ability to init ipfs using random port for swarm. ([ipfs/go-ipfs-config#17](https://github.com/ipfs/go-ipfs-config/pull/17)) + - Allow the use of the User-Agent header ([ipfs/go-ipfs-config#15](https://github.com/ipfs/go-ipfs-config/pull/15)) + - autorelay options ([ipfs/go-ipfs-config#21](https://github.com/ipfs/go-ipfs-config/pull/21)) + - profile: add badger truncate option ([ipfs/go-ipfs-config#20](https://github.com/ipfs/go-ipfs-config/pull/20)) +- github.com/ipfs/go-ipfs-delay: + - Feat/refactor wait time ([ipfs/go-ipfs-delay#1](https://github.com/ipfs/go-ipfs-delay/pull/1)) +- github.com/ipfs/go-ipfs-files: + - multipart: fix handling of common prefixes ([ipfs/go-ipfs-files#7](https://github.com/ipfs/go-ipfs-files/pull/7)) + - create implicit directories from multipart requests ([ipfs/go-ipfs-files#6](https://github.com/ipfs/go-ipfs-files/pull/6)) + - TarWriter ([ipfs/go-ipfs-files#4](https://github.com/ipfs/go-ipfs-files/pull/4)) + - Refactor filename - file relation ([ipfs/go-ipfs-files#2](https://github.com/ipfs/go-ipfs-files/pull/2)) +- github.com/ipfs/go-ipld-cbor: + - cbor: decode undefined as null ([ipfs/go-ipld-cbor#54](https://github.com/ipfs/go-ipld-cbor/pull/54)) + - error when trying to encode an empty link ([ipfs/go-ipld-cbor#52](https://github.com/ipfs/go-ipld-cbor/pull/52)) + - test for struct with both a cid and a bigint ([ipfs/go-ipld-cbor#51](https://github.com/ipfs/go-ipld-cbor/pull/51)) +- github.com/ipfs/go-ipld-format: + - Add a DAG walker with support for IPLD `Node`s ([ipfs/go-ipld-format#39](https://github.com/ipfs/go-ipld-format/pull/39)) + - Add BufferedDAG wrapping Batch as a DAGService. ([ipfs/go-ipld-format#48](https://github.com/ipfs/go-ipld-format/pull/48)) +- github.com/ipfs/go-ipld-git: + - Fix blob marshalling ([ipfs/go-ipld-git#37](https://github.com/ipfs/go-ipld-git/pull/37)) + - Re-enable assertion on commit size -- it is correct after #31 ([ipfs/go-ipld-git#33](https://github.com/ipfs/go-ipld-git/pull/33)) + - Use OS path separator in testing, fixes #30 ([ipfs/go-ipld-git#34](https://github.com/ipfs/go-ipld-git/pull/34)) + - Use rawdata length for size, fixes #7 ([ipfs/go-ipld-git#31](https://github.com/ipfs/go-ipld-git/pull/31)) + - Cache RawData for Commit, Tag, & Tree, fixes #6 ([ipfs/go-ipld-git#28](https://github.com/ipfs/go-ipld-git/pull/28)) + - Precompute Blob CID, fixes #21 ([ipfs/go-ipld-git#27](https://github.com/ipfs/go-ipld-git/pull/27)) + - Enable Jenkins ([ipfs/go-ipld-git#29](https://github.com/ipfs/go-ipld-git/pull/29)) +- github.com/ipfs/go-ipns: + - fix community/CONTRIBUTING.md link in README.md ([ipfs/go-ipns#20](https://github.com/ipfs/go-ipns/pull/20)) + - fix typo in README.md ([ipfs/go-ipns#21](https://github.com/ipfs/go-ipns/pull/21)) + - testing: disable inline peer ID test ([ipfs/go-ipns#19](https://github.com/ipfs/go-ipns/pull/19)) +- github.com/libp2p/go-libp2p: + - Fixed race conditions in mock package mock_stream and mock_conn ([libp2p/go-libp2p#535](https://github.com/libp2p/go-libp2p/pull/535)) + - increase initial relay advertisement delay to 30s ([libp2p/go-libp2p#534](https://github.com/libp2p/go-libp2p/pull/534)) + - Use PeerRouting in autorelay to find relay peer addresses ([libp2p/go-libp2p#531](https://github.com/libp2p/go-libp2p/pull/531)) + - docs: update broken links in NEWS.md ([libp2p/go-libp2p#517](https://github.com/libp2p/go-libp2p/pull/517)) + - don't advertise the raw public address in autorelay ([libp2p/go-libp2p#511](https://github.com/libp2p/go-libp2p/pull/511)) + - mock: export ratelimiter as RateLimiter ([libp2p/go-libp2p#507](https://github.com/libp2p/go-libp2p/pull/507)) + - readme: remove duplicate repo entries in README and package-list.json ([libp2p/go-libp2p#506](https://github.com/libp2p/go-libp2p/pull/506)) + - explicit option to enable autorelay ([libp2p/go-libp2p#500](https://github.com/libp2p/go-libp2p/pull/500)) + - Add delay in initial relay advertisement to allow the dht time to bootstrap ([libp2p/go-libp2p#495](https://github.com/libp2p/go-libp2p/pull/495)) + - suppressing error msg for NoSecurity option ([libp2p/go-libp2p#498](https://github.com/libp2p/go-libp2p/pull/498)) + - pulling updates ([libp2p/go-libp2p#4](https://github.com/libp2p/go-libp2p/pull/4)) + - fix contributing link in README ([libp2p/go-libp2p#494](https://github.com/libp2p/go-libp2p/pull/494)) + - Fix badges and links on README.md ([libp2p/go-libp2p#485](https://github.com/libp2p/go-libp2p/pull/485)) + - mocknet: fix NewStream and self dials ([libp2p/go-libp2p#480](https://github.com/libp2p/go-libp2p/pull/480)) + - deflake identify test ([libp2p/go-libp2p#479](https://github.com/libp2p/go-libp2p/pull/479)) + - mocknet: use peer ID in peer address ([libp2p/go-libp2p#476](https://github.com/libp2p/go-libp2p/pull/476)) + - autorelay ([libp2p/go-libp2p#454](https://github.com/libp2p/go-libp2p/pull/454)) + - Getting updates ([libp2p/go-libp2p#3](https://github.com/libp2p/go-libp2p/pull/3)) +- github.com/libp2p/go-libp2p-autonat: + - track autonat peer addresses ([libp2p/go-libp2p-autonat#7](https://github.com/libp2p/go-libp2p-autonat/pull/7)) +- github.com/libp2p/go-libp2p-circuit: + - Don't log raw binary ([libp2p/go-libp2p-circuit#53](https://github.com/libp2p/go-libp2p-circuit/pull/53)) +- github.com/libp2p/go-libp2p-connmgr: + - Fix concurrency and silence period not being honoured ([libp2p/go-libp2p-connmgr#26](https://github.com/libp2p/go-libp2p-connmgr/pull/26)) +- github.com/libp2p/go-libp2p-crypto: + - Fix: Remove redundant Ed25519 public key (#36). ([libp2p/go-libp2p-crypto#54](https://github.com/libp2p/go-libp2p-crypto/pull/54)) + - libp2p badges, remove IPFS ([libp2p/go-libp2p-crypto#52](https://github.com/libp2p/go-libp2p-crypto/pull/52)) + - Fix broken contribute link in README ([libp2p/go-libp2p-crypto#46](https://github.com/libp2p/go-libp2p-crypto/pull/46)) + - forbid RSA keys smaller than 512 bits ([libp2p/go-libp2p-crypto#43](https://github.com/libp2p/go-libp2p-crypto/pull/43)) + - Added ECDSA; Added RSA tests; Fixed linting errors; Handling all un-handled errors ([libp2p/go-libp2p-crypto#35](https://github.com/libp2p/go-libp2p-crypto/pull/35)) + - switch to the go-crypto ed25519 implementation ([libp2p/go-libp2p-crypto#38](https://github.com/libp2p/go-libp2p-crypto/pull/38)) + - update gogo protobuf ([libp2p/go-libp2p-crypto#37](https://github.com/libp2p/go-libp2p-crypto/pull/37)) +- github.com/libp2p/go-libp2p-discovery: + - add a timeout to Provide in routing.Advertise ([libp2p/go-libp2p-discovery#12](https://github.com/libp2p/go-libp2p-discovery/pull/12)) + - correctly encode ns to CID ([libp2p/go-libp2p-discovery#11](https://github.com/libp2p/go-libp2p-discovery/pull/11)) + - use 6hrs as ttl for routing based advertisements ([libp2p/go-libp2p-discovery#8](https://github.com/libp2p/go-libp2p-discovery/pull/8)) +- github.com/libp2p/go-libp2p-host: + - Helper to get PeerInfo from Host ([libp2p/go-libp2p-host#20](https://github.com/libp2p/go-libp2p-host/pull/20)) +- github.com/libp2p/go-libp2p-kad-dht: + - Revert #236: Test go mod in travis and use major versioning in import paths ([libp2p/go-libp2p-kad-dht#259](https://github.com/libp2p/go-libp2p-kad-dht/pull/259)) + - fix tests on freebsd ([libp2p/go-libp2p-kad-dht#255](https://github.com/libp2p/go-libp2p-kad-dht/pull/255)) + - Fix "no protocol with name dnsaddr" error ([libp2p/go-libp2p-kad-dht#247](https://github.com/libp2p/go-libp2p-kad-dht/pull/247)) + - Fix a race in dial queue ([libp2p/go-libp2p-kad-dht#248](https://github.com/libp2p/go-libp2p-kad-dht/pull/248)) + - Fix races with DialQueue variables ([libp2p/go-libp2p-kad-dht#241](https://github.com/libp2p/go-libp2p-kad-dht/pull/241)) + - Fix CircleCI ([libp2p/go-libp2p-kad-dht#238](https://github.com/libp2p/go-libp2p-kad-dht/pull/238)) + - Adaptive queue for staging dials ([libp2p/go-libp2p-kad-dht#237](https://github.com/libp2p/go-libp2p-kad-dht/pull/237)) + - Add the full libp2p default bootstrap peer list ([libp2p/go-libp2p-kad-dht#226](https://github.com/libp2p/go-libp2p-kad-dht/pull/226)) + - Revert "Tidy up bootstrapping" ([libp2p/go-libp2p-kad-dht#232](https://github.com/libp2p/go-libp2p-kad-dht/pull/232)) + - Tidy up bootstrapping ([libp2p/go-libp2p-kad-dht#225](https://github.com/libp2p/go-libp2p-kad-dht/pull/225)) + - Revert "Remove signal bootstrapping" ([libp2p/go-libp2p-kad-dht#227](https://github.com/libp2p/go-libp2p-kad-dht/pull/227)) + - Remove signal bootstrapping ([libp2p/go-libp2p-kad-dht#224](https://github.com/libp2p/go-libp2p-kad-dht/pull/224)) + - fix a potential DHT query hang ([libp2p/go-libp2p-kad-dht#219](https://github.com/libp2p/go-libp2p-kad-dht/pull/219)) + - docs: duplicate pkg documentation ([libp2p/go-libp2p-kad-dht#218](https://github.com/libp2p/go-libp2p-kad-dht/pull/218)) + - tests: skip key inlining test ([libp2p/go-libp2p-kad-dht#212](https://github.com/libp2p/go-libp2p-kad-dht/pull/212)) + - Rephrase "betterPeersToQuery" method comment to be less cryptic ([libp2p/go-libp2p-kad-dht#206](https://github.com/libp2p/go-libp2p-kad-dht/pull/206)) +- github.com/libp2p/go-libp2p-loggables: + - test: add unit tests ([libp2p/go-libp2p-loggables#21](https://github.com/libp2p/go-libp2p-loggables/pull/21)) +- github.com/libp2p/go-libp2p-netutil: + - Add tests ([libp2p/go-libp2p-netutil#28](https://github.com/libp2p/go-libp2p-netutil/pull/28)) +- github.com/libp2p/go-libp2p-peer: + - fix: re-enable peer ID inlining but make it configurable ([libp2p/go-libp2p-peer#42](https://github.com/libp2p/go-libp2p-peer/pull/42)) + - Protobuf and JSON (un-)marshalling methods for peer.ID ([libp2p/go-libp2p-peer#41](https://github.com/libp2p/go-libp2p-peer/pull/41)) + - disable key inlining ([libp2p/go-libp2p-peer#40](https://github.com/libp2p/go-libp2p-peer/pull/40)) +- github.com/libp2p/go-libp2p-peerstore: + - Add unit test to verify AddAddr doesn't shorten TTL ([libp2p/go-libp2p-peerstore#52](https://github.com/libp2p/go-libp2p-peerstore/pull/52)) + - disable inline-peer id test ([libp2p/go-libp2p-peerstore#49](https://github.com/libp2p/go-libp2p-peerstore/pull/49)) + - README: Update contributing guideline linkrot. ([libp2p/go-libp2p-peerstore#48](https://github.com/libp2p/go-libp2p-peerstore/pull/48)) + - Deterministic benchmark order; Keybook interface benchmarks ([libp2p/go-libp2p-peerstore#43](https://github.com/libp2p/go-libp2p-peerstore/pull/43)) + - PeerInfo UnMarshal Error #393 ([libp2p/go-libp2p-peerstore#45](https://github.com/libp2p/go-libp2p-peerstore/pull/45)) + - fix the inline key test ([libp2p/go-libp2p-peerstore#44](https://github.com/libp2p/go-libp2p-peerstore/pull/44)) +- github.com/libp2p/go-libp2p-pubsub: + - move timecache check/update after validation ([libp2p/go-libp2p-pubsub#156](https://github.com/libp2p/go-libp2p-pubsub/pull/156)) + - fix nonsensical check ([libp2p/go-libp2p-pubsub#154](https://github.com/libp2p/go-libp2p-pubsub/pull/154)) + - Extend validator interface to include message source ([libp2p/go-libp2p-pubsub#151](https://github.com/libp2p/go-libp2p-pubsub/pull/151)) + - Implement peer blacklist ([libp2p/go-libp2p-pubsub#149](https://github.com/libp2p/go-libp2p-pubsub/pull/149)) + - make timecache duration configurable ([libp2p/go-libp2p-pubsub#148](https://github.com/libp2p/go-libp2p-pubsub/pull/148)) + - godoc is not html either ([libp2p/go-libp2p-pubsub#147](https://github.com/libp2p/go-libp2p-pubsub/pull/147)) + - godoc documentation is not markdown ([libp2p/go-libp2p-pubsub#146](https://github.com/libp2p/go-libp2p-pubsub/pull/146)) + - Add documentation for subscribe's non-instanteneous semantics ([libp2p/go-libp2p-pubsub#145](https://github.com/libp2p/go-libp2p-pubsub/pull/145)) + - Some documentation ([libp2p/go-libp2p-pubsub#140](https://github.com/libp2p/go-libp2p-pubsub/pull/140)) + - rework peer tracking logic to handle multiple connections ([libp2p/go-libp2p-pubsub#132](https://github.com/libp2p/go-libp2p-pubsub/pull/132)) +- github.com/libp2p/go-libp2p-pubsub-router: + - encode record-store keys in pubsub ([libp2p/go-libp2p-pubsub-router#17](https://github.com/libp2p/go-libp2p-pubsub-router/pull/17)) +- github.com/libp2p/go-libp2p-quic-transport: + - fix badges in README ([libp2p/go-libp2p-quic-transport#39](https://github.com/libp2p/go-libp2p-quic-transport/pull/39)) + - Fix missing transport parameter in dialed connection ([libp2p/go-libp2p-quic-transport#38](https://github.com/libp2p/go-libp2p-quic-transport/pull/38)) +- github.com/libp2p/go-libp2p-routing: + - Update the comment on IpfsRouting.Bootstrap ([libp2p/go-libp2p-routing#36](https://github.com/libp2p/go-libp2p-routing/pull/36)) +- github.com/libp2p/go-libp2p-swarm: + - Make FD limits configurable by environment property ([libp2p/go-libp2p-swarm#102](https://github.com/libp2p/go-libp2p-swarm/pull/102)) + - Fix logging race ([libp2p/go-libp2p-swarm#100](https://github.com/libp2p/go-libp2p-swarm/pull/100)) + - Add CircleCI config ([libp2p/go-libp2p-swarm#99](https://github.com/libp2p/go-libp2p-swarm/pull/99)) + - Enhance debug logging in dial limiter ([libp2p/go-libp2p-swarm#98](https://github.com/libp2p/go-libp2p-swarm/pull/98)) + - dialer: handle dial cancel and/or completion before trying new addresses ([libp2p/go-libp2p-swarm#96](https://github.com/libp2p/go-libp2p-swarm/pull/96)) + - avoid spawning goroutines for canceled dials ([libp2p/go-libp2p-swarm#95](https://github.com/libp2p/go-libp2p-swarm/pull/95)) + - warn when we encounter a useless transport ([libp2p/go-libp2p-swarm#90](https://github.com/libp2p/go-libp2p-swarm/pull/90)) +- github.com/libp2p/go-libp2p-transport: + - fix transport tests for quic ([libp2p/go-libp2p-transport#39](https://github.com/libp2p/go-libp2p-transport/pull/39)) + - fix: fully close streams before returning ([libp2p/go-libp2p-transport#37](https://github.com/libp2p/go-libp2p-transport/pull/37)) + - fix typo in README ([libp2p/go-libp2p-transport#36](https://github.com/libp2p/go-libp2p-transport/pull/36)) +- github.com/libp2p/go-libp2p-transport-upgrader: + - annotate errors ([libp2p/go-libp2p-transport-upgrader#11](https://github.com/libp2p/go-libp2p-transport-upgrader/pull/11)) +- github.com/ipfs/go-log: + - uglify the (event) logs ([ipfs/go-log#53](https://github.com/ipfs/go-log/pull/53)) + - add environment variable for writing tracing information to a file ([ipfs/go-log#52](https://github.com/ipfs/go-log/pull/52)) + - correctly display the line number when FinishWithErr fails ([ipfs/go-log#51](https://github.com/ipfs/go-log/pull/51)) +- github.com/ipfs/go-merkledag: + - Increase FetchGraphConcurrency to 32 ([ipfs/go-merkledag#29](https://github.com/ipfs/go-merkledag/pull/29)) + - Enable CI ([ipfs/go-merkledag#9](https://github.com/ipfs/go-merkledag/pull/9)) + - fix a fetch deadlock on error ([ipfs/go-merkledag#21](https://github.com/ipfs/go-merkledag/pull/21)) + - Wait for all go routines to finish before function returns ([ipfs/go-merkledag#19](https://github.com/ipfs/go-merkledag/pull/19)) +- github.com/ipfs/go-metrics-prometheus: + - use prometheus instead of gxed ([ipfs/go-metrics-prometheus#3](https://github.com/ipfs/go-metrics-prometheus/pull/3)) +- github.com/ipfs/go-mfs: + - fix(mv): dst filename error ([ipfs/go-mfs#62](https://github.com/ipfs/go-mfs/pull/62)) + - fix over-wait in WaitPub ([ipfs/go-mfs#53](https://github.com/ipfs/go-mfs/pull/53)) + - Fix/32/pr ports from go-ipfs to go-mfs ([ipfs/go-mfs#49](https://github.com/ipfs/go-mfs/pull/49)) + - remove the `fullSync` option from `updateChildEntry` ([ipfs/go-mfs#45](https://github.com/ipfs/go-mfs/pull/45)) + - Various refactorings ([ipfs/go-mfs#36](https://github.com/ipfs/go-mfs/pull/36)) + - use RW lock for the `File`'s lock ([ipfs/go-mfs#43](https://github.com/ipfs/go-mfs/pull/43)) + - add documentation links in README ([ipfs/go-mfs#41](https://github.com/ipfs/go-mfs/pull/41)) + - [WIP] documentation notes ([ipfs/go-mfs#27](https://github.com/ipfs/go-mfs/pull/27)) + - feat(inode): add inode struct ([ipfs/go-mfs#12](https://github.com/ipfs/go-mfs/pull/12)) +- github.com/libp2p/go-mplex: + - When a stream is closed, cancel pending writes ([libp2p/go-mplex#35](https://github.com/libp2p/go-mplex/pull/35)) + - make sure to but the buffer back in the pool ([libp2p/go-mplex#34](https://github.com/libp2p/go-mplex/pull/34)) + - reduce the packet count ([libp2p/go-mplex#29](https://github.com/libp2p/go-mplex/pull/29)) +- github.com/ipfs/go-path: + - fix: no components error ([ipfs/go-path#18](https://github.com/ipfs/go-path/pull/18)) + - nit: validate CIDs in IPLD paths ([ipfs/go-path#16](https://github.com/ipfs/go-path/pull/16)) +- github.com/libp2p/go-reuseport: + - Fix build on wasm ([libp2p/go-reuseport#59](https://github.com/libp2p/go-reuseport/pull/59)) + - Use Go Control API ([libp2p/go-reuseport#56](https://github.com/libp2p/go-reuseport/pull/56)) + - Support WASM ([libp2p/go-reuseport#54](https://github.com/libp2p/go-reuseport/pull/54)) +- github.com/libp2p/go-reuseport-transport: + - Update to go-reuseport 0.2.0 ([libp2p/go-reuseport-transport#6](https://github.com/libp2p/go-reuseport-transport/pull/6)) +- github.com/libp2p/go-tcp-transport: + - Deprecate IPFS_REUSEPORT, use LIBP2P_TCP_REUSEPORT ([libp2p/go-tcp-transport#27](https://github.com/libp2p/go-tcp-transport/pull/27)) +- github.com/ipfs/go-unixfs: + - unixfile: precalc dir size ([ipfs/go-unixfs#61](https://github.com/ipfs/go-unixfs/pull/61)) + - Archive refactor ([ipfs/go-unixfs#59](https://github.com/ipfs/go-unixfs/pull/59)) + - decouple the DAG traversal logic from the DAG reader (local branch) ([ipfs/go-unixfs#60](https://github.com/ipfs/go-unixfs/pull/60)) + - Unixfs: enforce refs on files when using nocopy ([ipfs/go-unixfs#56](https://github.com/ipfs/go-unixfs/pull/56)) + - Fix/handle overflow ([ipfs/go-unixfs#53](https://github.com/ipfs/go-unixfs/pull/53)) + - feat(Directory): Add EnumLinksAsync method ([ipfs/go-unixfs#39](https://github.com/ipfs/go-unixfs/pull/39)) + + + ## 0.4.18 2018-10-26 This is probably one of the largest go-ipfs releases in recent history, 3 months From eb33949135113fccb044e2117efda3a7b716a91d Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 18 Feb 2019 13:23:27 -0800 Subject: [PATCH 02/10] CHANGELOG: NoFetch doesn't _only_ serve pinned content License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20e8501b7..a18b0a20d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,8 +34,8 @@ For example: On to the gateway, there's a new `Gateway.NoFetch` option to configure the gateway to only serve locally present files. This makes it possible to run an -IPFS node as a gateway to serve content of _your_ choosing (i.e., stuff you've -pinned locally) but no other content. +IPFS node as a gateway to serve content of _your_ choosing without acting like a +public proxy. #### Adding And Pinning Content From e043d515dd690508df31f724cb1f983b7710ab82 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 18 Feb 2019 14:07:02 -0800 Subject: [PATCH 03/10] CHANGELOG: note which commands the offline flag doesn't yet support License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a18b0a20d..c131c3ecc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,10 +18,10 @@ TODO: WRITE THIS There are two new "offline" features in this release: a global `--offline` flag and an option to configure the gateway to not fetch files. -All go-ipfs commands now support the `--offline` flag. This causes IPFS to avoid +Most go-ipfs commands now support the `--offline` flag. This causes IPFS to avoid network operations when performing the requested operation. If you've ever used -the `--local` flag, the `--offline` flag is the universally supported -replacement (it works everywhere). +the `--local` flag, the `--offline` flag is the (almost) universally supported +replacement. For example: @@ -32,6 +32,9 @@ For example: * `ipfs block stat --offline Qm...` is a great way to tell if a block is locally available. +Note: It doesn't _yet_ work with the `refs`, `urlstore`, or `tar` commands +([#6002](https://github.com/ipfs/go-ipfs/issues/6002)). + On to the gateway, there's a new `Gateway.NoFetch` option to configure the gateway to only serve locally present files. This makes it possible to run an IPFS node as a gateway to serve content of _your_ choosing without acting like a From e4208fd2b24c16aa4d303a3b8728dc4ee2047a7d Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 18 Feb 2019 16:22:43 -0800 Subject: [PATCH 04/10] CHANGELOG: add some more features * AutoRelay/AutoNAt * Randomports * Hash in gateway directory listing * Badger datastore 1.0 License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c131c3ecc..cea04d75b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,49 @@ important fixes and a slew of new and improved features. Please upgrade ASAP. ### Features -#### Autorelay +#### Initializing With Random Ports -This release pulls in a new feature from libp2p land. +Go-ipfs can now be configured to listen on a random but _stable_ (across +restarts) port using the new `randomports` configuration profile. This should be +helpful when testing and/or running multiple go-ipfs instances on a single +machine. -TODO: WRITE THIS +To initialize a go-ipfs instance with a randomly chosen port, run: + +```bash +> ipfs init --profile=randomports +``` + +#### Gateway Directory Listing + +IPNS (and/or DNSLink) directory listings on the gateway, e.g. +https://ipfs.io/ipns/dist.ipfs.io/go-ipfs/, will now display the _ipfs_ hash of +the current directory. This way users can more easily create permanent links to +otherwise mutable data. + +#### AutoRelay and AutoNAT + +This release introduces two new experimental features (courtesy of libp2p): +AutoRelay and AutoNAT. + +AutoRelay is a new service that automatically chooses a public relay when it +detects that the go-ipfs node is behind a NAT. While relaying connections +through a third-party node isn't the most efficient way to route around NATs, +it's a reliable fallback. + +To enable `AutoRelay`, set the `Swarm.EnableAutoRelay` option in the config. + +AutoNAT is the service AutoRelay uses to detect if the node is behind a NAT. +It's enabled by default when you enable `AutoRelay` so you don't have to do +anything. + +In this same config section, you may also notice options like `EnableRelayHop`, +`EnableAutoNATService`, etc. You _do not_ need to enable these: + +* `EnableRelayHop` -- Allow _other_ nodes to use _your_ node as a relay + (disabled by default). +* `EnableAutoNATService` -- Help _other_ nodes detect if they're behind a NAT + (disabled by default). #### Offline Operation @@ -169,7 +207,19 @@ In the past, our first suggestion to anyone experiencing weird resource or connectivity issues was to disable `REUSEPORT` (set `IPFS_REUSEPORT` to false). This should no longer be necessary. -#### +#### Badger Datastore + +[Badger has reached 1.0][badger-release]. This release brings an audit and +numerous reliability fixes. We are now reasonably confident that badger will +become the default datastore in a future release. + +[badger-release]: https://blog.dgraph.io/post/releasing-v1.0/ + +This release also adds a new `Truncate` configuration option for the badger +datastore (enabled by default for new IPFS nodes). When enabled, badger will +_delete_ any un-synced data on start instead of simply refusing to start. This +should be safe on all filesystems where the `sync` operation is safe and removes +the need for manual intervention when restarting an IPFS node after a crash. ### Refactors and Endeavors From 06a14418b15f3a238789adc9cd058011ed502077 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 18 Feb 2019 18:56:23 -0800 Subject: [PATCH 05/10] CHANGELOG: mark 0.4.19 as unreleased License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cea04d75b..4f98602b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # go-ipfs changelog -## 0.4.19 2018-02-14 +## 0.4.19 2018-02-14 (unreleased) We're happy to announce go 0.4.19. As usual, this release contains a bunch of important fixes and a slew of new and improved features. Please upgrade ASAP. From 175e9b20d44f6e1d253bb67f5f763863f60899c9 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Tue, 19 Feb 2019 20:18:04 -0800 Subject: [PATCH 06/10] CHANGELOG: remove "as usual" License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f98602b4..57876cf66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,8 @@ ## 0.4.19 2018-02-14 (unreleased) -We're happy to announce go 0.4.19. As usual, this release contains a bunch of -important fixes and a slew of new and improved features. Please upgrade ASAP. +We're happy to announce go 0.4.19. This release contains a bunch of important +fixes and a slew of new and improved features. Please upgrade ASAP. ### Features From 0a56a4496060d227c04f04f666342351da49a00f Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Wed, 20 Feb 2019 17:35:51 -0800 Subject: [PATCH 07/10] CHANGELOG: address magik6k CR License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57876cf66..56811421d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,11 +37,10 @@ detects that the go-ipfs node is behind a NAT. While relaying connections through a third-party node isn't the most efficient way to route around NATs, it's a reliable fallback. -To enable `AutoRelay`, set the `Swarm.EnableAutoRelay` option in the config. +To enable AutoRelay, set the `Swarm.EnableAutoRelay` option in the config. -AutoNAT is the service AutoRelay uses to detect if the node is behind a NAT. -It's enabled by default when you enable `AutoRelay` so you don't have to do -anything. +AutoNAT is the service AutoRelay uses to detect if the node is behind a NAT. You +don't have to set any special config flags to enable it. In this same config section, you may also notice options like `EnableRelayHop`, `EnableAutoNATService`, etc. You _do not_ need to enable these: From e653c01371d3b47eff73bd361ff1aedcfa2f00a7 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Thu, 21 Feb 2019 00:05:01 -0800 Subject: [PATCH 08/10] CHANGELOG: add new changes since License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56811421d..032724db9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -281,7 +281,10 @@ The next steps are: ### Changelogs - github.com/ipfs/go-ipfs: - - gx: update libp2p stuff ([ipfs/go-ipfs#5997](https://github.com/ipfs/go-ipfs/pull/5997)) + - fix: return the shortest, completely resolved path in the resolve command ([ipfs/go-ipfs#5704](https://github.com/ipfs/go-ipfs/pull/5704)) + - fix a few interop test issues ([ipfs/go-ipfs#6004](https://github.com/ipfs/go-ipfs/pull/6004)) + - fix HAMT bookmark ln ([ipfs/go-ipfs#6005](https://github.com/ipfs/go-ipfs/pull/6005)) + - docs: document Gateway.NoFetch ([ipfs/go-ipfs#5999](https://github.com/ipfs/go-ipfs/pull/5999)) - Improve "name publish" ttl option documentation ([ipfs/go-ipfs#5979](https://github.com/ipfs/go-ipfs/pull/5979)) - fix(cmd/mv): dst filename error ([ipfs/go-ipfs#5964](https://github.com/ipfs/go-ipfs/pull/5964)) - coreapi: extract interface ([ipfs/go-ipfs#5978](https://github.com/ipfs/go-ipfs/pull/5978)) @@ -398,6 +401,13 @@ The next steps are: - github.com/libp2p/go-addr-util: - Improve test coverage ([libp2p/go-addr-util#14](https://github.com/libp2p/go-addr-util/pull/14)) - github.com/ipfs/go-bitswap: + - fix(bitswap): remove CancelWants function ([ipfs/go-bitswap#80](https://github.com/ipfs/go-bitswap/pull/80)) + - Avoid allocating for wantlist entries ([ipfs/go-bitswap#79](https://github.com/ipfs/go-bitswap/pull/79)) + - ci(Jenkins): remove Jenkinsfile ([ipfs/go-bitswap#83](https://github.com/ipfs/go-bitswap/pull/83)) + - More specific wantlists ([ipfs/go-bitswap#74](https://github.com/ipfs/go-bitswap/pull/74)) + - fix(wantlist): remove races on setup ([ipfs/go-bitswap#72](https://github.com/ipfs/go-bitswap/pull/72)) + - fix multiple data races ([ipfs/go-bitswap#76](https://github.com/ipfs/go-bitswap/pull/76)) + - ci: add travis ([ipfs/go-bitswap#75](https://github.com/ipfs/go-bitswap/pull/75)) - providers: don't add every connected node as a provider ([ipfs/go-bitswap#59](https://github.com/ipfs/go-bitswap/pull/59)) - refactor(GetBlocks): Merge session/non-session ([ipfs/go-bitswap#64](https://github.com/ipfs/go-bitswap/pull/64)) - Feat: A more robust provider finder for sessions (for now) and soon for all bitswap ([ipfs/go-bitswap#60](https://github.com/ipfs/go-bitswap/pull/60)) @@ -419,6 +429,9 @@ The next steps are: - github.com/ipfs/go-blockservice: - Don't return errors on closed exchange ([ipfs/go-blockservice#15](https://github.com/ipfs/go-blockservice/pull/15)) - github.com/ipfs/go-cid: + - fix inline CIDs generated by Prefix.Sum ([ipfs/go-cid#84](https://github.com/ipfs/go-cid/pull/84)) + - Let Cid implement Binary[Un]Marshaler and Text[Un]Marshaler interfaces. ([ipfs/go-cid#81](https://github.com/ipfs/go-cid/pull/81)) + - fix typo in comment ([ipfs/go-cid#80](https://github.com/ipfs/go-cid/pull/80)) - add codecs for Dash blocks, tx ([ipfs/go-cid#78](https://github.com/ipfs/go-cid/pull/78)) - github.com/ipfs/go-cidutil: - Fix Travis CI to run all tests. ([ipfs/go-cidutil#11](https://github.com/ipfs/go-cidutil/pull/11)) @@ -448,6 +461,8 @@ The next steps are: - Expose Datastore type ([ipfs/go-ds-leveldb#20](https://github.com/ipfs/go-ds-leveldb/pull/20)) - fix application or ordering for interface change ([ipfs/go-ds-leveldb#23](https://github.com/ipfs/go-ds-leveldb/pull/23)) - github.com/ipfs/go-ipfs-cmds: + - roundup of cleanup fixes ([ipfs/go-ipfs-cmds#144](https://github.com/ipfs/go-ipfs-cmds/pull/144)) + - Update cors library ([ipfs/go-ipfs-cmds#139](https://github.com/ipfs/go-ipfs-cmds/pull/139)) - expand on the api error ([ipfs/go-ipfs-cmds#138](https://github.com/ipfs/go-ipfs-cmds/pull/138)) - set the connection close header if we have a body to read ([ipfs/go-ipfs-cmds#116](https://github.com/ipfs/go-ipfs-cmds/pull/116)) - print a nicer error on timeout/cancel ([ipfs/go-ipfs-cmds#137](https://github.com/ipfs/go-ipfs-cmds/pull/137)) @@ -527,6 +542,8 @@ The next steps are: - github.com/libp2p/go-libp2p-host: - Helper to get PeerInfo from Host ([libp2p/go-libp2p-host#20](https://github.com/libp2p/go-libp2p-host/pull/20)) - github.com/libp2p/go-libp2p-kad-dht: + - Fix Bootstrap sub-queries ([libp2p/go-libp2p-kad-dht#264](https://github.com/libp2p/go-libp2p-kad-dht/pull/264)) + - dial queue: fix possible goroutine leak ([libp2p/go-libp2p-kad-dht#262](https://github.com/libp2p/go-libp2p-kad-dht/pull/262)) - Revert #236: Test go mod in travis and use major versioning in import paths ([libp2p/go-libp2p-kad-dht#259](https://github.com/libp2p/go-libp2p-kad-dht/pull/259)) - fix tests on freebsd ([libp2p/go-libp2p-kad-dht#255](https://github.com/libp2p/go-libp2p-kad-dht/pull/255)) - Fix "no protocol with name dnsaddr" error ([libp2p/go-libp2p-kad-dht#247](https://github.com/libp2p/go-libp2p-kad-dht/pull/247)) @@ -624,6 +641,11 @@ The next steps are: - Support WASM ([libp2p/go-reuseport#54](https://github.com/libp2p/go-reuseport/pull/54)) - github.com/libp2p/go-reuseport-transport: - Update to go-reuseport 0.2.0 ([libp2p/go-reuseport-transport#6](https://github.com/libp2p/go-reuseport-transport/pull/6)) +- github.com/libp2p/go-stream-muxer: + - add standard reset error ([libp2p/go-stream-muxer#23](https://github.com/libp2p/go-stream-muxer/pull/23)) + - ci: fix ([libp2p/go-stream-muxer#24](https://github.com/libp2p/go-stream-muxer/pull/24)) + - Document Reset versus Close ([libp2p/go-stream-muxer#18](https://github.com/libp2p/go-stream-muxer/pull/18)) + - WIP document Conn.Close ([libp2p/go-stream-muxer#19](https://github.com/libp2p/go-stream-muxer/pull/19)) - github.com/libp2p/go-tcp-transport: - Deprecate IPFS_REUSEPORT, use LIBP2P_TCP_REUSEPORT ([libp2p/go-tcp-transport#27](https://github.com/libp2p/go-tcp-transport/pull/27)) - github.com/ipfs/go-unixfs: From 6a8766629ea6bb79c7f9a00ce0fd9367633d87ec Mon Sep 17 00:00:00 2001 From: MollyM Date: Fri, 22 Feb 2019 19:23:31 -0800 Subject: [PATCH 09/10] =?UTF-8?q?=F0=9F=99=8C=20=F0=9F=91=8F=F0=9F=92=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 032724db9..13dad84cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,14 @@ ## 0.4.19 2018-02-14 (unreleased) We're happy to announce go 0.4.19. This release contains a bunch of important -fixes and a slew of new and improved features. Please upgrade ASAP. +fixes and a slew of new and improved features. Get pumped and upgrade ASAP to benefit from all the new goodies! 🎁 ### Features -#### Initializing With Random Ports +#### 🔌 Initializing With Random Ports -Go-ipfs can now be configured to listen on a random but _stable_ (across -restarts) port using the new `randomports` configuration profile. This should be +Go-ipfs can now be configured to listen on a random but _stable_ port (across +restarts) using the new `randomports` configuration profile. This should be helpful when testing and/or running multiple go-ipfs instances on a single machine. @@ -20,14 +20,14 @@ To initialize a go-ipfs instance with a randomly chosen port, run: > ipfs init --profile=randomports ``` -#### Gateway Directory Listing +#### 👂 Gateway Directory Listing IPNS (and/or DNSLink) directory listings on the gateway, e.g. https://ipfs.io/ipns/dist.ipfs.io/go-ipfs/, will now display the _ipfs_ hash of the current directory. This way users can more easily create permanent links to otherwise mutable data. -#### AutoRelay and AutoNAT +#### 📡 AutoRelay and AutoNAT This release introduces two new experimental features (courtesy of libp2p): AutoRelay and AutoNAT. @@ -50,7 +50,7 @@ In this same config section, you may also notice options like `EnableRelayHop`, * `EnableAutoNATService` -- Help _other_ nodes detect if they're behind a NAT (disabled by default). -#### Offline Operation +#### 📵 Offline Operation There are two new "offline" features in this release: a global `--offline` flag and an option to configure the gateway to not fetch files. @@ -75,9 +75,9 @@ Note: It doesn't _yet_ work with the `refs`, `urlstore`, or `tar` commands On to the gateway, there's a new `Gateway.NoFetch` option to configure the gateway to only serve locally present files. This makes it possible to run an IPFS node as a gateway to serve content of _your_ choosing without acting like a -public proxy. +public proxy. 🤫 -#### Adding And Pinning Content +#### 📍 Adding And Pinning Content There's a new `--pin` flag for both `ipfs block put` and `ipfs urlstore add` to match the `--pin` flag in `ipfs add`. This allows one to atomically add and pin @@ -92,7 +92,7 @@ pinning content after adding it, it isn't pinned and running the garbage collector will delete it. While technically documented in the `ipfs urlstore add` helptext, this behavior was non-obvious and bears mentioning. -#### File Listing +#### 🗂 File Listing The `ipfs ls` command has two significant changes this release: it reports _file_ sizes instead of _dag_ sizes and has gained a new `--stream` flag. @@ -129,7 +129,7 @@ total 28 ``` This is now no longer the case. `ipfs ls` and `ls -l` now return the _same_ -sizes. +sizes. 🙌 Second up, `ipfs ls` now has a new `--stream` flag. In IPFS, very large directories (e.g., Wikipedia) are split up into multiple chunks (shards) as @@ -143,9 +143,9 @@ However, the new `--stream` flag makes it possible to stream a directory listing as new chunks are fetched from the network. To test this, you can run `ipfs ls --stream --size=false --resolve-type=false /ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki`. You probably won't -want to wait for that command to finish, Wikipedia has a _lot_ of entries. +want to wait for that command to finish, Wikipedia has a _lot_ of entries. 😉 -#### HTTP Proxy +#### 🔁 HTTP Proxy This release sees a new (experimental) feature contributed by our friends at [Peergos](https://peergos.org): HTTP proxy over libp2p. When enabled, the local @@ -159,7 +159,7 @@ to other go-ipfs nodes via their gateways. For details, check out the This release introduces quite a few performance/reliability improvements and, as usual, fixes several memory leaks. Below is a non-exhaustive list of noticeable changes. -#### DHT +#### 📞 DHT This release includes an important DHT fix that should significantly: @@ -172,7 +172,7 @@ entire IPFS network. Yikes! Relevant PR: https://github.com/libp2p/go-libp2p-kad-dht/pull/237 -#### Bitswap +#### 🕸 Bitswap Bitswap sessions have improved and are now used for _all_ requests. Sessions allow us to group related content and ask peers most likely to _have_ the @@ -189,13 +189,13 @@ us two significant benefits: peers). We had to do this because we had to assume that _most_ peers didn't have the requested block. -#### Pubsub +#### ‼️ Pubsub This release includes some significant reliability improvements in pubsub subscription handling. If you've previously had issues with connected pubsub peers _not_ seeing each-other's messages, please upgrade ASAP. -#### Reuseport +#### ♻️ Reuseport In this release, we've rewritten our previously error-prone `go-reuseport` library to _not_ duplicate a significant portion of Go's low-level networking @@ -206,11 +206,11 @@ In the past, our first suggestion to anyone experiencing weird resource or connectivity issues was to disable `REUSEPORT` (set `IPFS_REUSEPORT` to false). This should no longer be necessary. -#### Badger Datastore +#### 🐺 Badger Datastore [Badger has reached 1.0][badger-release]. This release brings an audit and numerous reliability fixes. We are now reasonably confident that badger will -become the default datastore in a future release. +become the default datastore in a future release. 👍 [badger-release]: https://blog.dgraph.io/post/releasing-v1.0/ @@ -222,12 +222,12 @@ the need for manual intervention when restarting an IPFS node after a crash. ### Refactors and Endeavors -#### Commands Library +#### 🕹 Commands Library The legacy commands library shim has now been completely removed. This won't mean much for many users but the go-ipfs team is happy to have this behind them. -#### Base32 CIDs +#### 🌐 Base32 CIDs This release can now encode CIDs in responses in bases other than base58. This is primarily useful for web-browser integration as it allows us to (a) encode @@ -245,7 +245,7 @@ Specifically, this release adds two flags: changes the _binary_ representation of the CIDs (which could have unintended consequences). -#### CoreAPI +#### 🎛 CoreAPI The work on the CoreAPI refactor ([ipfs/go-ipfs#4498][]) has progressed leaps and bounds this release. The CoreAPI is a comprehensive programmatic interface From bc34780abf4193f8e196a6e64db05aa967fd59f0 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Fri, 22 Feb 2019 20:48:41 -0700 Subject: [PATCH 10/10] CHANGELOG: add in missing word License: MIT Signed-off-by: Steven Allen --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13dad84cc..fdb87c077 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -149,7 +149,7 @@ want to wait for that command to finish, Wikipedia has a _lot_ of entries. 😉 This release sees a new (experimental) feature contributed by our friends at [Peergos](https://peergos.org): HTTP proxy over libp2p. When enabled, the local -gateway can act as an HTTP proxy and forward HTTP requests libp2p peers. When +gateway can act as an HTTP proxy and forward HTTP requests to libp2p peers. When combined with the `ipfs p2p` command, users can use this to expose HTTP services to other go-ipfs nodes via their gateways. For details, check out the [documentation](https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#p2p-http-proxy).