Go IPFS v0.4.15 Release Notes
Release Date: 2018-05-09 // almost 6 years ago-
🚀 This release is significantly smaller than the last as much of the work on 🔀 improving our datastores, and other libraries libp2p has yet to be merged. However, it still includes many welcome improvements.
🚀 As with 0.4.12 and 0.4.14 (0.4.13 was a patch), this release has a negative diff-stat. Unfortunately, much of this code isn't actually going away but at 🚚 least it's being moved out into separate repositories.
🚀 Much of the work that made it into this release is under the hood. We've cleaned 📦 up some code, extracted several packages into their own repositories, and made some long neglected optimizations (e.g., handling of sharded directories). ➕ Additionally, this release includes a bunch of tests for our CLI commands that 🚀 should help us avoid some of the issues we've seen in the past few releases.
🚀 More visibly, thanks to @djdv's efforts, this release includes some significant 🚀 Windows improvements (with more on the way). Specifically, this release includes 👍 better handling of repo lockfiles (no more
ipfs repo fsck
), stdin command-line 👌 support, and, last but not least, IPFS no longer writes random files with scary 🏁 garbage in the drive root. To read more about future windows improvements, take 🏁 a look at this blog post.👍 To better support low-power devices, we've added a low-power config profile. This can be enabled when initializing a repo by running
ipfs init
with the--profile=lowpower
flag or later by runningipfs config profile apply lowpower
.🚀 Finally, with this release we have begun distributing self-contained source archives of go-ipfs and its dependencies. This should be a welcome improvement 📦 for both packagers and those living in countries with harmonized internet access.
🔋 Features
- Add options for record count and timeout for resolving DHT paths (ipfs/go-ipfs#4733)
- Add low power init profile (ipfs/go-ipfs#4154)
- Add Opentracing plugin support (ipfs/go-ipfs#4506)
- Add make target to build source tarballs (ipfs/go-ipfs#4920)
👌 Improvements
- Add BlockedFetched/Added/Removed events to Blockservice (ipfs/go-ipfs#4649)
- Improve performance of HAMT code (ipfs/go-ipfs#4889)
- Avoid unnecessarily resolving child nodes when listing a sharded directory (ipfs/go-ipfs#4884)
- Tar writer now supports sharded ipfs directories (ipfs/go-ipfs#4873)
- Infer type from CID when possible in
ipfs ls
(ipfs/go-ipfs#4890) - Deduplicate keys in GetMany (ipfs/go-ipfs#4888)
📚 Documentation
- Fix spelling of retrieval (ipfs/go-ipfs#4819)
- Update broken links (ipfs/go-ipfs#4798)
- Remove roadmap.md (ipfs/go-ipfs#4834)
- Remove link to IPFS paper in contribute.md (ipfs/go-ipfs#4812)
- Fix broken todo link in readme.md (ipfs/go-ipfs#4865)
- Document ipns pubsub (ipfs/go-ipfs#4903)
- Fix missing profile docs (ipfs/go-ipfs#4846)
- Fix a few typos (ipfs/go-ipfs#4835)
- Fix typo in fsrepo error message (ipfs/go-ipfs#4933)
- Remove go-ipfs version from issue template (ipfs/go-ipfs#4943)
- Add docs for --profile=lowpower (ipfs/go-ipfs#4970)
- Improve Windows build documentation (ipfs/go-ipfs#4691)
🛠 Bugfixes
- Check CIDs in base case when diffing nodes (ipfs/go-ipfs#4767)
- Support for CIDv1 with custom mhtype in
ipfs block put
(ipfs/go-ipfs#4563) - Clean path in DagArchive (ipfs/go-ipfs#4743)
- Set the prefix for MFS root in
ipfs add --hash-only
(ipfs/go-ipfs#4755) - Fix get output path (ipfs/go-ipfs#4809)
- Fix incorrect Read calls (ipfs/go-ipfs#4792)
- Use prefix in bootstrapWritePeers (ipfs/go-ipfs#4832)
- Fix mfs Directory.Path not working (ipfs/go-ipfs#4844)
- Remove header in
ipfs stats bw
if not polling (ipfs/go-ipfs#4856) - Match Go's GOPATH defaults behaviour in build scripts (ipfs/go-ipfs#4678)
- Fix default-net profile not reverting bootstrap config (ipfs/go-ipfs#4845)
- Fix excess goroutines in bitswap caused by insecure CIDs (ipfs/go-ipfs#4946)
🔨 General Changes and Refactorings
- Refactor trickle DAG builder (ipfs/go-ipfs#4730)
- Split the coreapi interface into multiple files (ipfs/go-ipfs#4802)
- Make
ipfs init
command use new cmds lib (ipfs/go-ipfs#4732) - Extract thirdparty/tar package (ipfs/go-ipfs#4857)
- Reduce log level when for disconnected peers to info (ipfs/go-ipfs#4811)
- Only visit nodes in EnumerateChildrenAsync when asked (ipfs/go-ipfs#4885)
- Refactor coreapi options (ipfs/go-ipfs#4807)
- Fix error style for most errors (ipfs/go-ipfs#4829)
- Ensure
--help
always works, even with /dev/null stdin (ipfs/go-ipfs#4849) - Deduplicate AddNodeLinkClean into AddNodeLink (ipfs/go-ipfs#4940)
- Remove some dead code (ipfs/go-ipfs#4833)
- Remove unused imports (ipfs/go-ipfs#4955)
- Fix go vet warnings (ipfs/go-ipfs#4859)
✅ Testing
- Generate JUnit test reports for sharness tests (ipfs/go-ipfs#4530)
- Fix t0063-daemon-init.sh by adding test profile to daemon (ipfs/go-ipfs#4816)
- Remove circular dependencies in merkledag package tests (ipfs/go-ipfs#4704)
- Check that all the commands fail when passed a bad flag (ipfs/go-ipfs#4848)
- Allow for some small margin of code coverage dropping on commit (ipfs/go-ipfs#4867)
- Add confirmation to archive-branches script (ipfs/go-ipfs#4797)
Dependencies
- Update lock package (ipfs/go-ipfs#4855)
- Update to latest go-datastore. Remove thirdparty/datastore2 (ipfs/go-ipfs#4742)
- Extract fs lock into go-fs-lock (ipfs/go-ipfs#4631)
- Extract: exchange/interface.go, blocks/blocksutil, exchange/offline (ipfs/go-ipfs#4912)
- Remove unused lock dep (ipfs/go-ipfs#4971)
- Update iptb (ipfs/go-ipfs#4965)
- Update go-ipfs-cmds to fix stdin on windows (ipfs/go-ipfs#4975)
- Update go-ds-flatfs to fix windows corruption issue (ipfs/go-ipfs#4872)