Skip to content

Commit f4eb015

Browse files
committed
Compile release notes for v0.2.9
1 parent b716d64 commit f4eb015

18 files changed

+59
-32
lines changed

docs/release_notes.rst

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,65 @@ Release Notes
33

44
.. towncrier release notes start
55
6+
py-libp2p v0.2.9 (2025-07-09)
7+
-----------------------------
8+
9+
Breaking Changes
10+
~~~~~~~~~~~~~~~~
11+
12+
- Reordered the arguments to ``upgrade_security`` to place ``is_initiator`` before ``peer_id``, and made ``peer_id`` optional.
13+
This allows the method to reflect the fact that peer identity is not required for inbound connections. (`#681 <https://github.com/libp2p/py-libp2p/issues/681>`__)
14+
15+
16+
Bugfixes
17+
~~~~~~~~
18+
19+
- Add timeout wrappers in:
20+
1. ``multiselect.py``: ``negotiate`` function
21+
2. ``multiselect_client.py``: ``select_one_of`` , ``query_multistream_command`` functions
22+
to prevent indefinite hangs when a remote peer does not respond. (`#696 <https://github.com/libp2p/py-libp2p/issues/696>`__)
23+
- Align stream creation logic with yamux specification (`#701 <https://github.com/libp2p/py-libp2p/issues/701>`__)
24+
- Fixed an issue in ``Pubsub`` where async validators were not handled reliably under concurrency. Now uses a safe aggregator list for consistent behavior. (`#702 <https://github.com/libp2p/py-libp2p/issues/702>`__)
25+
26+
27+
Features
28+
~~~~~~~~
29+
30+
- Added support for ``Kademlia DHT`` in py-libp2p. (`#579 <https://github.com/libp2p/py-libp2p/issues/579>`__)
31+
- Limit concurrency in ``push_identify_to_peers`` to prevent resource congestion under high peer counts. (`#621 <https://github.com/libp2p/py-libp2p/issues/621>`__)
32+
- Store public key and peer ID in peerstore during handshake
33+
34+
Modified the InsecureTransport class to accept an optional peerstore parameter and updated the handshake process to store the received public key and peer ID in the peerstore when available.
35+
36+
Added test cases to verify:
37+
1. The peerstore remains unchanged when handshake fails due to peer ID mismatch
38+
2. The handshake correctly adds a public key to a peer ID that already exists in the peerstore but doesn't have a public key yet (`#631 <https://github.com/libp2p/py-libp2p/issues/631>`__)
39+
- Fixed several flow-control and concurrency issues in the ``YamuxStream`` class. Previously, stress-testing revealed that transferring data over ``DEFAULT_WINDOW_SIZE`` would break the stream due to inconsistent window update handling and lock management. The fixes include:
40+
41+
- Removed sending of window updates during writes to maintain correct flow-control.
42+
- Added proper timeout handling when releasing and acquiring locks to prevent concurrency errors.
43+
- Corrected the ``read`` function to properly handle window updates for both ``read_until_EOF`` and ``read_n_bytes``.
44+
- Added event logging at ``send_window_updates`` and ``waiting_for_window_updates`` for better observability. (`#639 <https://github.com/libp2p/py-libp2p/issues/639>`__)
45+
- Added support for ``Multicast DNS`` in py-libp2p (`#649 <https://github.com/libp2p/py-libp2p/issues/649>`__)
46+
- Optimized pubsub publishing to send multiple topics in a single message instead of separate messages per topic. (`#685 <https://github.com/libp2p/py-libp2p/issues/685>`__)
47+
- Optimized pubsub message writing by implementing a write_msg() method that uses pre-allocated buffers and single write operations, improving performance by eliminating separate varint prefix encoding and write operations in FloodSub and GossipSub. (`#687 <https://github.com/libp2p/py-libp2p/issues/687>`__)
48+
- Added peer exchange and backoff logic as part of Gossipsub v1.1 upgrade (`#690 <https://github.com/libp2p/py-libp2p/issues/690>`__)
49+
50+
51+
Internal Changes - for py-libp2p Contributors
52+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53+
54+
- Added sparse connect utility function to pubsub test utilities for creating test networks with configurable connectivity. (`#679 <https://github.com/libp2p/py-libp2p/issues/679>`__)
55+
- Added comprehensive tests for pubsub connection utility functions to verify degree limits are enforced, excess peers are handled correctly, and edge cases (degree=0, negative values, empty lists) are managed gracefully. (`#707 <https://github.com/libp2p/py-libp2p/issues/707>`__)
56+
- Added extra tests for identify push concurrency cap under high peer load (`#708 <https://github.com/libp2p/py-libp2p/issues/708>`__)
57+
58+
59+
Miscellaneous Changes
60+
~~~~~~~~~~~~~~~~~~~~~
61+
62+
- `#678 <https://github.com/libp2p/py-libp2p/issues/678>`__, `#684 <https://github.com/libp2p/py-libp2p/issues/684>`__
63+
64+
665
py-libp2p v0.2.8 (2025-06-10)
766
-----------------------------
867

newsfragments/579.feature.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

newsfragments/621.feature.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

newsfragments/631.feature.rst

Lines changed: 0 additions & 7 deletions
This file was deleted.

newsfragments/639.feature.rst

Lines changed: 0 additions & 6 deletions
This file was deleted.

newsfragments/649.feature.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

newsfragments/678.misc.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

newsfragments/679.internal.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

newsfragments/681.breaking.rst

Lines changed: 0 additions & 2 deletions
This file was deleted.

newsfragments/684.misc.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)