Save the routers, save the world.
# 🔦 Highlights
Libp2p 0.25 is already in the new js-ipfs 0.35 release (opens new window). 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 (opens new window).
# ✂️ Better Connection Management
We fixed an issue with Libp2p Switch that resulted in the Connection Manager thinking there were far fewer connections than there actually were. The Connection Manager is back to keeping your router safe and your connection count within its configured range (opens new window).
# 📔 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, helps to ensure libp2p is spending its connection resources wisely. You can read more about the configuration options in the libp2p-switch readme (opens new window).
# 🔢 Dial Queues
Libp2p Switch now has better queuing for dials! Previously, the only limiting of dials was 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 (opens new window) 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 (opens new window) if you want to be able to unsubscribe all listeners for a topic.
# ❤️ Huge thank you to everyone that made this release possible
In alphabetical order, here are all the humans that contributed to the release:
- a1300 (opens new window) (1 comment)
- Adam Gall (opens new window) (1 comment)
- Aditya Bose (opens new window) (1 PR)
- Alan Shaw (opens new window) (10 PRs, 4 issues, 13 reviews, 12 comments)
- Alberto Elias (opens new window) (3 PRs, 2 issues, 1 review, 12 comments)
- Alex Potsides (opens new window) (1 issue)
- André Cruz (opens new window) (1 issue, 4 comments)
- Andrej Novikov (opens new window) (1 comment)
- Andrew Nesbitt (opens new window) (2 PRs)
- Beeno Tung (opens new window) (1 PR, 3 comments)
- Blake Byrnes (opens new window) (1 PR, 3 reviews, 4 comments)
- Chris Anderson (opens new window) (1 PR)
- Chris Aslanoglou (opens new window) (1 issue)
- Daniel Krech (opens new window) (1 PR)
- David Dias (opens new window) (10 reviews, 7 comments)
- Davit Barbakadze (opens new window) (1 issue, 3 comments)
- dirkmc (opens new window) (12 PRs, 8 reviews, 10 comments)
- Dmitriy Ryajov (opens new window) (4 comments)
- Donald Tsang (opens new window) (1 issue)
- Elad (opens new window) (1 comment)
- Franck Royer (opens new window) (1 comment)
- Friedel Ziegelmayer (opens new window) (2 reviews, 9 comments)
- Georgios Rassias (opens new window) (1 comment)
- Gregory Markou (opens new window) (1 comment)
- Henrique Dias (opens new window) (2 comments)
- Huberto Kaiser Filho (opens new window) (2 issues, 4 comments)
- Hugo Dias (opens new window) (6 PRs, 14 reviews, 15 comments)
- Hunter Trujillo (opens new window) (1 comment)
- Irakli Gozalishvili (opens new window) (5 issues)
- isan_rivkin (opens new window) (1 PR, 1 comment)
- IwraStudios (opens new window) (1 issue)
- Jaco Greeff (opens new window) (1 comment)
- Jacob Heun (opens new window) (23 PRs, 6 issues, 66 reviews, 79 comments)
- João Antunes (opens new window) (1 PR, 1 issue, 1 comment)
- John Hiesey (opens new window) (1 comment)
- Lorenzo Setale (opens new window) (3 comments)
- Maciej Krüger (opens new window) (3 PRs, 2 issues, 2 reviews, 32 comments)
- Marcin Rataj (opens new window) (1 PR, 1 comment)
- Mark Robert Henderson (opens new window) (1 issue, 3 comments)
- Martín Acosta (opens new window) (1 issue)
- Martin Heidegger (opens new window) (1 issue)
- Matt Joiner (opens new window) (1 issue, 1 comment)
- Matteo Collina (opens new window) (1 issue, 1 review)
- Mikeal Rogers (opens new window) (1 PR, 4 issues, 5 comments)
- Mikerah (opens new window) (1 PR, 2 issues, 2 comments)
- nikor (opens new window) (3 PRs, 3 comments)
- noot (opens new window) (1 review, 3 comments)
- Oli Evans (opens new window) (3 PRs)
- Patrick Bay (opens new window) (1 issue)
- Pedro Teixeira (opens new window) (1 review, 5 comments)
- Perry Kundert (opens new window) (2 PRs)
- raduiliescu83 (opens new window) (1 issue)
- Rafael Matias (opens new window) (1 PR)
- Raúl Kripalani (opens new window) (2 issues, 9 comments)
- Richard Schneider (opens new window) (1 comment)
- Robert Kiel (opens new window) (1 PR, 1 comment)
- Robert Misiorowski (opens new window) (1 issue)
- Rod Vagg (opens new window) (1 PR, 1 review)
- ron litzenberger (opens new window) (3 comments)
- Sam Strauch (opens new window) (1 issue)
- Taaliman (opens new window) (1 issue, 1 comment)
- Theo Gravity (opens new window) (1 comment)
- Thomas Eizinger (opens new window) (3 PRs, 1 issue, 8 comments)
- Vasco Santos (opens new window) (22 PRs, 6 issues, 59 reviews, 35 comments)
- Victor Bjelkholm (opens new window) (1 review, 1 comment)
- Volker Mische (opens new window) (1 PR, 5 reviews, 4 comments)
- Yusef Napora (opens new window) (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 in the libp2p repo (opens new window) - 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.tech/ and help users finding their answers.
- Join the ⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 (opens new window) 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 (opens new window). We are also available at the #libp2p channel on Freenode.