-
Notifications
You must be signed in to change notification settings - Fork 501
Description
Save the routers, save the world.
🔦 Highlights
0.25 is already in the imminent js-ipfs 0.35 release. If you're using js-ipfs, you'll get these changes immediately if you upgrade there!
☎️ Auto Dial
Libp2p will now auto dial to discovered peers by default. This can be disabled in configuration if you need to do any specialized dialing. Discovered peers will only be dialed if we are under our min peers threshold, which is configured for the Connection Manager. You can read more about Peer Discovery and Auto Dial here.
✂️ Better Connection Management
The Libp2p Switch was doing a bad job of letting the Connection Manager know just how many connections there were. This resulted in the Connection Manager thinking there were far fewer connections than there actually were. This has been fixed, and now the Connection Manager is back to keeping your router safe from the connection plague.
📔 Blacklisting Undialable Nodes
Libp2p will now blacklist nodes that aren't dialable. The blacklisting includes an exponential backoff with a random jitter. This along with auto dial, help to ensure libp2p is spending its connection resources wisely. You can see the configuration options in the libp2p-switch readme.
🔢 Dial Queues
Libp2p Switch now has better queuing for dials! Previously, the only limiting of dials were done per peer. Now, all dials will enter a global queue so that we can better manage connection attempts. The current default limit is 100 parallel dials, but you can configure this to your needs. If a peer is already connected, any calls to .dial()
or .dialProtocol()
skip the line and will be executed immediately. Any dials done as a result of Auto Dial will take a back seat.
⚖️ Smaller than ever
Since the 0.24 release, libp2p has dropped some weight. The bundle size is now ~42% smaller!
🏗 API Changes
- Auto Dial is enabled by default. Applications that previously dialed on peer discovery should either stop doing so, or turn off Auto Dial. We recommend using Auto Dial if you're not customizing your dialing logic when peers are discovered.
- The DHT no longer lives under EXPERIMENTAL in the config. It is enabled directly in it's own config options. Check out the Peer and Content Routing example to see how to configure a basic Libp2p node with the DHT on.
- Pubsub now supports unsubscribe all. Check out interface-js-ipfs-core docs if you want to be able to unsubscribe all listeners for a topic.
✅ Release Checklist
- Robustness and quality
- Ensure that all tests are passing, this includes:
- unit
- Publish a release candidate to npm
# Minor prerelease (e.g. 0.24.1 -> 0.25.0-rc.0) $ npx aegir release --type preminor -t node -t browser --preid rc --dist-tag next # Increment prerelease (e.g. 0.25.0-rc.0 -> 0.25.0-rc.1) $ npx aegir release --type prerelease -t node -t browser --preid rc --dist-tag next
- Run tests of the following projects with the new release:
- 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
- Take a snapshot between of everyone that has contributed to this release (including its subdeps in IPFS, libp2p, IPLD and multiformats) using
name-your-contributors
. Generate a nice markdown list with this script - Announcements (both pre-release and post-release)
- IRC
- discuss.libp2p.io
- Blog post
- Copy release notes to the GitHub Release description
❤️ 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)
- Adam Gall (1 comment)
- Aditya Bose (1 PR)
- Alan Shaw (10 PRs, 4 issues, 13 reviews, 12 comments)
- Alberto Elias (3 PRs, 2 issues, 1 review, 12 comments)
- Alex Potsides (1 issue)
- André Cruz (1 issue, 4 comments)
- Andrej Novikov (1 comment)
- Andrew Nesbitt (2 PRs)
- Beeno Tung (1 PR, 3 comments)
- Blake Byrnes (1 PR, 3 reviews, 4 comments)
- Chris Anderson (1 PR)
- Chris Aslanoglou (1 issue)
- Daniel Krech (1 PR)
- David Dias (10 reviews, 7 comments)
- Davit Barbakadze (1 issue, 3 comments)
- dirkmc (12 PRs, 8 reviews, 10 comments)
- Dmitriy Ryajov (4 comments)
- Donald Tsang (1 issue)
- Elad (1 comment)
- Franck Royer (1 comment)
- Friedel Ziegelmayer (2 reviews, 9 comments)
- Georgios Rassias (1 comment)
- Gregory Markou (1 comment)
- Henrique Dias (2 comments)
- Huberto Kaiser Filho (2 issues, 4 comments)
- Hugo Dias (6 PRs, 14 reviews, 15 comments)
- Hunter Trujillo (1 comment)
- Irakli Gozalishvili (5 issues)
- isan_rivkin (1 PR, 1 comment)
- IwraStudios (1 issue)
- Jaco Greeff (1 comment)
- Jacob Heun (23 PRs, 6 issues, 66 reviews, 79 comments)
- João Antunes (1 PR, 1 issue, 1 comment)
- John Hiesey (1 comment)
- Lorenzo Setale (3 comments)
- Maciej Krüger (3 PRs, 2 issues, 2 reviews, 32 comments)
- Marcin Rataj (1 PR, 1 comment)
- Mark Robert Henderson (1 issue, 3 comments)
- Martín Acosta (1 issue)
- Martin Heidegger (1 issue)
- Matt Joiner (1 issue, 1 comment)
- Matteo Collina (1 issue, 1 review)
- Mikeal Rogers (1 PR, 4 issues, 5 comments)
- Mikerah (1 PR, 2 issues, 2 comments)
- nikor (3 PRs, 3 comments)
- noot (1 review, 3 comments)
- Oli Evans (3 PRs)
- Patrick Bay (1 issue)
- Pedro Teixeira (1 review, 5 comments)
- Perry Kundert (2 PRs)
- raduiliescu83 (1 issue)
- Rafael Matias (1 PR)
- Raúl Kripalani (2 issues, 9 comments)
- Richard Schneider (1 comment)
- Robert Kiel (1 PR, 1 comment)
- Robert Misiorowski (1 issue)
- Rod Vagg (1 PR, 1 review)
- ron litzenberger (3 comments)
- Sam Strauch (1 issue)
- Taaliman (1 issue, 1 comment)
- Theo Gravity (1 comment)
- Thomas Eizinger (3 PRs, 1 issue, 8 comments)
- Vasco Santos (22 PRs, 6 issues, 59 reviews, 35 comments)
- Victor Bjelkholm (1 review, 1 comment)
- Volker Mische (1 PR, 5 reviews, 4 comments)
- Yusef Napora (2 PRs, 1 comment)
🙌🏽 Want to contribute?
Would you like to contribute to the libp2p project and don't know how? Well, there are a few places you can get started:
- Check the issues with the
help wanted
label at the Ready column in our waffle board - https://waffle.io/libp2p/js-libp2p?label=help%20wanted - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the ⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 and be part of the Sprint action!
⁉️ Do you have questions?
The best place to ask your questions about libp2p, how it works and what you can do with it is at discuss.libp2p.io. We are also available at the #libp2p channel on Freenode.