Releases: ipfs/js-ipfs
v0.34.3
v0.34.2
v0.34.1
v0.34.0
Speed and flexibility, new IPFS for a new year!
🔦 Highlights
🏎 Reading Protobuf DAG nodes is super fast
Reading Protobuf DAG nodes just got a serious speed boost as well as a memory reduction. Previously Protobuf DAG nodes (dag-pb nodes for short) carried a multihash property (a CIDv0) with them. This used up loads of CPU time calculating the hash for a given node as it was retrieved from storage and with the advent of CIDv1 there was no guarantee the hashing algorithm and length were correct.
So, we removed it! 🦖 ...but that had the unfortunate consequence of making the object API a whole lot less useful when writing data - the DAG nodes you got back were basically the data you put in. Hence the object API was refactored to return CIDs instead of DAG nodes for write operations...and we all lived happily ever after.
🚤 Adding content is blazingly fast
We found a bottleneck that meant the bigger the file you added to IPFS, the longer it would take - oh no 😭! Good news folks, we've seen the speed of adding large files increase by 50% or more in some cases! 💥
Read all about it in the pull request notes.
🎄 HAMT support added to MFS
We're putting the whole of npm on IPFS! These days npm is like 5.3 terabytes of data and it's all going in MFS. This is super rad, but we needed a good sharding strategy because 5TB is a lorra lorra files.
If you're curious about npm on IPFS, check out the project here.
📣 IPNS over pubsub and DHT
Get informed of IPNS record updates and read and publish your IPNS records to the DHT. It's all there and it's all awesome. For those of you new to IPNS, let me give you the lowdown - IPNS puts the mutable in immutable 🤣 It's an age old problem, content addressing is rad and all that, but if I change something the hash changes - 👎 boo...but wait, IPNS solves this, you get a permenant address for changeable content - hooray \o/.
IPNS over pubsub gets the word out quicker to peers that are interested when an IPNS record changes. IPNS over DHT allows peers to find and resolve your IPNS address to some content in the first place! In the next JS IPFS release (0.35) the DHT will be enabled by default and it's going to be epic.
⚾️ CID handling improvements
Smoosh your CIDs into whatever version you like - you can now add data under a version 0 CID and get it back using a version 1 CID and vice versa. Now that you have this freedom you can encode them with whatever multibase encoding you like. Version 0 CIDs are all base58btc but if you convert to a version 1 CID you can encode it with base2, base32, base64url or whatever:
# base2
010111000000010010001000000100011011010100010010000001010010111001110001011010111100010100000111000011101010101010101101111100000001011101110001011110100001000100111010101101010111111001000111110001001010000101100010110000001000011110101110100100010101110110100010110100110000001110
# base32
bafybeicg2rebjoofv4kbyovkw7af3rpiitvnl6i7ckcywaq6xjcxnc2mby
# base58btc
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
# base64url
uAXASIEbUSBS5xa8UHDqqt8BdxehE6tX5HxKFiwIeukV2i0wOThis is all work to smooth out the eventual transition to base32 CIDv1 by default - a move to allow CIDs to be used as valid URL origins. Have a read of this for more.
To help you craft your artisanal CIDs we've introduced a --cid-base option to a bunch of CLI commands (and ?cid-base option to a bunch of HTTP API endpoints). Check it out:
jsipfs add file.txt --cid-base=base32
added bafybeibns4lrebrxaymvyshgmki5biwh6cd53idxfpen6ysomzrywtsm44 file.txt💪 Deps got upgrades!
We got you covered with WebUI 2.3 (quic support, responsive navbar, and a language selector), libp2p 0.24 and many other upgrades giving you a faster and smaller JS IPFS.
🏗 API Changes
- Object API methods that write DAG nodes now return a CID instead of a DAG node. Affected methods:
ipfs.object.newipfs.object.patch.addLinkipfs.object.patch.appendDataipfs.object.patch.rmLinkipfs.object.patch.setDataipfs.object.put- More info
DAGNodeinstances, which are part of the IPLD dag-pb format have been refactored. These instances no longer havemultihash,cidorserializedproperties. This effects the following API methods that return these types of objects:ipfs.object.getipfs.dag.get- More info
- Files API methods
add*,cat*,get*have moved fromfilesto the root namespace. Specifically, the following changes have been made:ipfs.files.add=>ipfs.addipfs.files.addPullStream=>ipfs.addPullStreamipfs.files.addReadableStream=>ipfs.addReadableStreamipfs.files.cat=>ipfs.catipfs.files.catPullStream=>ipfs.catPullStreamipfs.files.catReadableStream=>ipfs.catReadableStreamipfs.files.get=>ipfs.getipfs.files.getPullStream=>ipfs.getPullStreamipfs.files.getReadableStream=>ipfs.getReadableStream
- New core files API methods added:
- DHT API methods renamed and return types changed
- A new option is available in the CLI, HTTP API and core that will allow the multibase encoding to be specified for any CIDs that are returned as strings.
- A
--cid-baseoption has been added to the following CLI commands:jsipfs bitswap statjsipfs bitswap unwantjsipfs bitswap wantlistjsipfs block putjsipfs block statjsipfs addjsipfs lsjsipfs object getjsipfs object linksjsipfs object newjsipfs object patch add-linkjsipfs object patch append-datajsipfs object patch rm-linkjsipfs object patch set-datajsipfs object putjsipfs object statjsipfs pin addjsipfs pin lsjsipfs pin rmjsipfs resolve- Note: these two MFS commands already implement the
--cid-baseoption: jsipfs files lsjsipfs files stat
- A
?cid-base=query option has been added to the following HTTP endpoints:/api/v0/bitswap/wantlist/api/v0/bitswap/stat/api/v0/bitswap/unwant/api/v0/block/put/api/v0/block/stat/api/v0/add/api/v0/ls/api/v0/object/new/api/v0/object/get/api/v0/object/put/api/v0/object/stat/api/v0/object/links/api/v0/object/patch/append-data/api/v0/object/patch/set-data/api/v0/object/patch/add-link/api/v0/object/patch/rm-link/api/v0/pin/ls/api/v0/pin/add/api/v0/pin/rm/api/v0/resolve
- A
cidBaseoption has been added to the following core functions:resolve
- NOTE Using the CID base option in
bitswap,dagandobjectAPIs WILL NOT auto upgrade your CID to v1 if it is a v0 CID and WILL NOT apply the encoding you specified. This is because these APIs return IPLD objects with links and changing the version of the links would result in a different hash for the node if you were to re-add it. Also, the CID you used to retrieve the node wouldn't actually refer to the node you got back any longer. Read this for further context.
- A
- All API methods that returned
big.jsinstances now returnbignumber.jsinstances.
❤️ Huge thank you to everyone that made this release possible
By alphabetical order, here are all the humans that contributed to the release:
- Aakil Fernandes (1 comment)
- Alan Shaw (54 PRs, 12 issues, 115 reviews, 203 comments)
- Aleksey Bykhun (1 issue, 1 comment)
- Alex Knol (1 issue)
- Alex North (1 comment)
- Alex Potsides (43 PRs, 7 issues, 41 reviews, 96 comments)
- André Cruz (1 PR, 2 issues, 5 comments)
- ANUDAVIS (1 comment)
- Arkadiy Kukarkin (1 issue, 6 comments)
- [Artem Smi...
v0.34.0-rc.1
Bug Fixes
Code Refactoring
Features
BREAKING CHANGES
- All API methods that returned
big.jsinstances now returnbignumber.jsinstances.
License: MIT
Signed-off-by: Alan Shaw [email protected]
v0.34.0-rc.0
Bug Fixes
Features
v0.34.0-pre.0
Bug Fixes
- add dash case to pin cli (#1719) (eacd580)
- add missing dependencies (#1663) (4bcf4a7)
- allow disabling mfs preload from config (#1733) (5f66538)
- better error message when pubsub is not enabled (#1729) (5237dd9)
- examples after files API refactor (#1740) (34ec036)
- ipns datastore key (#1741) (a39770e)
- make circuit relay test (#1710) (345ce91)
- remove electron-webrtc and wrtc for now (#1718) (b6b50d5)
Code Refactoring
- files API (#1720) (a82a5dc)
- object APIs write methods now return CIDs (#1730) (ac5fa8e), closes /github.com/ipfs/interface-ipfs-core/pull/388#pullrequestreview-173866270
Features
- ipns over dht (#1725) (1a943f8)
- ipns over pubsub (#1559) (8712542)
- Web UI updated to v2.2.0 (#1711) (b2158bc)
Performance Improvements
BREAKING CHANGES
- Object API refactor.
Object API methods that write DAG nodes now return a CID instead of a DAG node. Affected methods:
ipfs.object.newipfs.object.patch.addLinkipfs.object.patch.appendDataipfs.object.patch.rmLinkipfs.object.patch.setDataipfs.object.put
Example:
// Before
const dagNode = await ipfs.object.new()// After
const cid = await ipfs.object.new() // now returns a CID
const dagNode = await ipfs.object.get(cid) // fetch the DAG node that was createdIMPORTANT: DAGNode instances, which are part of the IPLD dag-pb format have been refactored.
These instances no longer have multihash, cid or serialized properties.
This effects the following API methods that return these types of objects:
ipfs.object.getipfs.dag.get
See ipld/js-ipld-dag-pb#99 for more information.
License: MIT
Signed-off-by: Alan Shaw [email protected]
- Files API methods
add*,cat*,get*have moved fromfilesto the root namespace.
Specifically, the following changes have been made:
ipfs.files.add=>ipfs.addipfs.files.addPullStream=>ipfs.addPullStreamipfs.files.addReadableStream=>ipfs.addReadableStreamipfs.files.cat=>ipfs.catipfs.files.catPullStream=>ipfs.catPullStreamipfs.files.catReadableStream=>ipfs.catReadableStreamipfs.files.get=>ipfs.getipfs.files.getPullStream=>ipfs.getPullStreamipfs.files.getReadableStream=>ipfs.getReadableStream
License: MIT
Signed-off-by: Alan Shaw [email protected]
v0.33.1
v0.33.0
🔦 Highlights
🕹 Web UI 2.0
The IPFS Web UI has been given a HUGE revamp and is now 10x, no, 100x better than before! 😄
- Check the status of your node, it's Peer ID and connection info, the network traffic and the number of connected peers
- Easily manage files in your IPFS repo. You can drag and drop to add files, move and rename them, delete, share or download them
- You can explore IPLD data that underpins how IPFS works
- See all of your connected peers, geolocated by their IP address
- Review the settings for your IPFS node, and update them to better suit your needs
| Files | Explore | Peers | Settings |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
🛠 CID tool
A command line tool for converting, formatting and discovering properties of CIDs.
In the near future IPFS will be switching it's default CID version for added content to version 1 and will use base 32 encoding for serialized CIDs. This tool gives you the power to inspect and learn about CIDs as well as convert any CIDs you've been using from whatever base they're encoded in to a different base!
🏗 API Changes
- Added CLI command
ipfs cid [sub-command]- View the help with
ipfs cid --helpor view the documentation online
- View the help with
ipfs.types.dagCBORandipfs.types.dagPBhave been removeddag-cbornodes retrieved fromipfs.dag.getnow represent links as CID instances not{"/": "base-encoded-cid"}objects- See #1668 for more information




