js-ipfs 0.42.0 released
by Alex Potsides on 2020-04-14
Smaller, faster, more reliable
js-IPFS@0.42.0 has been released, bringing a host of bug fixes and other small stability improvements.
It reduces the size of the minified bundle by 7.5% for faster downloads and more responsive web apps!
We’ve also merged some of our repos together which were logically intertwined. Our hope is that this will make contributing easier and encourage experimentation as there will be fewer PRs to juggle to land a piece of functionality!
🤖 Automated publishing of RCs
$ npm install -g ipfs@next or $ npm install ipfs-http-client@next
This will download and install a version of
js-ipfs-http-client created from the last successful build of master with no GitHub URLs in the production dependency tree.
🛳️ Updated Docker containers
Publishing to Docker Hub has been restored so you can get a container running the latest and greatest
$ docker pull ipfs/js-ipfs
You can also pull pre-releases at any time with:
$ docker pull ipfs/js-ipfs:next
Check out all the releases at: https://hub.docker.com/r/ipfs/js-ipfs
The MFS CLI now supports nanosecond mtimes, use it with the following commands:
$ jsipfs mkdir /directory --mtime 1000 --mtime-nsecs 5
--mtime are now also supported when piping files to
$ cat ./file.txt | jsipfs add --mode 0500
🔨 Breaking changes
- HAMT sharded directories are now reported as having a type of
ipfs.files.statin line with
- When specifying metadata and
ipfs.add, if the file is small enough to fit into one block,
--raw-leavesis ignored and a UnixFS entry is created (previously the returned CID would have a codec of
🦟 Bugs fixed
- WebRTC configuration is now passed to the libp2p WebRTC transport correctly ipfs/js-ipfs#2966
- Unknown CLI commands now cause the process to exit with a non-zero exit code ipfs/js-ipfs#2916
- Running Prometheus metrics in Docker containers no longer prevent the container from starting ipfs/js-ipfs#2952
💍 One PR to rule them all
A common observation made about IPFS development is that there are so many repos to gain knowledge of, it’s hard to know how everything fits together and where a problem might originate, all of which makes it hard to start contributing.
Contributors will sometimes spend precious time crafting one PR, only to be told they need to make additional PRs to repos they didn’t even know existed in order to land their initial change. This often ends up being too much of a barrier for developers who have external time pressures or have other shiny PRs to push on.
Features must be staged across multiple releases from multiple repos, and any of these releases have the potential to block unrelated work streams in other repos & projects purely through human error - bugs may be introduced, or perhaps a follow up piece of work becomes necessary. With multiple releases from multiple repos it also becomes hard to roll back these changes; it’s a last resort tactic but denying us it’s use because our module release process is complicated is an artificial constraint of our own making.
To start to address this we’ve consolidated
interface-js-ipfs-core into one repository.
This made sense because a given IPFS feature is typically implemented in
js-ipfs, exposed over http by the http client and tests are added to the interface suite to ensure everything works together - now you will be able to make that sort of change in one PR instead of three!
It’s our hope that this will go some way towards simplifying IPFS development and will encourage new contributors to pitch in and help us build the platform to power the distributed web.
🗺️ What’s next?
To get a better view on what’s coming up in
js-ipfs releases, we’ve put a Project Roadmap together that contains headline features organised in the order we hope them to land.
Only large features are called out in the roadmap, expect lots of small bugfix releases between the roadmapped items!
😍 Huge thank you to everyone that made this release possible
- @achingbrain (149 commits, 44 PRs, 6 issues, 166 comments)
- @agustinmessina (3 comments)
- @alanshaw (8 commits, 6 PRs, 1 issue, 12 comments)
- @alexjc (1 issue, 1 comment)
- @andrew (7 commits, 14 PRs, 1 comment)
- @aphelionz (1 PR, 1 issue, 3 comments)
- @aquiladev (1 issue)
- @betamos (1 issue)
- @bluelovers (2 commits, 8 PRs, 14 issues, 26 comments)
- @calikevuche (2 issues, 1 comment)
- @carsonfarmer (3 comments)
- @chafey (2 commits, 4 PRs, 4 issues, 9 comments)
- @ChainSafeSystems (1 comment)
- @christopheSeeka (2 issues, 7 comments)
- @CLAassistant (1 comment)
- @codecov-io (4 comments)
- @daviddias (2 commits, 3 PRs, 1 issue, 7 comments)
- @dirkmc (1 PR, 5 comments)
- @Elvenisboy (1 comment)
- @emclab (3 comments)
- @Gudahtt (1 issue)
- @hacdias (2 commits)
- @happy-zhangbo (2 issues, 2 comments)
- @hazae41 (2 issues)
- @hsanjuan (3 comments)
- @hugomrdias (39 commits, 27 PRs, 6 issues, 35 comments)
- @icidasset (2 issues, 3 comments)
- @iRyanBell (1 PR)
- @jacobheun (45 commits, 3 PRs, 3 issues, 36 comments)
- @Jonybang (1 issue)
- @josselinchevalay (1 issue, 4 comments)
- @jsonsivar (2 issues)
- @kalmi (1 issue, 1 comment)
- @kanej (1 commit, 1 PR, 2 comments)
- @kawmaiparis (1 issue, 1 comment)
- @koivunej (1 issue)
- @kumavis (1 commit, 1 PR, 2 comments)
- @latenssi (1 issue, 2 comments)
- @lidel (1 PR, 2 issues, 4 comments)
- @MaduraRaj (1 issue)
- @MaxGraey (1 comment)
- @mcclure (1 issue)
- @mell-old (1 issue)
- @mfsoftworks (1 comment)
- @mikeal (1 issue, 12 comments)
- @mkg20001 (4 commits, 1 issue, 4 comments)
- @mmm8955405 (1 issue, 6 comments)
- @MonarthS (1 comment)
- @mpetrunic (1 PR)
- @nijynot (1 commit)
- @notsag-dev (1 PR)
- @npfoss (1 commit)
- @obo20 (1 issue, 3 comments)
- @olizilla (1 commit, 1 PR, 2 comments)
- @ottodevs (5 comments)
- @pcowgill (2 PRs, 8 issues, 43 comments)
- @ribasushi (1 issue, 1 comment)
- @rigwild (1 comment)
- @robertkiel (6 commits, 6 PRs, 1 comment)
- @rvagg (1 PR, 7 comments)
- @SahidMiller (1 comment)
- @sbhamad (1 issue)
- @Schwartz10 (1 comment)
- @sebastiendan (2 issues, 9 comments)
- @SignpostMarv (2 issues, 2 comments)
- @siman (2 comments)
- @sinkuu (1 comment)
- @stale (1 comment)
- @Stebalien (2 commits, 2 PRs, 1 issue, 9 comments)
- @svdo (1 PR, 1 comment)
- @tabcat (2 commits, 2 PRs, 1 issue)
- @tniessen (1 issue)
- @tuyennhv (1 PR, 1 comment)
- @uchetron (1 issue)
- @ulvus (1 comment)
- @vasco-santos (72 commits, 17 PRs, 17 issues, 78 comments)
- @vaultec81 (2 issues, 10 comments)
- @vmx (12 commits, 9 PRs, 11 comments)
- @warpfork (1 comment)
- @wemeetagain (1 commit, 1 comment)
- @whyrusleeping (1 comment)
- @wolfgang (1 comment)
- @woss (1 comment)
- @x5engine (1 comment)
- @Xmader (1 commit, 1 PR)
- @xmaysonnave (1 issue, 1 comment)
- @zebateira (1 PR)
- @zot (1 comment)
🙌🏽 Want to contribute?
Would you like to contribute to the IPFS project and don’t know how? Well, there are a few places you can get started:
- Check the issues with the
help wantedlabel in the js-ipfs repo
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the 🚀 IPFS Core Implementations Weekly Sync 🛰 and be part of the action!
⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at discuss.ipfs.io. We are also available at the
#ipfs channel on Freenode.