⚡️ v0.25.0 RELEASE 🚀 #910
Description
🚀 This release brings ton of bug fixes and refactor of the internal pieces
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🔦 Highlights
🏮 ipfs-repo is now 🐲 free
The IPFS Repo Class went through some careful refactoring process. Now it is easier to understand its internals and to support different backend storage adapters.
To create a js-ipfs node with your own custom repo you just have to:
const node = new IPFS({repo: <your own Repo instance with your backend storage adapters>})
If you are curious, you can learn about what are the default storage adapters in the IPFS Repo itself, namely:
- Node.js - https://github.com/ipfs/js-ipfs-repo/blob/master/src/default-options.js
- Browser - https://github.com/ipfs/js-ipfs-repo/blob/master/src/default-options-browser.js
⬢ libp2p is now used directly and the bundles live inside the js-ipfs repo
The JavaScript implementation of libp2p received a lot of love recently, including the addition of Tutorials. You can consult all the details on the Log entry of libp2p's Captain.log - libp2p/js-libp2p#6 (comment)
🏎 SPDY is out of the mix and there goes browserify-zlib special shimming.
SPDY has been removed from the default browser bundle in favor of supporting libp2p-multiplex
only. SPDY was the Stream Muxer of js-ipfs since almost the beginning, but since go-ipfs never got a complete implementation of SPDY, we ended up switching to libp2p-multiplex
to guarantee interop between implementations. What this means is that you will continue to see the interop, but now your browser bundle will be significantly lighter.
📞 wrtc, the WebRTC module for Node.js is now optional
wrtc
, a module that enables js-ipfs Node.js nodes to speak WebRTC, has been excluded from the default list of modules so that Linux users can have a better time when using js-ipfs natively. You can still bring it back and now not only use wrtc
but you can also use electron-webrtc
, the other WebRTC module for Node.js See how to achieve that in the project's README - https://github.com/ipfs/js-ipfs#advanced-options-when-creating-an-ipfs-node.
Note, this doesn't change the behavior in the browser. Browser nodes will still continue to use WebRTC by default.
🌱 Future
- New ✨
aegir
is coming soon! If you have contributed to js-ipfs and/or js-libp2p, you might be familiar with aegir, our asset pipeline, test, lint, release management tool.aegir
makes it extremely convinient to ensure that every single piece of the js-ipfs puzzle is up to the same level of standards and now we are making it even better. Check the development here: [WIP] Aegir@next aegir#134 - We continue actively working on Circuit Relay, now we a close to final specification available at -- The Circuit Relay Specification libp2p/specs#22 --. Once this spec is merged, we will update the deps to follow it and integrate it with js-ipfs
- We want to make Electron be a first class platform to run js-ipfs. There are some challenges due to the usage of native dependencies but we are proactively working towards fixing those compatibility issues. Follow this work here: Runtime Support: Electron & Muon #843
✅ Release Checklist
- Robustness and quality
- Ensure that all tests are passing, this includes:
- unit
- interop
- sharness
- Run tests of the following projects with the new release:
- n/a
- Ensure that all tests are passing, this includes:
- Documentation
- Ensure that README.md is up to date
- Ensure that all the examples run
- Communication
- Create the release issue
- Announcements (pre and post)
- IRC
- Blog post