|
1 | 1 | # go-ipfs changelog
|
2 | 2 |
|
| 3 | +### 0.4.11-rc1 2017-09-14 |
| 4 | + |
| 5 | +Ipfs 0.4.11 is a larger release that brings many long-awaited features and |
| 6 | +performance improvements. These include new datastore options, more efficient |
| 7 | +bitswap transfers, circuit relay support, ipld plugins and more! Take a look |
| 8 | +at the full changelog below for a detailed list of every change. |
| 9 | + |
| 10 | +The ipfs datastore has, until now, been a combination of leveldb and a custom |
| 11 | +git-like storage backend called 'flatfs'. This works well enough for the |
| 12 | +average user, but different ipfs usecases demand different backend |
| 13 | +configurations. To address this, we have changed the configuration file format |
| 14 | +for datastores to be a modular way of specifying exactly how you want the |
| 15 | +datastore to be structured. You will now be able to configure ipfs to use |
| 16 | +flatfs, leveldb, badger, an in-memory datastore, and more to suit your needs. |
| 17 | +See the new [datastore |
| 18 | +documentation](https://github.com/ipfs/go-ipfs/blob/master/docs/datastores.md) |
| 19 | +for more information. |
| 20 | + |
| 21 | +Bitswap received some much needed attention during this release cycle. The |
| 22 | +concept of 'Bitswap Sessions' allows bitswap to associate requests for |
| 23 | +different blocks to the same underlying session, and from that infer better |
| 24 | +ways of requesting that data. In more concrete terms, parts of the ipfs |
| 25 | +codebase that take advantage of sessions (currently, only `ipfs pin add`) will |
| 26 | +cause much less extra traffic than before. This is done by making optimistic |
| 27 | +guesses about which nodes might be providing given blocks and not sending |
| 28 | +wantlist updates to every connected bitswap partner, as well as searching the |
| 29 | +DHT for providers less frequently. In future releases we will migrate over more |
| 30 | +ipfs commands to take advantage of bitswap sessions. As nodes update to this |
| 31 | +and future versions, expect to see idle bandwidth usage on the ipfs network |
| 32 | +go down noticably. |
| 33 | + |
| 34 | +It is often said that NAT traversal is the hardest problem in peer to peer |
| 35 | +technology, we tend to agree with this. In an effort to provide a more |
| 36 | +ubiquitous p2p mesh, we have implemented a relay mechanism that allows willing |
| 37 | +peers to relay traffic for other peers who might not otherwise be able to |
| 38 | +communicate with each other. This feature is still pretty early, and currently |
| 39 | +users have to manually connect through a relay. The next step in this endeavour |
| 40 | +is automatic relaying, and research for this is currently in progress. We |
| 41 | +expect that when it lands, it will improve the perceived performance of ipfs by |
| 42 | +spending less time attempting connections to hard to reach nodes. A short guide |
| 43 | +on using the circuit relay feature can be found |
| 44 | +[here](https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#circuit-relay). |
| 45 | + |
| 46 | +The last feature we want to highlight (but by no means the last feature in this |
| 47 | +release) is our new plugin system. There are many different workflows and |
| 48 | +usecases that ipfs should be able to support, but not everyone wants to be able |
| 49 | +to use every feature. We could simply merge in all these features, but that |
| 50 | +causes problems for several reasons: first off, the size of the ipfs binary |
| 51 | +starts to get very large very quickly. Second, each of these different pieces |
| 52 | +needs to be maintained and updated independently, which would cause significant |
| 53 | +churn in the codebase. To address this, we have come up with a system that |
| 54 | +allows users to install plugins to the vanilla ipfs daemon that augment its |
| 55 | +capabilities. The first of these plugins are a [git |
| 56 | +plugin](https://github.com/ipfs/go-ipfs/blob/master/plugin/plugins/git/git.go) |
| 57 | +that allows ipfs to natively address git objects and an [ethereum |
| 58 | +plugin](https://github.com/ipfs/go-ipld-eth) that lets ipfs ingest and operate |
| 59 | +on all ethereum blockchain data. Soon to come are plugins for the bitcoin and |
| 60 | +zcash data formats. In the future, we will be adding plugins for other things |
| 61 | +like datastore backends and specialized libp2p network transports. |
| 62 | + |
| 63 | +In order to simplify its integration with fs-repo-migrations, we've switched |
| 64 | +the ipfs/go-ipfs docker image from a musl base to a glibc base. For most users |
| 65 | +this will not be noticable, but if you've been building your own images based |
| 66 | +off this image, you'll have to update your dockerfile. We recommend a |
| 67 | +multi-stage dockerfile, where the build stage is based off of a regular Debian or |
| 68 | +other glibc-based image, and the assembly stage is based off of the ipfs/go-ipfs |
| 69 | +image, and you copy build artifacts from the build stage to the assembly |
| 70 | +stage. Note, if you are using the docker image and see a deprecation message, |
| 71 | +please update your usage. We will stop supporting the old method of starting |
| 72 | +the dockerfile in the next release. |
| 73 | + |
| 74 | +Finally, I would like to thank all of our contributors, users, supporters, and |
| 75 | +friends for helping us along the way. Ipfs would not be where it is without |
| 76 | +you. |
| 77 | + |
| 78 | + |
| 79 | +- Features |
| 80 | + - Add `--pin` option to `ipfs dag put` ([ipfs/go-ipfs#4004](https://github.com/ipfs/go-ipfs/pull/4004)) |
| 81 | + - Add `--pin` option to `ipfs object put` ([ipfs/go-ipfs#4095](https://github.com/ipfs/go-ipfs/pull/4095)) |
| 82 | + - Implement `--profile` option on `ipfs init` ([ipfs/go-ipfs#4001](https://github.com/ipfs/go-ipfs/pull/4001)) |
| 83 | + - Add CID Codecs to `ipfs block put` ([ipfs/go-ipfs#4022](https://github.com/ipfs/go-ipfs/pull/4022)) |
| 84 | + - Bitswap sessions ([ipfs/go-ipfs#3867](https://github.com/ipfs/go-ipfs/pull/3867)) |
| 85 | + - Create plugin API and loader, add ipld-git plugin ([ipfs/go-ipfs#4033](https://github.com/ipfs/go-ipfs/pull/4033)) |
| 86 | + - Make announced swarm addresses configurable ([ipfs/go-ipfs#3948](https://github.com/ipfs/go-ipfs/pull/3948)) |
| 87 | + - Reprovider strategies ([ipfs/go-ipfs#4113](https://github.com/ipfs/go-ipfs/pull/4113)) |
| 88 | + - Circuit Relay integration ([ipfs/go-ipfs#4091](https://github.com/ipfs/go-ipfs/pull/4091)) |
| 89 | + - More configurable datastore configs ([ipfs/go-ipfs#3575](https://github.com/ipfs/go-ipfs/pull/3575)) |
| 90 | + - Add experimental support for badger datastore ([ipfs/go-ipfs#4007](https://github.com/ipfs/go-ipfs/pull/4007)) |
| 91 | +- Improvements |
| 92 | + - Add better support for Raw Nodes in MFS and elsewhere ([ipfs/go-ipfs#3996](https://github.com/ipfs/go-ipfs/pull/3996)) |
| 93 | + - Added file size to response of `ipfs add` command ([ipfs/go-ipfs#4082](https://github.com/ipfs/go-ipfs/pull/4082)) |
| 94 | + - Add /dnsaddr bootstrap nodes ([ipfs/go-ipfs#4127](https://github.com/ipfs/go-ipfs/pull/4127)) |
| 95 | + - Do not publish public keys extractable from ID ([ipfs/go-ipfs#4020](https://github.com/ipfs/go-ipfs/pull/4020)) |
| 96 | +- Documentation |
| 97 | + - Adding documentation that PubSub Sub can be encoded. ([ipfs/go-ipfs#3909](https://github.com/ipfs/go-ipfs/pull/3909)) |
| 98 | + - Add Comms items from js-ipfs, including blog ([ipfs/go-ipfs#3936](https://github.com/ipfs/go-ipfs/pull/3936)) |
| 99 | + - Add Developer Certificate of Origin ([ipfs/go-ipfs#4006](https://github.com/ipfs/go-ipfs/pull/4006)) |
| 100 | + - Add `transports.md` document ([ipfs/go-ipfs#4034](https://github.com/ipfs/go-ipfs/pull/4034)) |
| 101 | + - Add `experimental-features.md` document ([ipfs/go-ipfs#4036](https://github.com/ipfs/go-ipfs/pull/4036)) |
| 102 | + - Update release docs ([ipfs/go-ipfs#4165](https://github.com/ipfs/go-ipfs/pull/4165)) |
| 103 | + - Add documentation for datastore configs ([ipfs/go-ipfs#4223](https://github.com/ipfs/go-ipfs/pull/4223)) |
| 104 | + - General update and clean-up of docs ([ipfs/go-ipfs#4222](https://github.com/ipfs/go-ipfs/pull/4222)) |
| 105 | +- Bugfixes |
| 106 | + - Fix shutdown check in t0023 ([ipfs/go-ipfs#3969](https://github.com/ipfs/go-ipfs/pull/3969)) |
| 107 | + - Fix pinning of unixfs sharded directories ([ipfs/go-ipfs#3975](https://github.com/ipfs/go-ipfs/pull/3975)) |
| 108 | + - Show escaped url in gateway 404 message ([ipfs/go-ipfs#4005](https://github.com/ipfs/go-ipfs/pull/4005)) |
| 109 | + - Fix early opening of bitswap message sender ([ipfs/go-ipfs#4069](https://github.com/ipfs/go-ipfs/pull/4069)) |
| 110 | + - Fix determination of 'root' node in dag put ([ipfs/go-ipfs#4072](https://github.com/ipfs/go-ipfs/pull/4072)) |
| 111 | + - Fix bad multipart message panic in gateway ([ipfs/go-ipfs#4053](https://github.com/ipfs/go-ipfs/pull/4053)) |
| 112 | + - Add blocks to the blockstore before returning them from blockservice sessions ([ipfs/go-ipfs#4169](https://github.com/ipfs/go-ipfs/pull/4169)) |
| 113 | + - Various fixes for /ipfs fuse code ([ipfs/go-ipfs#4194](https://github.com/ipfs/go-ipfs/pull/4194)) |
| 114 | +- General Changes and Refactorings |
| 115 | + - Require go 1.8 ([ipfs/go-ipfs#4044](https://github.com/ipfs/go-ipfs/pull/4044)) |
| 116 | + - Change IPFS to use the new pluggable Block to IPLD decoding framework. ([ipfs/go-ipfs#4060](https://github.com/ipfs/go-ipfs/pull/4060)) |
| 117 | + - Remove tour command from ipfs ([ipfs/go-ipfs#4123](https://github.com/ipfs/go-ipfs/pull/4123)) |
| 118 | + - Add support for Go 1.9 ([ipfs/go-ipfs#4156](https://github.com/ipfs/go-ipfs/pull/4156)) |
| 119 | + - Remove some dead code ([ipfs/go-ipfs#4204](https://github.com/ipfs/go-ipfs/pull/4204)) |
| 120 | + - Switch docker image from musl to glibc ([ipfs/go-ipfs#4219](https://github.com/ipfs/go-ipfs/pull/4219)) |
| 121 | + |
3 | 122 | ### 0.4.10 - 2017-06-27
|
4 | 123 |
|
5 | 124 | Ipfs 0.4.10 is a patch release that contains several exciting new features,
|
@@ -60,7 +179,7 @@ other requested improvements. See below for the full list of changes.
|
60 | 179 | - Add 'ipfs dht findprovs --num-providers' to allow choosing number of providers to find ([ipfs/go-ipfs#3966](https://github.com/ipfs/go-ipfs/pull/3966))
|
61 | 180 | - Make sure all keystore keys get republished ([ipfs/go-ipfs#3951](https://github.com/ipfs/go-ipfs/pull/3951))
|
62 | 181 | - Documentation
|
63 |
| - - Adding documentation on PubSub encodedings ([ipfs/go-ipfs#3909](https://github.com/ipfs/go-ipfs/pull/3909)) |
| 182 | + - Adding documentation on PubSub encodings ([ipfs/go-ipfs#3909](https://github.com/ipfs/go-ipfs/pull/3909)) |
64 | 183 | - Change 'neccessary' to 'necessary' ([ipfs/go-ipfs#3941](https://github.com/ipfs/go-ipfs/pull/3941))
|
65 | 184 | - README.md: add Nix to the linux package managers ([ipfs/go-ipfs#3939](https://github.com/ipfs/go-ipfs/pull/3939))
|
66 | 185 | - More verbose errors in filestore ([ipfs/go-ipfs#3964](https://github.com/ipfs/go-ipfs/pull/3964))
|
|
0 commit comments