go-ipfs 0.4.10 released

by Jeromy Johnson on 2017-06-28

Yesterday was the 3rd birthday of go-ipfs. To celebrate, we would like to share some virtual cake 🎂 with ipfs users and contributors from all over the world, and also announce the release of go-ipfs 0.4.10.

go-ipfs 0.4.10 is a patch release that contains several exciting new features, bugfixes and general improvements. This includes new commands, easier corruption recovery, and a generally cleaner codebase.

The ipfs pin command has two new subcommands, verify and update. ipfs pin verify is used to scan the repo for pinned object graphs and check their integrity. Any issues are reported back with helpful error text to make error recovery simpler. This subcommand was added to help recover from datastore corruptions, particularly if using the experimental filestore and accidentally deleting tracked files.

ipfs pin update was added to make the task of keeping a large, frequently changing object graph pinned. Previously users had to call ipfs pin rm on the old pin, and ipfs pin add on the new one. The ‘new’ ipfs pin add call would be very expensive as it would need to verify the entirety of the graph again. The ipfs pin update command takes shortcuts, portions of the graph that were covered under the old pin are assumed to be fine, and the command skips checking them.

Next up, we have finally implemented an ipfs shutdown command so users can shut down their ipfs daemons via the API. This is especially useful on platforms that make it difficult to control processes (Android, for example), and is also useful when needing to shut down a node remotely and you do not have access to the machine itself.

ipfs add has gained a new flag; the --hash flag allows you to select which hash function to use and we have given it the ability to select blake2b-256. This pushes us one step closer to shifting over to using blake2b as the default. Blake2b is significantly faster than sha2-256, and also is conjectured to provide superior security.

We have also finally implemented a very early (and experimental) ipfs p2p. This command and its subcommands will allow you to open up arbitrary streams to other ipfs peers through libp2p. The interfaces are a little bit clunky right now, but shouldn’t get in the way of anyone wanting to try building a fully peer to peer application on top of go-ipfs and libp2p. For more info on this command, to ask questions, or to provide feedback, head over to the feedback issue for the command.

A few other subcommands and flags were added around the API, as well as many other requested improvements. See below for the full list of changes.

If you have questions or run into any issues, please post in the IPFS Discussion and Support Forum’s go-ipfs 0.4.10 release thread. For bugs, please open an issue in ipfs/go-ipfs/issues.