Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

⚡️ v0.26.0 RELEASE 🚀 #986

Closed
16 tasks done
daviddias opened this issue Sep 4, 2017 · 6 comments
Closed
16 tasks done

⚡️ v0.26.0 RELEASE 🚀 #986

daviddias opened this issue Sep 4, 2017 · 6 comments
Assignees

Comments

@daviddias
Copy link
Member

daviddias commented Sep 4, 2017

🚀 This release brings bug fixes, perf improvements, git support, http gateway and support for a new transport
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟

🗺 What's left for release

🔦 Highlights

Here are some of the highlights for this new js-ipfs release. There were plenty more bug fixes, tiny perf improvements, doc improvements and others all across the js-ipfs module ecosystem. A really BIG THANK YOU to everyone that has been contributing with code, tests, examples and also bug reports! They help us identify situations that we miss with out tests.

New InterPlanetary Infrastructure

You might have noticed some hiccups a couple of weeks ago, that was due to a revamp and improvement in our infrastructure that separated Bootstraper nodes from Gateway nodes. We've now fixed that by ensuring that a js-ipfs node connects to all of them. More nodes on #973 and #975. Thanks @lgierth for improving IPFS infra and for setting up all of those DNS websockets endpoints for js-ipfs to connect to :)

Now js-ipfs packs the IPFS Gateway as well

You read it right! Now, js-ipfs packs the IPFS Gateway and launches it when you boot a daemon (jsipfs daemon). With this, you can use js-ipfs to access content in the browser just like you use to do in go-ipfs or use js-ipfs as a complete solution to add content in the network and preview it without leaving JS land, it is great for tooling. This was a awesome contribution from @ya7ya and @harshjv that spent a lot of time adjusting and iterating on the implementation to make sure it would fit with the structure of js-ipfs, 👏🏽👏🏽👏🏽👏🏽.

Huge perf and memory improvement

With reports such as #952, we started investigating what were the actual culprits for such memory waste that would lead the browser to crash. It turns out that there were two and we got one fixed. The two were:

  • browserify-aes - @dignifiedquire identified that there were a lot of Buffers being alocated in browserify-aes, the AES shim we use in the browser (this was only a issue in the browser) and promptly came with a fix reduce buffer creation for ctr mode browserify/browserify-aes#48 👏🏽👏🏽👏🏽👏🏽
  • WebRTC - WebRTC is really cpu+mem hungry and our combination of opening multiple connections without limits + the constant switch between transport and routing at the main thread, leads to some undesirable situations where the browser simply crashes for so much thrashing. We are actively working on this with Connection Closing.

That said, situations such as #952 are now fixed. Happy file browser sharing! :)

Now git is also one of the IPLD supported formats by js-ipfs

Now js-ipfs supports ipld-git! This is huge, it means that you can traverse through git objects using the same DAG API that you use for Ethereum, dag-pb and dag-cbor. This feature came in with an example, go check out how to traverse a git repo. 👏🏽👏🏽 to @magik6k for shipping this in record time.

The libp2p-webrtc-star multiaddrs have been fixed

@diasdavid (me) and @lgierth had a good convo and reviewed a bunch of stuff over Coffee ☕️, it was great!. During that chat, we figured that libp2p-webrtc-star multiaddrs have been implemented incorrectly and figured out the migration path to the correct version.

You can learn more what this endeavour involved here #981. Essentially, there are no more /libp2p-webrtc-star/dns4/star-signal.cloud.ipfs.team/wss, instead we use /dns4/star-signal.cloud.ipfs.team/wss/p2p-webrtc-star which signals the proper encapsulation you expect from a multiaddr.

New example showing how to stream video using hls.js

@moshisushi developed a video streamer on top of js-ipfs and shared an example with us. You can now find that example as part of the examples set in this repo. Check https://github.com/ipfs/js-ipfs/tree/master/examples/browser-video-streaming, it is super cool 👏🏽👏🏽👏🏽👏🏽.

HLS (Apple's HTTP Live Streaming) is one of the several protocols currently available for adaptive bitrate streaming.

webcrypto-ossl was removed from the dependency tree

We've purged webcrypto-ossl from the dependency tree. It was only used to generate RSA keys faster (significantly faster) but at the same time, it caused a lot of hurdles to being a native dependency.

There is an open issue on the Node.js project to expose the RSA key generation primitive, if you have a use case for it please do share it in that thread. This would enable js-ipfs to use the native crypto module, have the same (or better) perf of webcrypto-ossl and not have to deal with an external native dependency.

PubSub tutorial published

@pgte published an amazing tutorial on how to use PubSub with js-ipfs and in the browser! Read it on the IPFS Blog https://ipfs.io/blog/29-js-ipfs-pubsub.

🌱 Future

We have so much stuff in the pipeline, some of it almost got into this release but we eventually decided to defer it to a next release and make sure everyone would have access to the goodies in the highlights section. That said, expect the following and more to come in a future release.

Circuit Relay

Circuit Relay is almost here, @dryajov showed us a demo of it working on the last IPFS All hands, you can watch it on the uploaded recording in YouTube https://youtu.be/chAXj_vsR2s?t=25m01s. Since then, @dryajov @stebalian and @vyzo have been working on making sure interop is fully tested.

Follow the development on the Awesome Endeavour PR - #830

Delegated Routing

One of the results from the Coffee Chat ☕️ was the decision to move forward with Delegated Routing. This was a long one coming and one that will enable js-ipfs nodes to leverage the already established presence of bootstrapers and gateway to find the Peers that have the content on the network, saving time and resources. Track the dev here libp2p/js-libp2p#120

Expanded top level API for Streaming Calls

We will expose a pull-streams interface to js-ipfs in the next minor version (0.27). pull-streams are light and more performance than Node.js streams giving users a considerable perf boost (example: #988).

We will keep the Node.js Streams (Readable Stream) interface as well. Track dev here:
ipfs-inactive/interface-js-ipfs-core#126 (comment)

New AEgir (v12)

@dignifiedquire got the chance to spend some time giving love to AEgir, our custom build assets and release tool we use for all the JS projects in the IPFS ecosystem.

The new version of AEgir adds a lot of the features and needed refactor that has been requested for a while, however, we are still polishing it and will start using in js-ipfs once we get the integration complete.

Today you can see AEgir 12 already being used in some IPFS modules, including ipfs-api!

New libp2p Transport, libp2p-websocket-star

@mkg20001 created a new libp2p Transport! libp2p-websocket-star. This new transport will work similarly to libp2p-webrtc-star, but using WebSockets (less cpu+mem hungry) than WebRTC. Track the development here: libp2p/js-libp2p#122

✅ Release Checklist

@daviddias daviddias self-assigned this Sep 4, 2017
@victorb
Copy link
Member

victorb commented Sep 4, 2017

I think "Deploy js-ipfs to the Galaxy" can be de-coupled from the js-ipfs release, as there won't be any code changes (hopefully at least) with js-ipfs for completing that task.

@daviddias
Copy link
Member Author

daviddias commented Sep 5, 2017

Added unsafe-eval no more to the list.

@dignifiedquire
Copy link
Member

pull-ws fix merged and released

turns out that's not needed anymore, the issue was due to the Jest issue I fixed recently

@daviddias
Copy link
Member Author

Today is the day! :)

@daviddias
Copy link
Member Author

daviddias commented Sep 13, 2017

[09:28:00] Publishing to npm...
+ ipfs@0.26.0

@daviddias
Copy link
Member Author

Blog post on https://ipfs.io/blog/30-js-ipfs-0-26/

MicrowaveDev pushed a commit to galtproject/js-ipfs that referenced this issue May 22, 2020
* feat: add file dom api support to files api

* feat: add support for File DOM API to files-regular

* chore: fix package declaration cause npm is dumb

* chore: fix lint

* chore: add ipfs-utils

* fix: change the requires to ipfs-utils

* chore: increase max bundle size
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants