Go IPFS v0.4.14 Release Notes

Release Date: 2018-03-22 // about 6 years ago
  • ๐Ÿ›  Ipfs 0.4.14 is a big release with a large number of improvements and bugfixes. ๐Ÿš€ It is also the first release of 2018, and our first release in over three ๐Ÿš€ months. The release took longer than expected due to our refactoring and ๐Ÿ”จ extracting of our commands library. This refactor had two stages. The first ๐Ÿ”จ round of the refactor disentangled the commands code from core ipfs code, ๐Ÿ‘ allowing us to move it out into a separate repository. The code was previously very entangled with the go-ipfs codebase and not usable for other projects. ๐Ÿ”จ The second round of the refactor had the goal of fixing several major issues around streaming outputs, progress bars, and error handling. It also paved the way for us to more easily provide an API over other transports, such as websockets and unix domain sockets. It took a while to flush out all the kinks on such a massive change. We're pretty sure we've got most of them, but if you ๐Ÿ”” notice anything weird, please let us know.

    Beyond that, we've added a new experimental way to use IPNS. With the new โšก๏ธ pubsub IPNS resolver and publisher, you can subscribe to updates of an IPNS entry, and the owner can publish out changes in real time. With this, IPNS can become nearly instantaneous. To make use of this, simply start your ipfs daemon with the --enable-namesys-pubsub option, and all IPNS resolution and publishing will use pubsub. Note that resolving an IPNS name via pubsub without someone publishing it via pubsub will result in a fallback to using the DHT. Please give this a try and let us know how it goes!

    ๐Ÿš€ Memory and CPU usage should see a noticeable improvement in this release. We have spent considerable time fixing excess memory usage throughout the codebase ๐Ÿ“Œ and down into libp2p. Fixes in peer tracking, bitswap allocation, pinning, and many other places have brought down both peak and average memory usage. An โฌ†๏ธ upgraded hashing library, base58 encoding library, and improved allocation ๐Ÿ‘€ patterns all contribute to overall lower CPU usage across the board. See the full changelist below for more memory and CPU usage improvements.

    ๐Ÿš€ This release also brings the beginning of the ipfs 'Core API'. Once finished, the Core API will be the primary way to interact with go-ipfs using go. Both embedded nodes and nodes accessed over the http API will have the same ๐Ÿ“š interface. Stay tuned for future updates and documentation.

    ๐Ÿš€ These are only a sampling of the changes that made it into this release, the full list (almost 100 PRs!) is below.

    ๐Ÿš€ Finally, I'd like to thank everyone who contributed to this release, whether you're just contributing a typo fix or driving new features. We are really grateful to everyone who has spent their their time pushing ipfs forward.

    ๐Ÿ”’ SECURITY NOTE:

    ๐Ÿš€ This release of ipfs disallows the usage of insecure hash functions and lengths. Ipfs does not create these insecure objects for any purpose, but it did allow manually creating them and fetching them from other peers. If you currently have objects using insecure hashes in your local ipfs repo, please โœ‚ remove them before updating.

    ๐Ÿ”„ Changes from rc2 to rc3

    ๐Ÿ”„ Changes from rc1 to rc2