-
Notifications
You must be signed in to change notification settings - Fork 1.2k
⚡️ v0.35.0 RELEASE 🚀 #1826
Comments
What's missing to have this one released? Are there instructions on how to enable the DHT in the browser? Btw, it might be useful to differentiate a Full Node DHT vs a DHT client. js-ipfs is now using delegated content routing, correct? |
Right now, the new DHT allows the JS IPFS node to discover so many peers that it cannot process them quickly enough and this is causing an issue with the node using 100% CPU and eventually running out of memory. The connection manager isn't doing a good enough job of disconnecting peers when over the threshold and the 100% CPU usage uncovered a bug in the repo lock file implementation which is being addressed here moxystudio/node-proper-lockfile#74 We're also waiting on libp2p/js-libp2p-switch#309 to address an issue with Essentially there's a bunch of fallout from the DHT work that we're addressing. Our e2e and interop tests did not pick these issues up as you only really see them in a long running process when a node acquires many many peers. We're working to make sure the node is stable before we release. We've made good progress already but we're not there yet.
Not specifically but that's a good suggestion and I'll add them to the release notes and the README.
Delegated content routing made it into js-libp2p but I don't know if there's a public node running that is setup with it turned on that JS IPFS can use (@jacobheun?). We should get an example together for IPFS or perhaps even enable by default? |
@alanshaw I am following up on the nodes that should be available for delegated routing, ipfs/infra#426 (comment). There is an existing browser based example of configuring libp2p and js-ipfs for delegated routing at https://github.com/libp2p/js-libp2p/tree/v0.24.4/examples/delegated-routing. It currently references an old branch for the http api in go-ipfs needed for delegated routing. |
Update: we have one failing test that needs to be fixed up and then I need to do some quick browser testing so that I can adjust the default connection manager limits to something a little more appropriate for the browser (DHT will be disabled by default in the browser for now but if users decide to turn it on we don't want 🔥!). After that's done, it's on to the release process \o/ 🚢🚢🚢 I've been running I'm currently aiming for release mid-end of next week. |
Update: we've been squashing bugs in the libp2p switch like no tomorrow. We fix one thing and another issue arrises. Since the last update the following PRs were created/merged:
In a nutshell, we fixed the 100% CPU issue by introducing a dial queue in libp2p but we needed to arrange the queue in such a way that dials to connected peers or peers we've previously been connected to are prioritised. This is so that we don't end up losing all our existing peers because we're spending all our time dialing out to new, slow or unavailable peers. I'm now waiting on #1976 and then another RC will be released and we'll continue the release process. Thank you all for your patients ❤ |
Update: we've made the hard decision to cut enabling the DHT by default from this release. There are still problems that need to ironed out and we can't delay any further. Apologies to anyone who was looking forward to this, but we simply can't release it as is. We'll be including all the latest and greatest improvements we've made to libp2p into this release but the DHT will be disabled by default. You can turn it on, but your mileage may vary. Providing the interop tests pass you can expect the release later this week. Waiting on #1982 before release process can continue. |
If you're interesting in the full journey and what's happening right now with the DHT then please have a read: #1984 |
🗺 What's left for release?
DHTdelayed until a future release--local
to--offline
--enable-preload
to enable/disable preloading for daemons🔦 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 26% off the bundle size of JS IPFS since 0.33, that's a reduction of over a quarter 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
andresolve
. 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
orAddresses.Gateway
in your JSON config file to be an array of multiaddrs instead of a single string multiaddr. Here's an example:🔭 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
--local
was renamed to--offline
--enable-preload
tojsipfs daemon
command to allow users to enable or disable content preloadingipfs.util.isIPFS
andipfs.util.crypto
have moved to static exports and should now be accessed like:ipfs.types.*
have moved to static exports and should now be accessed like:ipfs.resolve
now supports resolving to the middle of an IPLD block instead of erroring. Given: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/api/v0/dag/put
/api/v0/dag/get
/api/v0/dag/resolve
✅ Release Checklist
name-your-contributors
. Generate a nice markdown list with this script.❤️ Huge thank you to everyone that made this release possible
In alphabetical order, here are all the humans that contributed to the release:
🙌🏽 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:
help wanted
label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wantedThe best place to ask your questions about IPFS, how it works and what you can do with it is at discuss.ipfs.io. We are also available at the #ipfs channel on Freenode.
The text was updated successfully, but these errors were encountered: