mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-12 08:00:54 +00:00
Compile release notes for v0.2.9
This commit is contained in:
@ -3,6 +3,65 @@ Release Notes
|
|||||||
|
|
||||||
.. towncrier release notes start
|
.. towncrier release notes start
|
||||||
|
|
||||||
|
py-libp2p v0.2.9 (2025-07-09)
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
Breaking Changes
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Reordered the arguments to ``upgrade_security`` to place ``is_initiator`` before ``peer_id``, and made ``peer_id`` optional.
|
||||||
|
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>`__)
|
||||||
|
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
- Add timeout wrappers in:
|
||||||
|
1. ``multiselect.py``: ``negotiate`` function
|
||||||
|
2. ``multiselect_client.py``: ``select_one_of`` , ``query_multistream_command`` functions
|
||||||
|
to prevent indefinite hangs when a remote peer does not respond. (`#696 <https://github.com/libp2p/py-libp2p/issues/696>`__)
|
||||||
|
- Align stream creation logic with yamux specification (`#701 <https://github.com/libp2p/py-libp2p/issues/701>`__)
|
||||||
|
- 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>`__)
|
||||||
|
|
||||||
|
|
||||||
|
Features
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
- Added support for ``Kademlia DHT`` in py-libp2p. (`#579 <https://github.com/libp2p/py-libp2p/issues/579>`__)
|
||||||
|
- Limit concurrency in ``push_identify_to_peers`` to prevent resource congestion under high peer counts. (`#621 <https://github.com/libp2p/py-libp2p/issues/621>`__)
|
||||||
|
- Store public key and peer ID in peerstore during handshake
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Added test cases to verify:
|
||||||
|
1. The peerstore remains unchanged when handshake fails due to peer ID mismatch
|
||||||
|
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>`__)
|
||||||
|
- 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:
|
||||||
|
|
||||||
|
- Removed sending of window updates during writes to maintain correct flow-control.
|
||||||
|
- Added proper timeout handling when releasing and acquiring locks to prevent concurrency errors.
|
||||||
|
- Corrected the ``read`` function to properly handle window updates for both ``read_until_EOF`` and ``read_n_bytes``.
|
||||||
|
- Added event logging at ``send_window_updates`` and ``waiting_for_window_updates`` for better observability. (`#639 <https://github.com/libp2p/py-libp2p/issues/639>`__)
|
||||||
|
- Added support for ``Multicast DNS`` in py-libp2p (`#649 <https://github.com/libp2p/py-libp2p/issues/649>`__)
|
||||||
|
- 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>`__)
|
||||||
|
- 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>`__)
|
||||||
|
- Added peer exchange and backoff logic as part of Gossipsub v1.1 upgrade (`#690 <https://github.com/libp2p/py-libp2p/issues/690>`__)
|
||||||
|
|
||||||
|
|
||||||
|
Internal Changes - for py-libp2p Contributors
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- 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>`__)
|
||||||
|
- 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>`__)
|
||||||
|
- Added extra tests for identify push concurrency cap under high peer load (`#708 <https://github.com/libp2p/py-libp2p/issues/708>`__)
|
||||||
|
|
||||||
|
|
||||||
|
Miscellaneous Changes
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- `#678 <https://github.com/libp2p/py-libp2p/issues/678>`__, `#684 <https://github.com/libp2p/py-libp2p/issues/684>`__
|
||||||
|
|
||||||
|
|
||||||
py-libp2p v0.2.8 (2025-06-10)
|
py-libp2p v0.2.8 (2025-06-10)
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
Added support for ``Kademlia DHT`` in py-libp2p.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Limit concurrency in ``push_identify_to_peers`` to prevent resource congestion under high peer counts.
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
Store public key and peer ID in peerstore during handshake
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Added test cases to verify:
|
|
||||||
1. The peerstore remains unchanged when handshake fails due to peer ID mismatch
|
|
||||||
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
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
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:
|
|
||||||
|
|
||||||
- Removed sending of window updates during writes to maintain correct flow-control.
|
|
||||||
- Added proper timeout handling when releasing and acquiring locks to prevent concurrency errors.
|
|
||||||
- Corrected the ``read`` function to properly handle window updates for both ``read_until_EOF`` and ``read_n_bytes``.
|
|
||||||
- Added event logging at ``send_window_updates`` and ``waiting_for_window_updates`` for better observability.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Added support for ``Multicast DNS`` in py-libp2p
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Refactored gossipsub heartbeat logic to use a single helper method ``_handle_topic_heartbeat`` that handles both fanout and gossip heartbeats.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Added sparse connect utility function to pubsub test utilities for creating test networks with configurable connectivity.
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
Reordered the arguments to ``upgrade_security`` to place ``is_initiator`` before ``peer_id``, and made ``peer_id`` optional.
|
|
||||||
This allows the method to reflect the fact that peer identity is not required for inbound connections.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Uses the ``decapsulate`` method of the ``Multiaddr`` class to clean up the observed address.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Optimized pubsub publishing to send multiple topics in a single message instead of separate messages per topic.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
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.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Added peer exchange and backoff logic as part of Gossipsub v1.1 upgrade
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
Add timeout wrappers in:
|
|
||||||
1. ``multiselect.py``: ``negotiate`` function
|
|
||||||
2. ``multiselect_client.py``: ``select_one_of`` , ``query_multistream_command`` functions
|
|
||||||
to prevent indefinite hangs when a remote peer does not respond.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Align stream creation logic with yamux specification
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Fixed an issue in ``Pubsub`` where async validators were not handled reliably under concurrency. Now uses a safe aggregator list for consistent behavior.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
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.
|
|
||||||
@ -1 +0,0 @@
|
|||||||
Added extra tests for identify push concurrency cap under high peer load
|
|
||||||
Reference in New Issue
Block a user