Releases: ipfs/js-ipfs
v0.35.0
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 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 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 (1 comment)
- Aarnav (1 issue)
- Adam Gall (1 comment)
- Adam Uhlíř (1 PR, 2 issues, 4 reviews, 10 comments)
- Aditya Bose (1 PR)
- Alan Shaw (82 PRs, 11 issues, 114 reviews, 235 comments)
- Alberto Elias (3 PRs, 3 issues, 1 review, 13 comments)
- Alex North (1 PR, 1 comment)
- Alex Potsides (18 PRs, 2 issues, 43 reviews, 35 comments)
- André Cruz (1 issue, 6 comments)
- Andrej Novikov (1 comment)
- Andrew Nesbitt (7 PRs)
- Andrius Bacianskas (1 comment)
- Angelo (1 comment)
- Arkadiy Kukarkin (9 comments)
- ask03 (1 issue)
- Ayush Gupta (1 comment)
- Barry G (1 issue, 6 comments)
- Baruch Velez (1 comment)
- Beeno Tung (1 PR, 3 comments)
- Benjamín Vázquez (1 issue)
- Blake Byrnes (3 reviews, 2 comments)
- Brendan Miller (1 comment)
- Brian (1 issue, 9 comments)
- Chad Retz (2 comments)
- Chance Hudson (1 PR, 1 issue, 4 reviews)
- CHEVALAY JOSSELIN (1 PR, 1 issue, 5 comments)
- Chris Anderson (1 PR, 3 reviews)
- Chris de Jong (1 comment)
- Christian Couder (1 comment)
- cloudbitsum (1 issue, 1 comment)
- comntr (3 issues, 2 comments)
- Daniel Krech (1 PR, 1 comment)
- David (1 PR)
- David Ammouial (1 comment)
- David Dias (1 PR, 1 issue, 28 reviews, 23 comments)
- Davit Barbakadze (1 issue, 3 comments)
- Despoinis (1 issue, 2 comments)
- Diogo Silva (3 PRs, 1 review, 1 comment)
- dirkmc (17 PRs, 24 reviews, 14 comments)
- Dmitriy Ryajov (1 comment)
- Dustin (1 comment)
- edoo (1 PR)
- Elad (1 comment)
- Federico Luzzi (2 issues)
- Filip Š (1 PR, 2 comments)
- Francis Gulotta (4 comments)
- Franck Royer (1 comment)
- Friedel Ziegelmayer (2 reviews, 9 comments)
- Georgios Rassias (1 PR, 4 comments)
- Gorka Ludlow (1 comment)
- Grant Herman (4 PRs, 1 issue, 3 reviews, 12 comments)
- Guilherme Gervasio (1 issue, 1 comment)
- Guy Sviry (1 issue, 1 comment)
- Haywirez (1 comment)
- hazae41 (1 issue, 3 comments)
- Henrique Dias (1 review, 8 comments)
- Henry Rodrick (1 review, 1 comment)
- heqimagic (1 issue, 1 comment)
- Huberto Kaiser Filho (2 issues, 4 comments)
- Hugo Dias (16 PRs, 3 issues, 29 reviews, 48 comments)
- Hunter Trujillo (1 issue, 2 comments)
- Irakli Gozalishvili (6 PRs, 16 issues, 14 reviews, 50 comments)
- isan_rivkin (2 PRs, 5 comments)
- IwraStudios (1 issue)
- Jacob Heun (26 PRs, 5 issues, 67 reviews, 86 comments)
- Jakub Sztandera (5 comments)
- James Cullum (Pseudonym) (1 comment)
- JamesYin (4 comments)
- João Antunes (1 PR, 2 issues, 4 comments)
- John Hiesey (1 comment)
- Jon (1 comment)
- Jon Chiang (1 comment)
- Jonathan Gaillard (1 issue, 2 comments)
- jzstern (1 comment)
- kesavananbu (1 comment)
- klueq (1 comment)
- kwakwaa (2 issues, 1 comment)
- lanmower (1 issue)
- LifeBCE (2 issues, 3 comments)
- Lorenzo Setale (1 comment)
- LuffySmile (1 issue)
- Łukasz Magiera (5 reviews, 4 comments)
- Maciej Krüger (4 reviews, 26 comments)
- Marcin Czenko (1 issue, 1 comment)
- Marcin Rataj (6 PRs, 7 issues, 9 reviews, 16 comments)
- Mark Robert Henderson (3 issues, 9 comments)
- Martín Acosta (1 issue)
- Martin Heidegger (1 issue)
- Matt Joiner (1 comment)
- Matt Ober (2 issues, 4 comments)
- Matteo Collina (2 comments)
- Michael Muré (1 PR)
- Mikeal Rogers (1 PR, 6 issues, 7 reviews, 36 comments)
- Mikerah (1 PR, 1 comment)
- Mitra Ardron (3 comments)
- Mounish Sai (1 PR)
- Nate Foss (1 comment)
- Nick Poulden (1 comment)
- nijynot (1 comment)
- Nitin Patel (10 PRs, 5 issues, ...
v0.35.0-rc.7
Bug Fixes
- flakey windows test (#1987) (9708c0a)
- really disable DHT (#1991) (2470be8)
- remove non default ipld formats in the browser (#1980) (4376121)
BREAKING CHANGES
-
Browser application bundles now include only
ipld-dag-pb
,ipld-dag-cbor
andipld-raw
IPLD codecs. Other codecs should be added manually, see https://github.com/ipfs/js-ipfs/blob/master/README.md#optionsipld for details. -
In Node.js
require('ipfs')
- all IPLD formats included
-
In browser application bundle
require('ipfs')
bundled with webpack/browserify/etc.- only
ipld-dag-pb
,ipld-dag-cbor
andipld-raw
included
- only
-
CDN bundle
<script src="https://unpkg.com/ipfs/dist/index.min.js"></script>
- all IPLD formats included
Co-Authored-By: hugomrdias [email protected]
v0.35.0-rc.6
v0.35.0-rc.5
v0.35.0-rc.4
Bug Fixes
Code Refactoring
Performance Improvements
BREAKING CHANGES
- Constructor config validation is now a bit more strict - it does not allow
null
values or unknown properties.
v0.35.0-rc.3
v0.35.0-rc.2
chore: release version v0.35.0-rc.2
v0.35.0-rc.1
Bug Fixes
- cat deeply nested file (#1920) (dcb453a)
- handle subdomains for ipfs.dns (#1933) (29072a5)
- only dial to unconnected peers (#1914) (1478652)
Features
- add HTTP DAG API (#1930) (a033e8b)
- display version info when starting daemon (#1915) (6b789ee)
- provide access to multicodec (#1921) (ceec0bc), closes #1913
- issue-1852: support multiple API and Gateway addresses (#1903) (4ad104d), closes #1852
Performance Improvements
v0.35.0-rc.0
Bug Fixes
- add support for resolving to the middle of an IPLD block (#1841) (fc08243)
- dht browser disabled (#1879) (7c5a843)
- ipv6 multiaddr in stdout (#1854) (35fd541), closes #1853
- make clear pins function in tests serial (#1910) (503e5ac), closes #1890
- pin.rm test EPERM rename (#1889) (c60de74)
- temporarily disable random walk dht discovery (#1907) (3fff46a)
Code Refactoring
Features
- add
--enable-preload
to enable/disable preloading for daemons (#1909) (9470900) - limit connections number (#1872) (bebce7f)
BREAKING CHANGES
ipfs.util.isIPFS
andipfs.util.crypto
have moved to static exports and should be accessed viaconst { isIPFS, crypto } = require('ipfs')
.
The modules available under ipfs.types.*
have also become static exports.
License: MIT
Signed-off-by: Alan Shaw [email protected]
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.
License: MIT
Signed-off-by: Alan Shaw [email protected]