Small, acyclic and flexible, just the way you like it
# 🔦 Highlights
# ✂️ Huge bundle size cuts!
One of the biggest goals for JS IPFS is to enable the distributed web in the browser. Part of that is being a good web citizen and minimising the amount of code we ship, to ensure IPFS downloads quicker, npm install
's quicker, loads quicker and utilizes fewer resources. It's especially important on resource constrained mobiles and IoT devices.
The good news you want to hear is that we've now chopped around 50% off the bundle size of JS IPFS since 0.33, that's a reduction of nearly half of the code we were previously shipping! This is an amazing improvement and a great reason to upgrade.
# 🌳 DAG HTTP API
The HTTP API now has endpoints for DAG operations like get
, put
and resolve
. Hooray! It was actually super easy so we just decided to do it spontaneously. I know, we're so zany.
On a more serious note, this brings JS IPFS another step closer to feature parity with Go IPFS. We're pushing forwards with this in every release 🚀 - stay tuned!
# 🙉 Multiple address listening for API and Gateway servers
The HTTP API and the HTTP Gateway started by your IPFS node can now listen on multiple addresses. It's a backward compatible change, all you have to do is change the value of Addresses.API
or Addresses.Gateway
in your JSON config file to be an array of multiaddrs (opens new window) instead of a single string multiaddr. Here's an example:
{
"Addresses": {
"API": ["/ip4/127.0.0.1/tcp/5001", "/ip6/::1/tcp/5002"],
"Gateway": ["/ip4/127.0.0.1/tcp/8080", "/ip6/::1/tcp/8080"]
}
}
# 🔭 Recursive DNS link lookups
DNS link (opens new window) TXT records like dnslink=/ipns/domain.com
can now be recursively resolved until they hit an IPFS hash like /ipfs/QmHash
. Even better, that's the new default. 👌
# 🏗 API Changes
CLI
- The global flag
--local
was renamed to--offline
- Added flag
--enable-preload
tojsipfs daemon
command to allow users to enable or disable content preloading
- The global flag
Core
ipfs.util.isIPFS
andipfs.util.crypto
have moved to static exports and should now be accessed like:const { isIPFS, crypto } = require('ipfs')
ipfs.types.*
have moved to static exports and should now be accessed like:const { Buffer, CID, multiaddr, multibase, multihash, PeerId, PeerInfo, } = require('ipfs')
ipfs.resolve
now supports resolving to the middle of an IPLD block instead of erroring. Given:b = { c: 'some value' } a = { b: { '/': cidOf(b) } }
ipfs resolve /ipld/cidOf(a)/b/c
should return/ipld/cidOf(b)/c
. That is, it resolves the path as much as it can. Previously it would simply fail with an error.ipfs.dns
now resolves recursively by default, set therecursive
options tofalse
to prevent this behaviour
HTTP API
- Added the following DAG endpoints:
/api/v0/dag/put
/api/v0/dag/get
/api/v0/dag/resolve
- Added the following DAG endpoints:
# ❤️ Huge thank you to everyone that made this release possible
In alphabetical order, here are all the humans that contributed to the release:
- a1300 (opens new window) (1 comment)
- Aarnav (opens new window) (1 issue)
- Adam Gall (opens new window) (1 comment)
- Adam Uhlíř (opens new window) (1 PR, 2 issues, 4 reviews, 10 comments)
- Aditya Bose (opens new window) (1 PR)
- Alan Shaw (opens new window) (82 PRs, 11 issues, 114 reviews, 235 comments)
- Alberto Elias (opens new window) (3 PRs, 3 issues, 1 review, 13 comments)
- Alex North (opens new window) (1 PR, 1 comment)
- Alex Potsides (opens new window) (18 PRs, 2 issues, 43 reviews, 35 comments)
- André Cruz (opens new window) (1 issue, 6 comments)
- Andrej Novikov (opens new window) (1 comment)
- Andrew Nesbitt (opens new window) (7 PRs)
- Andrius Bacianskas (opens new window) (1 comment)
- Angelo (opens new window) (1 comment)
- Arkadiy Kukarkin (opens new window) (9 comments)
- ask03 (opens new window) (1 issue)
- Ayush Gupta (opens new window) (1 comment)
- Barry G (opens new window) (1 issue, 6 comments)
- Baruch Velez (opens new window) (1 comment)
- Beeno Tung (opens new window) (1 PR, 3 comments)
- Benjamín Vázquez (opens new window) (1 issue)
- Blake Byrnes (opens new window) (3 reviews, 2 comments)
- Brendan Miller (opens new window) (1 comment)
- Brian (opens new window) (1 issue, 9 comments)
- Chad Retz (opens new window) (2 comments)
- Chance Hudson (opens new window) (1 PR, 1 issue, 4 reviews)
- CHEVALAY JOSSELIN (opens new window) (1 PR, 1 issue, 5 comments)
- Chris Anderson (opens new window) (1 PR, 3 reviews)
- Chris de Jong (opens new window) (1 comment)
- Christian Couder (opens new window) (1 comment)
- cloudbitsum (opens new window) (1 issue, 1 comment)
- comntr (opens new window) (3 issues, 2 comments)
- Daniel Krech (opens new window) (1 PR, 1 comment)
- David (opens new window) (1 PR)
- David Ammouial (opens new window) (1 comment)
- David Dias (opens new window) (1 PR, 1 issue, 28 reviews, 23 comments)
- Davit Barbakadze (opens new window) (1 issue, 3 comments)
- Despoinis (opens new window) (1 issue, 2 comments)
- Diogo Silva (opens new window) (3 PRs, 1 review, 1 comment)
- dirkmc (opens new window) (17 PRs, 24 reviews, 14 comments)
- Dmitriy Ryajov (opens new window) (1 comment)
- Dustin (opens new window) (1 comment)
- edoo (opens new window) (1 PR)
- Elad (opens new window) (1 comment)
- Federico Luzzi (opens new window) (2 issues)
- Filip Š (opens new window) (1 PR, 2 comments)
- Francis Gulotta (opens new window) (4 comments)
- Franck Royer (opens new window) (1 comment)
- Friedel Ziegelmayer (opens new window) (2 reviews, 9 comments)
- Georgios Rassias (opens new window) (1 PR, 4 comments)
- Gorka Ludlow (opens new window) (1 comment)
- Grant Herman (opens new window) (4 PRs, 1 issue, 3 reviews, 12 comments)
- Guilherme Gervasio (opens new window) (1 issue, 1 comment)
- Guy Sviry (opens new window) (1 issue, 1 comment)
- Haywirez (opens new window) (1 comment)
- hazae41 (opens new window) (1 issue, 3 comments)
- Henrique Dias (opens new window) (1 review, 8 comments)
- Henry Rodrick (opens new window) (1 review, 1 comment)
- heqimagic (opens new window) (1 issue, 1 comment)
- Huberto Kaiser Filho (opens new window) (2 issues, 4 comments)
- Hugo Dias (opens new window) (16 PRs, 3 issues, 29 reviews, 48 comments)
- Hunter Trujillo (opens new window) (1 issue, 2 comments)
- Irakli Gozalishvili (opens new window) (6 PRs, 16 issues, 14 reviews, 50 comments)
- isan_rivkin (opens new window) (2 PRs, 5 comments)
- IwraStudios (opens new window) (1 issue)
- Jacob Heun (opens new window) (26 PRs, 5 issues, 67 reviews, 86 comments)
- Jakub Sztandera (opens new window) (5 comments)
- James Cullum (Pseudonym) (opens new window) (1 comment)
- JamesYin (opens new window) (4 comments)
- João Antunes (opens new window) (1 PR, 2 issues, 4 comments)
- John Hiesey (opens new window) (1 comment)
- Jon (opens new window) (1 comment)
- Jon Chiang (opens new window) (1 comment)
- Jonathan Gaillard (opens new window) (1 issue, 2 comments)
- jzstern (opens new window) (1 comment)
- kesavananbu (opens new window) (1 comment)
- klueq (opens new window) (1 comment)
- kwakwaa (opens new window) (2 issues, 1 comment)
- lanmower (opens new window) (1 issue)
- LifeBCE (opens new window) (2 issues, 3 comments)
- Lorenzo Setale (opens new window) (1 comment)
- LuffySmile (opens new window) (1 issue)
- Łukasz Magiera (opens new window) (5 reviews, 4 comments)
- Maciej Krüger (opens new window) (4 reviews, 26 comments)
- Marcin Czenko (opens new window) (1 issue, 1 comment)
- Marcin Rataj (opens new window) (6 PRs, 7 issues, 9 reviews, 16 comments)
- Mark Robert Henderson (opens new window) (3 issues, 9 comments)
- Martín Acosta (opens new window) (1 issue)
- Martin Heidegger (opens new window) (1 issue)
- Matt Joiner (opens new window) (1 comment)
- Matt Ober (opens new window) (2 issues, 4 comments)
- Matteo Collina (opens new window) (2 comments)
- Michael Muré (opens new window) (1 PR)
- Mikeal Rogers (opens new window) (1 PR, 6 issues, 7 reviews, 36 comments)
- Mikerah (opens new window) (1 PR, 1 comment)
- Mitra Ardron (opens new window) (3 comments)
- Mounish Sai (opens new window) (1 PR)
- Nate Foss (opens new window) (1 comment)
- Nick Poulden (opens new window) (1 comment)
- nijynot (opens new window) (1 comment)
- Nitin Patel (opens new window) (10 PRs, 5 issues, 7 reviews, 13 comments)
- noot (opens new window) (1 review, 1 comment)
- Oli Evans (opens new window) (9 PRs, 2 issues, 6 reviews, 16 comments)
- Olivier Sarrouy (opens new window) (1 issue, 2 comments)
- ondratra (opens new window) (1 issue, 2 comments)
- Patrick Bay (opens new window) (1 issue)
- Pedro Gomes (opens new window) (1 issue, 4 comments)
- Pedro Teixeira (opens new window) (2 issues, 1 review, 9 comments)
- Perry Kundert (opens new window) (2 PRs)
- Pius Nyakoojo (opens new window) (1 PR)
- Portia Burton (opens new window) (1 PR, 3 comments)
- postables (opens new window) (1 issue)
- Prabhat (opens new window) (3 comments)
- pranav maheshwari (opens new window) (1 issue, 2 comments)
- projectoblio (opens new window) (1 issue, 2 comments)
- Rafael Matias (opens new window) (1 PR)
- Raúl Kripalani (opens new window) (2 issues, 9 comments)
- Richard Schneider (opens new window) (1 comment)
- Robert Kiel (opens new window) (1 PR, 1 comment)
- Robert Misiorowski (opens new window) (4 issues, 7 comments)
- Rod Vagg (opens new window) (1 PR, 9 reviews, 6 comments)
- Rômulo Alves (opens new window) (2 comments)
- rori4 (opens new window) (1 issue, 2 comments)
- Sam Strauch (opens new window) (1 issue)
- Sameer Puri (opens new window) (2 PRs, 2 reviews, 4 comments)
- Steven Allen (opens new window) (2 PRs, 2 comments)
- Taaliman (opens new window) (1 issue, 1 comment)
- Teri Chadbourne (opens new window) (1 issue, 4 comments)
- Theo Gravity (opens new window) (1 comment)
- Thomas Eizinger (opens new window) (3 PRs, 1 issue, 8 comments)
- Tim Schuppener (opens new window) (1 issue, 2 comments)
- Tyler van der Hoeven (opens new window) (1 comment)
- ukrocks007 (opens new window) (1 issue)
- useaquestion (opens new window) (1 issue, 2 comments)
- UtopiaCreatorX (opens new window) (1 issue, 2 comments)
- vasa (opens new window) (1 issue, 3 comments)
- Vasco Santos (opens new window) (26 PRs, 7 issues, 83 reviews, 43 comments)
- Victor Bjelkholm (opens new window) (1 review, 1 comment)
- Vincent Martin (opens new window) (2 comments)
- Vishal1010101 (opens new window) (1 comment)
- Volker Mische (opens new window) (30 PRs, 3 issues, 65 reviews, 76 comments)
- w3cshare (opens new window) (1 comment)
- Whyrusleeping (opens new window) (1 issue)
- X5 Engine (opens new window) (1 issue, 4 comments)
- xialvjun (opens new window) (1 issue)
- Yusef Napora (opens new window) (2 PRs, 1 comment)
- yuwiggin (opens new window) (1 issue, 1 comment)
- Zane Starr (opens new window) (2 PRs, 2 reviews)
# 🙌🏽 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 wanted
label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted - 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 http://discuss.ipfs.tech/ and help users finding their answers.
- Join the ⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 (opens new window) and be part of the Sprint 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.tech (opens new window). We are also available at the #ipfs channel on Freenode.