Changelog History
Page 6
-
v0.4.13 Changes
November 16, 2017๐ Ipfs 0.4.13 is a patch release that fixes two high priority issues that were ๐ discovered in the 0.4.12 release.
๐ Bugfixes:
- Fix periodic bitswap deadlock (ipfs/go-ipfs#4386)
- Fix badgerds crash on startup (ipfs/go-ipfs#4384)
-
v0.4.12 Changes
November 09, 2017๐ Ipfs 0.4.12 brings with it many important fixes for the huge spike in network ๐ size we've seen this past month. These changes include the Connection Manager, ๐ faster batching in
ipfs add
, libp2p fixes that reduce CPU usage, and a bunch ๐ of new documentation.๐ The most critical change is the 'Connection Manager': it allows an ipfs node to 0๏ธโฃ maintain a limited set of connections to other peers in the network. By default (and with no config changes required by the user), ipfs nodes will now try to maintain between 600 and 900 open connections. These limits are still likely ๐ higher than needed, and future releases may lower the default recommendation, but for now we want to make changes gradually. The rationale for this selection of numbers is as follows:
- The DHT routing table for a large network may rise to around 400 peers
- Bitswap connections tend to be separate from the DHT
- PubSub connections also generally are another distinct set of peers (including js-ipfs nodes)
Because of this, we selected 600 as a 'LowWater' number, and 900 as a 'HighWater' number to avoid having to clear out connections too frequently. ๐ You can configure different numbers as you see fit via the
Swarm.ConnMgr
๐ field in your ipfs config file. See ๐ here for more details.โก๏ธ Disk utilization during
ipfs add
has been optimized for large files by doing batch writes in parallel. Previously, when adding a large file, users might have ๐ noticed that the add progressed by about 8MB at a time, with brief pauses in between. This was caused by quickly filling up the batch, then blocking while it was writing to disk. We now write to disk in the background while continuing to add the remainder of the file.๐ Other changes in this release have noticeably reduced memory consumption and CPU usage. This was done by optimising some frequently called functions in libp2p that were expensive in terms of both CPU usage and memory allocations. We also lowered the yamux accept buffer sizes which were raised over a year ago to ๐ combat a separate bug that has since been fixed.
๐ And finally, thank you to everyone who filed bugs, tested out the release candidates, ๐ filed pull requests, and contributed in any other way to this release!
- ๐ Features
- Implement Connection Manager (ipfs/go-ipfs#4288)
- Support multiple files in dag put (ipfs/go-ipfs#4254)
- Add 'raw' support to the dag put command (ipfs/go-ipfs#4285)
- ๐ Improvements
- Parallelize dag batch flushing (ipfs/go-ipfs#4296)
- Update go-peerstream to improve CPU usage (ipfs/go-ipfs#4323)
- Add full support for CidV1 in Files API and Dag Modifier (ipfs/go-ipfs#4026)
- Lower yamux accept buffer size (ipfs/go-ipfs#4326)
- Optimise
ipfs pin update
command (ipfs/go-ipfs#4348)
- ๐ Documentation
- Add some docs on plugins (ipfs/go-ipfs#4255)
- Add more info about private network bootstrap (ipfs/go-ipfs#4270)
- Add more info about
ipfs add
chunker option (ipfs/go-ipfs#4306) - Remove cruft in readme and mention discourse forum (ipfs/go-ipfs#4345)
- Add note about updating before reporting issues (ipfs/go-ipfs#4361)
- ๐ Bugfixes
- Fix FreeBSD build issues (ipfs/go-ipfs#4275)
- Don't crash when Datastore.StorageMax is not defined (ipfs/go-ipfs#4246)
- Do not call 'Connect' on NewStream in bitswap (ipfs/go-ipfs#4317)
- Filter out "" from active peers in bitswap sessions (ipfs/go-ipfs#4316)
- Fix "seeker can't seek" on specific files (ipfs/go-ipfs#4320)
- Do not set "gecos" field in Dockerfile (ipfs/go-ipfs#4331)
- Handle sym links in when calculating repo size (ipfs/go-ipfs#4305)
- ๐จ General Changes and Refactorings
- Fix indent in sharness tests (ipfs/go-ipfs#4212)
- Remove supernode routing (ipfs/go-ipfs#4302)
- Extract go-ipfs-addr (ipfs/go-ipfs#4340)
- Remove dead code and config files (ipfs/go-ipfs#4357)
- Update badgerds to 1.0 (ipfs/go-ipfs#4327)
- Wrap help descriptions under 80 chars (ipfs/go-ipfs#4121)
- โ
Testing
- Make sharness t0180-p2p less racy (ipfs/go-ipfs#4310)
-
v0.4.11 Changes
September 14, 2017๐ Ipfs 0.4.11 is a larger release that brings many long-awaited features and ๐ performance improvements. These include new datastore options, more efficient bitswap transfers, greatly improved resource consumption, circuit relay ๐ support, ipld plugins, and more! Take a look at the full changelog below for a detailed list of every change.
The ipfs datastore has, until now, been a combination of leveldb and a custom git-like storage backend called 'flatfs'. This works well enough for the average user, but different ipfs usecases demand different backend ๐ง configurations. To address this, we have changed the configuration file format for datastores to be a modular way of specifying exactly how you want the ๐ง datastore to be structured. You will now be able to configure ipfs to use flatfs, leveldb, badger, an in-memory datastore, and more to suit your needs. ๐ See the new datastore ๐ documentation for more information.
๐ Bitswap received some much needed attention during this release cycle. The concept of 'Bitswap Sessions' allows bitswap to associate requests for ๐ different blocks to the same underlying session, and from that infer better ways of requesting that data. In more concrete terms, parts of the ipfs ๐ codebase that take advantage of sessions (currently, only
ipfs pin add
) will cause much less extra traffic than before. This is done by making optimistic guesses about which nodes might be providing given blocks and not sending โก๏ธ wantlist updates to every connected bitswap partner, as well as searching the ๐ DHT for providers less frequently. In future releases we will migrate over more โก๏ธ ipfs commands to take advantage of bitswap sessions. As nodes update to this ๐ and future versions, expect to see idle bandwidth usage on the ipfs network go down noticeably.The never ending effort to reduce resource consumption had a few important ๐ updates this release. First, the bitswap sessions changes discussed above will help with improving bandwidth usage. Aside from that there are two important โก๏ธ libp2p updates that improved things significantly. The first was a fix to a bug in the dial limiter code that was causing it to not limit outgoing dials correctly. This resulted in ipfs running out of file descriptors very frequently (as well as incurring a decent amount of excess outgoing bandwidth), ๐ this has now been fixed. Users who previously received "too many open files" ๐ errors should see this much less often in 0.4.11. The second change was a ๐ memory leak in the DHT that was identified and fixed. Streams being tracked in a map in the DHT weren't being cleaned up after the peer disconnected leading to the multiplexer session not being cleaned up properly. This issue has been resolved, and now memory usage appears to be stable over time. There is still a lot of work to be done improving memory usage, but we feel this is a solid victory.
It is often said that NAT traversal is the hardest problem in peer to peer technology, we tend to agree with this. In an effort to provide a more ubiquitous p2p mesh, we have implemented a relay mechanism that allows willing peers to relay traffic for other peers who might not otherwise be able to communicate with each other. This feature is still pretty early, and currently ๐ users have to manually connect through a relay. The next step in this endeavour is automatic relaying, and research for this is currently in progress. We ๐ expect that when it lands, it will improve the perceived performance of ipfs by spending less time attempting connections to hard to reach nodes. A short guide on using the circuit relay feature can be found ๐ here.
The last feature we want to highlight (but by no means the last feature in this ๐ release) is our new plugin system. There are many different workflows and ๐ usecases that ipfs should be able to support, but not everyone wants to be able ๐ to use every feature. We could simply merge in all these features, but that causes problems for several reasons: first off, the size of the ipfs binary starts to get very large very quickly. Second, each of these different pieces โก๏ธ needs to be maintained and updated independently, which would cause significant churn in the codebase. To address this, we have come up with a system that ๐ allows users to install plugins to the vanilla ipfs daemon that augment its ๐ capabilities. The first of these plugins are a git ๐ plugin that allows ipfs to natively address git objects and an ethereum ๐ plugin that lets ipfs ingest and operate ๐ on all ethereum blockchain data. Soon to come are plugins for the bitcoin and ๐ zcash data formats. In the future, we will be adding plugins for other things like datastore backends and specialized libp2p network transports. ๐ You can read more on this topic in [Plugin docs](docs/plugins.md)
In order to simplify its integration with fs-repo-migrations, we've switched ๐ณ the ipfs/go-ipfs docker image from a musl base to a glibc base. For most users ๐ this will not be noticeable, but if you've been building your own images based โก๏ธ off this image, you'll have to update your dockerfile. We recommend a ๐ multi-stage dockerfile, where the build stage is based off of a regular Debian or other glibc-based image, and the assembly stage is based off of the ipfs/go-ipfs ๐ image, and you copy build artifacts from the build stage to the assembly ๐ stage. Note, if you are using the docker image and see a deprecation message, โก๏ธ please update your usage. We will stop supporting the old method of starting ๐ the dockerfile in the next release.
๐ Finally, I would like to thank all of our contributors, users, supporters, and friends for helping us along the way. Ipfs would not be where it is without you.
- ๐ Features
- Add
--pin
option toipfs dag put
(ipfs/go-ipfs#4004) - Add
--pin
option toipfs object put
(ipfs/go-ipfs#4095) - Implement
--profile
option onipfs init
(ipfs/go-ipfs#4001) - Add CID Codecs to
ipfs block put
(ipfs/go-ipfs#4022) - Bitswap sessions (ipfs/go-ipfs#3867)
- Create plugin API and loader, add ipld-git plugin (ipfs/go-ipfs#4033)
- Make announced swarm addresses configurable (ipfs/go-ipfs#3948)
- Reprovider strategies (ipfs/go-ipfs#4113)
- Circuit Relay integration (ipfs/go-ipfs#4091)
- More configurable datastore configs (ipfs/go-ipfs#3575)
- Add experimental support for badger datastore (ipfs/go-ipfs#4007)
- Add
- ๐ Improvements
- Add better support for Raw Nodes in MFS and elsewhere (ipfs/go-ipfs#3996)
- Added file size to response of
ipfs add
command (ipfs/go-ipfs#4082) - Add /dnsaddr bootstrap nodes (ipfs/go-ipfs#4127)
- Do not publish public keys extractable from ID (ipfs/go-ipfs#4020)
- ๐ Documentation
- Adding documentation that PubSub Sub can be encoded. (ipfs/go-ipfs#3909)
- Add Comms items from js-ipfs, including blog (ipfs/go-ipfs#3936)
- Add Developer Certificate of Origin (ipfs/go-ipfs#4006)
- Add
transports.md
document (ipfs/go-ipfs#4034) - Add
experimental-features.md
document (ipfs/go-ipfs#4036) - Update release docs (ipfs/go-ipfs#4165)
- Add documentation for datastore configs (ipfs/go-ipfs#4223)
- General update and clean-up of docs (ipfs/go-ipfs#4222)
- ๐ Bugfixes
- Fix shutdown check in t0023 (ipfs/go-ipfs#3969)
- Fix pinning of unixfs sharded directories (ipfs/go-ipfs#3975)
- Show escaped url in gateway 404 message (ipfs/go-ipfs#4005)
- Fix early opening of bitswap message sender (ipfs/go-ipfs#4069)
- Fix determination of 'root' node in dag put (ipfs/go-ipfs#4072)
- Fix bad multipart message panic in gateway (ipfs/go-ipfs#4053)
- Add blocks to the blockstore before returning them from blockservice sessions (ipfs/go-ipfs#4169)
- Various fixes for /ipfs fuse code (ipfs/go-ipfs#4194)
- Fix memory leak in dht stream tracking (ipfs/go-ipfs#4251)
- ๐จ General Changes and Refactorings
- Require go 1.8 (ipfs/go-ipfs#4044)
- Change IPFS to use the new pluggable Block to IPLD decoding framework. (ipfs/go-ipfs#4060)
- Remove tour command from ipfs (ipfs/go-ipfs#4123)
- Add support for Go 1.9 (ipfs/go-ipfs#4156)
- Remove some dead code (ipfs/go-ipfs#4204)
- Switch docker image from musl to glibc (ipfs/go-ipfs#4219)
- ๐ Features
-
v0.4.10 Changes
June 27, 2017๐ Ipfs 0.4.10 is a patch release that contains several exciting new features, ๐ bugfixes and general improvements. Including new commands, easier corruption recovery, and a generally cleaner codebase.
โก๏ธ The
ipfs pin
command has two new subcommands,verify
andupdate
.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 callipfs pin rm
on the ๐ old pin, andipfs 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. โก๏ธ Theipfs 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 selectblake2b-256
. This pushes us one step closer to shifting over to using blake2b as the 0๏ธโฃ 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 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.
- ๐ Features
- Add support for specifying the hash function in
ipfs add
(ipfs/go-ipfs#3919) - Implement
ipfs key {rm, rename}
(ipfs/go-ipfs#3892) - Implement
ipfs shutdown
command (ipfs/go-ipfs#3884) - Implement
ipfs pin update
(ipfs/go-ipfs#3846) - Implement
ipfs pin verify
(ipfs/go-ipfs#3843) - Implemented experimental p2p commands (ipfs/go-ipfs#3943)
- Add support for specifying the hash function in
- ๐ Improvements
- Add MaxStorage field to output of "repo stat" (ipfs/go-ipfs#3915)
- Add Suborigin header to gateway responses (ipfs/go-ipfs#3914)
- Add "--file-order" option to "filestore ls" and "verify" (ipfs/go-ipfs#3938)
- Allow selecting ipns keys by Peer ID (ipfs/go-ipfs#3882)
- Don't redirect to trailing slash in gateway for
go get
(ipfs/go-ipfs#3963) - Add 'ipfs dht findprovs --num-providers' to allow choosing number of providers to find (ipfs/go-ipfs#3966)
- Make sure all keystore keys get republished (ipfs/go-ipfs#3951)
- ๐ Documentation
- Adding documentation on PubSub encodings (ipfs/go-ipfs#3909)
- Change 'neccessary' to 'necessary' (ipfs/go-ipfs#3941)
- README.md: add Nix to the linux package managers (ipfs/go-ipfs#3939)
- More verbose errors in filestore (ipfs/go-ipfs#3964)
- ๐ Bugfixes
- Fix typo in message when file size check fails (ipfs/go-ipfs#3895)
- Clean up bitswap ledgers when disconnecting (ipfs/go-ipfs#3437)
- Make odds of 'process added after close' panic less likely (ipfs/go-ipfs#3940)
- ๐จ General Changes and Refactorings
- Remove 'ipfs diag net' from codebase (ipfs/go-ipfs#3916)
- Update to dht code with provide announce option (ipfs/go-ipfs#3928)
- Apply the megacheck code vetting tool (ipfs/go-ipfs#3949)
- Expose port 8081 in docker container for /ws listener (ipfs/go-ipfs#3954)
- ๐ Features
-
v0.4.9 Changes
April 30, 2017๐ Ipfs 0.4.9 is a maintenance release that contains several useful bugfixes and ๐ improvements. Notably,
ipfs add
has gained the ability to select which CID ๐ version will be output. The common ipfs hash that looks like this:QmRjNgF2mRLDT8AzCPsQbw1EYF2hDTFgfUmJokJPhCApYP
is a multihash. Multihashes ๐ allow us to specify the hashing algorithm that was used to verify the data, but it doesn't give us any indication of what format that data might be. To address that issue, we are adding another couple of bytes to the prefix that will allow us to indicate the format of the data referenced by the hash. This new format is called a Content ID, or CID for short. The previous bare multihashes will still ๐ be fully supported throughout the entire application as CID version 0. The new format with the type information will be CID version 1. To give an example, the content referenced by the hash above is "Hello Ipfs!". That same content, in the same format (dag-protobuf) using CIDv1 iszb2rhkgXZVkT2xvDiuUsJENPSbWJy7fdYnsboLBzzEjjZMRoG
.๐ CIDv1 hashes are supported in ipfs versions back to 0.4.5. Nodes running 0.4.4 and older will not be able to load content via CIDv1 and we recommend that they โก๏ธ update to a newer version.
๐ There are many other use cases for CIDs. Plugins can be written to ๐ allow ipfs to natively address content from any other merkletree based system, such as git, bitcoin, zcash and ethereum -- a few systems we've already started work on.
Aside from the CID flag, there were many other changes as noted below:
- ๐ Features
- Add support for using CidV1 in 'ipfs add' (ipfs/go-ipfs#3743)
- ๐ Improvements
- Use CID as an ETag strong validator (ipfs/go-ipfs#3869)
- Update go-multihash with keccak and bitcoin hashes (ipfs/go-ipfs#3833)
- Update go-is-domain to contain new gTLD (ipfs/go-ipfs#3873)
- Periodically flush cached directories during ipfs add (ipfs/go-ipfs#3888)
- improved gateway directory listing for sharded nodes (ipfs/go-ipfs#3897)
- ๐ Documentation
- Change issue template to use Severity instead of Priority (ipfs/go-ipfs#3834)
- Fix link to commit hook script in contribute.md (ipfs/go-ipfs#3863)
- Fix install_unsupported for openbsd, add docs (ipfs/go-ipfs#3880)
- ๐ Bugfixes
- Fix wanlist typo in prometheus metric name (ipfs/go-ipfs#3841)
- Fix
make install
not using ldflags for git hash (ipfs/go-ipfs#3838) - Fix
make install
not installing dependencies (ipfs/go-ipfs#3848) - Fix erroneous Cache-Control: immutable on dir listings (ipfs/go-ipfs#3870)
- Fix bitswap accounting of 'BytesSent' in ledger (ipfs/go-ipfs#3876)
- Fix gateway handling of sharded directories (ipfs/go-ipfs#3889)
- Fix sharding memory growth, and fix resolver for unixfs paths (ipfs/go-ipfs#3890)
- ๐จ General Changes and Refactorings
- Use ctx var consistently in daemon.go (ipfs/go-ipfs#3864)
- Handle 404 correctly in dist_get tool (ipfs/go-ipfs#3879)
- โ
Testing
- Fix go fuse tests (ipfs/go-ipfs#3840)
- ๐ Features
-
v0.4.8 Changes
March 29, 2017๐ Ipfs 0.4.8 brings with it several improvements, bugfixes, documentation ๐ improvements, and the long awaited directory sharding code.
Currently, when too many items are added into a unixfs directory, the object gets too large and you may experience issues. To pervent this problem, and generally make working really large directories more efficient, we have implemented a HAMT structure for unixfs. To enable this feature, run:
ipfs config --json Experimental.ShardingEnabled true
And restart your daemon if it was running.
Note: With this setting enabled, the hashes of any newly added directories will be different than they previously were, as the new code will use the sharded HAMT structure for all directories. Also, nodes running ipfs 0.4.7 and earlier will not be able to access directories created with this option.
That said, please do give it a try, let us know how it goes, and then take a look at all the other cool things added in 0.4.8 below.
- ๐ Features
- Implement unixfs directory sharding (ipfs/go-ipfs#3042)
- Add DisableNatPortMap option (ipfs/go-ipfs#3798)
- Basic Filestore utilty commands (ipfs/go-ipfs#3653)
- ๐ Improvements
- More Robust GC (ipfs/go-ipfs#3712)
- Automatically fix permissions for docker volumes (ipfs/go-ipfs#3744)
- Core API refinements and efficiency improvements (ipfs/go-ipfs#3493)
- Improve IsPinned() lookups for indirect pins (ipfs/go-ipfs#3809)
- ๐ Documentation
- Improve 'name' and 'key' helptexts (ipfs/go-ipfs#3806)
- Update link to paper in dev.md (ipfs/go-ipfs#3812)
- Add test to enforce helptext on commands (ipfs/go-ipfs#2648)
- ๐ Bugfixes
- Remove bloom filter check on Put call in blockstore (ipfs/go-ipfs#3782)
- Re-add the GOPATH checking functionality (ipfs/go-ipfs#3787)
- Use fsrepo.IsInitialized to test for initialization (ipfs/go-ipfs#3805)
- Return 404 Not Found for failed path resolutions (ipfs/go-ipfs#3777)
- Fix 'dist_get' failing without failing (ipfs/go-ipfs#3818)
- Update iptb with fix for t0130 hanging issue (ipfs/go-ipfs#3823)
- fix hidden file detection on windows (ipfs/go-ipfs#3829)
- ๐จ General Changes and Refactorings
- Fix multiple govet warnings (ipfs/go-ipfs#3824)
- Make Golint happy in the blocks submodule (ipfs/go-ipfs#3827)
- โ
Testing
- Enable codeclimate for automated linting and vetting (ipfs/go-ipfs#3821)
- Fix EOF test failure with Multipart.Read (ipfs/go-ipfs#3804)
- ๐ Features
-
v0.4.7 Changes
March 15, 2017Ipfs 0.4.7 contains several exciting new features! ๐ First off, The long awaited filestore feature has been merged, allowing users the option to not have ipfs store chunked copies of added files in the blockstore, pushing to burden of ensuring those files are not changed to the ๐ user. The filestore feature is currently still experimental, and must be enabled in your config with:
ipfs config --json Experimental.FilestoreEnabled true
๐ before it can be used. Please see this issue for more details.
๐ Next up, We have merged initial support for ipfs 'Private Networks'. This ๐ feature allows users to run ipfs in a mode that will only connect to other peers in the private network. This feature, like the filestore is being ๐ released experimentally, but if you're interested please try it out. Instructions for setting it up can be found here.
๐ This release also enables support for the 'mplex' stream muxer by default. This stream multiplexing protocol was available previously via the
--enable-mplex-experiment
daemon flag, but has now graduated to being 'less experimental' and no longer requires the flag to use it.๐ Aside from those, we have a good number of bugfixes, perf improvements and new โ tests. Heres a list of highlights:
- ๐ Features
- Implement basic filestore 'no-copy' functionality (ipfs/go-ipfs#3629)
- Add support for private ipfs networks (ipfs/go-ipfs#3697)
- Enable 'mplex' stream muxer by default (ipfs/go-ipfs#3725)
- Add
--quieter
option toipfs add
(ipfs/go-ipfs#3770) - Report progress during
pin add
via--progress
(ipfs/go-ipfs#3671)
- ๐ Improvements
- Allow
ipfs get
to handle content added with raw leaves option (ipfs/go-ipfs#3757) - Fix accuracy of progress bar on
ipfs get
(ipfs/go-ipfs#3758) - Limit number of objects in batches to prevent too many fds issue (ipfs/go-ipfs#3756)
- Add more info to bitswap stat (ipfs/go-ipfs#3635)
- Add multiple performance metrics (ipfs/go-ipfs#3615)
- Make
dist_get
fall back to other downloaders if one fails (ipfs/go-ipfs#3692)
- Allow
- ๐ Documentation
- Add Arch Linux install instructions to readme (ipfs/go-ipfs#3742)
- Improve release checklist document (ipfs/go-ipfs#3717)
- ๐ Bugfixes
- Fix drive root parsing on windows (ipfs/go-ipfs#3328)
- Fix panic in ipfs get when passing no parameters to API (ipfs/go-ipfs#3768)
- Fix breakage of
ipfs pin add
api output (ipfs/go-ipfs#3760) - Fix issue in DHT queries that was causing poor record replication (ipfs/go-ipfs#3748)
- Fix
ipfs mount
crashing if no name was published before (ipfs/go-ipfs#3728) - Add
self
key to theipfs key list
listing (ipfs/go-ipfs#3734) - Fix panic when shutting down
ipfs daemon
pre gateway setup (ipfs/go-ipfs#3723)
- ๐จ General Changes and Refactorings
- Refactor
EnumerateChildren
to avoid need for bestEffort parameter (ipfs/go-ipfs#3700) - Update fuse dependency, fixing several issues (ipfs/go-ipfs#3727)
- Add
install_unsupported
makefile target for 'exotic' systems (ipfs/go-ipfs#3719) - Deprecate implicit daemon argument in Dockerfile (ipfs/go-ipfs#3685)
- Refactor
- โ
Testing
- Add test to ensure helptext is under 80 columns wide (ipfs/go-ipfs#3774)
- Add unit tests for auto migration code (ipfs/go-ipfs#3618)
- Fix iptb stop issue in sharness tests (ipfs/go-ipfs#3714)
- ๐ Features
-
v0.4.6 Changes
February 21, 2017๐ Ipfs 0.4.6 contains several bugfixes related to migrations and also contains a few other improvements to other parts of the codebase. Notably:
- 0๏ธโฃ The default config will now contain some ipv6 addresses for bootstrap nodes.
- ๐
ipfs pin add
should be faster and consume less memory. ๐ Pinning thousands of files no longer causes superlinear usage of storage space.
๐ Improvements
- Make pinset sharding deterministic (ipfs/go-ipfs#3640)
- Update to go-multihash with blake2 (ipfs/go-ipfs#3649)
- Pass cids instead of nodes around in EnumerateChildrenAsync (ipfs/go-ipfs#3598)
- Add /ip6 bootstrap nodes (ipfs/go-ipfs#3523)
- Add sub-object support to
dag get
command (ipfs/go-ipfs#3687) - Add half-closed streams support to multiplex experiment (ipfs/go-ipfs#3695)
๐ Documentation
- Add the snap installation instructions (ipfs/go-ipfs#3663)
- Add closed PRs, Issues throughput (ipfs/go-ipfs#3602)
๐ Bugfixes
- Fix auto-migration on docker nodes (ipfs/go-ipfs#3698)
- Update flatfs to v1.1.2, fixing directory fd issue (ipfs/go-ipfs#3711)
๐จ General Changes and Refactorings
- Remove
FindProviders
from routing mocks (ipfs/go-ipfs#3617) - Use Marshalers instead of PostRun to process
block rm
output (ipfs/go-ipfs#3708)
- Remove
โ Testing
- Makefile rework and sharness test coverage (ipfs/go-ipfs#3504)
- Print out all daemon stderr files when iptb stop fails (ipfs/go-ipfs#3701)
- Add tests for recursively pinning a dag (ipfs/go-ipfs#3691)
- Fix lack of commit hash during build (ipfs/go-ipfs#3705)
-
v0.4.5 Changes
February 11, 2017๐ Changes from rc3 to rc4
- โก๏ธ Update to fixed webui. (ipfs/go-ipfs#3669)
๐ Changes from rc2 to rc3
- ๐ Fix handling of null arrays in cbor ipld objects. (ipfs/go-ipfs#3666)
- โ Add env var to enable yamux debug logging. (ipfs/go-ipfs#3668)
- ๐ Fix libc check during auto-migrations. (ipfs/go-ipfs#3665)
๐ Changes from rc1 to rc2
- ๐ Fixed json output of ipld objects in
ipfs dag get
(ipfs/go-ipfs#3655)
๐ Changes since 0.4.4
Notable changes
- IPLD and CIDs
- Rework go-ipfs to use Content IDs (ipfs/go-ipfs#3187) (ipfs/go-ipfs#3290)
- Turn merkledag.Node into an interface (ipfs/go-ipfs#3301)
- Implement cbor ipld nodes (ipfs/go-ipfs#3325)
- Allow cid format selection in block put command (ipfs/go-ipfs#3324) (ipfs/go-ipfs#3483)
- Bitswap protocol extension to handle cids (ipfs/go-ipfs#3297)
- Add dag get to read-only api (ipfs/go-ipfs#3499)
- Raw Nodes
- Implement 'Raw Node' node type for addressing raw data (ipfs/go-ipfs#3307)
- Optimize DagService GetLinks for Raw Nodes. (ipfs/go-ipfs#3351)
- Experimental PubSub
- Added a very basic pubsub implementation (ipfs/go-ipfs#3202)
- Core API
- gateway: use core api for serving GET/HEAD/POST (ipfs/go-ipfs#3244)
- IPLD and CIDs
๐ Improvements
- Disable auto-gc check in 'ipfs cat' (ipfs/go-ipfs#3100)
- Add
bitswap ledger
command (ipfs/go-ipfs#2852) - Add
ipfs block rm
command. (ipfs/go-ipfs#2962) - Add config option to disable bandwidth metrics (ipfs/go-ipfs#3381)
- Add experimental dht 'client mode' flag (ipfs/go-ipfs#3269)
- Add config option to set reprovider interval (ipfs/go-ipfs#3101)
- Add
ipfs dht provide
command (ipfs/go-ipfs#3106) - Add stream info to
ipfs swarm peers -v
(ipfs/go-ipfs#3352) - Add option to enable go-multiplex experiment (ipfs/go-ipfs#3447)
- Basic Keystore implementation (ipfs/go-ipfs#3472)
- Make
ipfs add --local
not send providers messages (ipfs/go-ipfs#3102) - Fix bug in
ipfs tar add
that buffered input in memory (ipfs/go-ipfs#3334) - Make blockstore retry operations on temporary errors (ipfs/go-ipfs#3091)
- Don't hold the PinLock in adder when not pinning. (ipfs/go-ipfs#3222)
- Validate repo/api file and improve error message (ipfs/go-ipfs#3219)
- no longer hard code gomaxprocs (ipfs/go-ipfs#3357)
- Updated Bash complete script (ipfs/go-ipfs#3377)
- Remove expensive debug statement in blockstore AllKeysChan (ipfs/go-ipfs#3384)
- Remove GC timeout, fix GC tests (ipfs/go-ipfs#3494)
- Fix
ipfs pin add
resource consumption (ipfs/go-ipfs#3495) (ipfs/go-ipfs#3571) - Add IPNS entry to DHT cache after publish (ipfs/go-ipfs#3501)
- Add in
--routing=none
daemon option (ipfs/go-ipfs#3605)
Bitswap
- Don't re-provide blocks we've provided very recently (ipfs/go-ipfs#3105)
- Add a deadline to sendmsg calls (ipfs/go-ipfs#3445)
- cleanup bitswap and handle message send failure slightly better (ipfs/go-ipfs#3408)
- Increase wantlist resend delay to one minute (ipfs/go-ipfs#3448)
- Fix issue where wantlist fullness wasn't included in messages (ipfs/go-ipfs#3461)
- Only pass keys down newBlocks chan in bitswap (ipfs/go-ipfs#3271)
๐ Bugfixes
- gateway: fix --writable flag (ipfs/go-ipfs#3206)
- Fix relative seek in unixfs not expanding file properly (ipfs/go-ipfs#3095)
- Update multicodec service names for ipfs services (ipfs/go-ipfs#3132)
- dht: add missing protocol ID to newStream call (ipfs/go-ipfs#3203)
- Return immediately on namesys error (ipfs/go-ipfs#3345)
- Improve osxfuse handling (ipfs/go-ipfs#3098) (ipfs/go-ipfs#3413)
- commands: fix opt.Description panic when desc was empty (ipfs/go-ipfs#3521)
- Fixes #3133: Properly handle release candidates in version comparison (ipfs/go-ipfs#3136)
- Don't drop error in readStreamedJson. (ipfs/go-ipfs#3276)
- Error out on invalid
--routing
option (ipfs/go-ipfs#3482) - Respect contexts when returning diagnostics responses (ipfs/go-ipfs#3353)
- Fix json marshalling of pbnode (ipfs/go-ipfs#3507)
๐จ General changes and refactorings
- Disable Suborigins the spec changed and our impl conflicts (ipfs/go-ipfs#3519)
- Avoid sending provide messages for pinsets (ipfs/go-ipfs#3103)
- Refactor cli handling to expose argument parsing functionality (ipfs/go-ipfs#3308)
- Create a FilestoreNode object to carry PosInfo (ipfs/go-ipfs#3314)
- Print 'n/a' instead of zero latency in
ipfs swarm peers
(ipfs/go-ipfs#3491) - Add DAGService.GetLinks() method to optimize traversals. (ipfs/go-ipfs#3255)
- Make path resolver no longer require whole IpfsNode for construction (ipfs/go-ipfs#3321)
- Distinguish between Offline and Local Modes of daemon operation. (ipfs/go-ipfs#3259)
- Separate out the GC Locking from the Blockstore interface. (ipfs/go-ipfs#3348)
- Avoid unnecessary allocs in datastore key handling (ipfs/go-ipfs#3407)
- Use NextSync method for datastore queries (ipfs/go-ipfs#3386)
- Switch unixfs.Metadata.MimeType to optional (ipfs/go-ipfs#3458)
- Fix path parsing in
ipfs name publish
(ipfs/go-ipfs#3592) - Fix inconsistent
ipfs stats bw
formatting (ipfs/go-ipfs#3554) - Set the libp2p agent version based on version string (ipfs/go-ipfs#3569)
Cross Platform Changes
- Fix 'dist_get' script on BSDs. (ipfs/go-ipfs#3264)
- ulimit: Tune resource limits on BSDs (ipfs/go-ipfs#3374)
Metrics
- Introduce go-metrics-interface (ipfs/go-ipfs#3189)
- Fix metrics injection (ipfs/go-ipfs#3315)
Misc
- Bump Go requirement to 1.7 (ipfs/go-ipfs#3111)
- Merge 0.4.3 release candidate changes back into master (ipfs/go-ipfs#3248)
- Add [email protected] GPG key to assets (ipfs/go-ipfs#2997)
- Improve makefiles (ipfs/go-ipfs#2999) (ipfs/go-ipfs#3265)
- Refactor install.sh script (ipfs/go-ipfs#3194)
- Add test check for go code formatting (ipfs/go-ipfs#3421)
- bin: dist_get script: prevents get_go_vars() returns same values twice (ipfs/go-ipfs#3079)
Dependencies
- Update libp2p to have fixed spdystream dep (ipfs/go-ipfs#3210)
- Update libp2p and dht packages (ipfs/go-ipfs#3263)
- Update to libp2p 4.0.1 and propogate other changes (ipfs/go-ipfs#3284)
- Update to libp2p 4.0.4 (ipfs/go-ipfs#3361)
- Update go-libp2p across codebase (ipfs/go-ipfs#3406)
- Update to go-libp2p 4.1.0 (ipfs/go-ipfs#3373)
- Update deps for libp2p 3.4.0 (ipfs/go-ipfs#3110)
- Update go-libp2p-swarm with deadlock fixes (ipfs/go-ipfs#3339)
- Update to new cid and ipld node packages (ipfs/go-ipfs#3326)
- Update to newer ipld node interface with Copy and better Tree (ipfs/go-ipfs#3391)
- Update experimental go-multiplex to 0.2.6 (ipfs/go-ipfs#3475)
- Rework routing interfaces to make separation easier (ipfs/go-ipfs#3107)
- Update to dht code with fixed GetClosestPeers (ipfs/go-ipfs#3346)
- Move go-is-domain to gx (ipfs/go-ipfs#3077)
- Extract thirdparty/loggables and thirdparty/peerset (ipfs/go-ipfs#3204)
- Completely remove go-key dep (ipfs/go-ipfs#3439)
- Remove randbo dep, its no longer needed (ipfs/go-ipfs#3118)
- Update libp2p for identify configuration updates (ipfs/go-ipfs#3539)
- Use newer flatfs sharding scheme (ipfs/go-ipfs#3608)
โ Testing
- fix test_fsh arg quoting in ipfs-test-lib (ipfs/go-ipfs#3085)
- 100% coverage for blocks/blocksutil (ipfs/go-ipfs#3090)
- 100% coverage on blocks/set (ipfs/go-ipfs#3084)
- 81% coverage on blockstore (ipfs/go-ipfs#3074)
- 80% coverage of unixfs/mod (ipfs/go-ipfs#3096)
- 82% coverage on blocks (ipfs/go-ipfs#3086)
- 87% coverage on unixfs (ipfs/go-ipfs#3492)
- Improve coverage on routing/offline (ipfs/go-ipfs#3516)
- Add test for flags package (ipfs/go-ipfs#3449)
- improve test coverage on merkledag package (ipfs/go-ipfs#3113)
- 80% coverage of unixfs/io (ipfs/go-ipfs#3097)
- Accept more than one digit in repo version tests (ipfs/go-ipfs#3130)
- Fix typo in hash in t0050 (ipfs/go-ipfs#3170)
- fix bug in pinsets and add a stress test for the scenario (ipfs/go-ipfs#3273) (ipfs/go-ipfs#3302)
- Report coverage to codecov (ipfs/go-ipfs#3473)
- Add test for 'ipfs config replace' (ipfs/go-ipfs#3073)
- Fix netcat on macOS not closing socket when the stdin sends EOF (ipfs/go-ipfs#3515)
๐ Documentation
- Update dns help with a correct domain name (ipfs/go-ipfs#3087)
- Add period to
ipfs pin rm
(ipfs/go-ipfs#3088) - Make all Taglines use imperative mood (ipfs/go-ipfs#3041)
- Document listing commands better (ipfs/go-ipfs#3083)
- Add notes to readme on building for uncommon systems (ipfs/go-ipfs#3051)
- Add branch naming conventions doc (ipfs/go-ipfs#3035)
- Replace keyword with <> (ipfs/go-ipfs#3129)
- Fix Add() docs regarding pinning (ipfs/go-ipfs#3513)
- Add sudo to install commands. (ipfs/go-ipfs#3201)
- Add docs for
"commands".Command.Run
(ipfs/go-ipfs#3382) - Put config keys in proper case (ipfs/go-ipfs#3365)
- Fix link in
ipfs stats bw
help message (ipfs/go-ipfs#3620)
-
v0.4.4 Changes
October 11, 2016๐ This release contains an important hotfix for a bug we discovered in how pinning works. If you had a large number of pins, new pins would overwrite existing pins. ๐ Apart from the hotfix, this release is equal to the previous release 0.4.3.
- ๐ Fix bug in pinsets fanout, and add stress test. (@whyrusleeping, ipfs/go-ipfs#3273)
๐ We published a detailed account of the bug and fix in a blog post.