Skip to content

v0.9.4

Latest
Compare
Choose a tag to compare
@lexnv lexnv released this 15 May 13:23
· 3 commits to master since this release
v0.9.4
6d61e2b

[0.9.4] - 2025-04-29

This release brings several improvements and fixes to litep2p, advancing its stability and readiness for production use.

Performance Improvements

This release addresses an issue where notification protocols failed to exit on handle drop, lowering CPU usage in scenarios like minimal-relay-chains from 7% to 0.1%.

Robustness Improvements

  • Kademlia:

    • Optimized address store by sorting addresses based on dialing score, bounding memory consumption and improving efficiency.
    • Limited FIND_NODE responses to the replication factor, reducing data stored in the routing table.
    • Address store improvements enhance robustness against routing table alterations.
  • Identify Codec:

    • Enhanced message decoding to manage malformed or unexpected messages gracefully.
  • Bitswap:

    • Introduced a write timeout for sending frames, preventing protocol hangs or delays.

Testing and Reliability

  • Fuzzing Harness: Added a fuzzing harness by SRLabs to uncover and resolve potential issues, improving code robustness. Thanks to @R9295 for the contribution!

  • Testing Enhancements: Improved notification state machine testing. Thanks to Dominique (@Imod7) for the contribution!

Dependency Management

  • Updated all dependencies for stable feature flags (default and "websocket") to their latest versions.

  • Reorganized dependencies under specific feature flags, shrinking the default feature set and avoiding exposure of outdated dependencies from experimental features.

Fixed

  • notifications: Exit protocols on handle drop to save up CPU of minimal-relay-chains (#376)
  • identify: Improve identify message decoding (#379)
  • crypto/noise: Set timeout limits for the noise handshake (#373)
  • kad: Improve robustness of addresses from the routing table (#369)
  • kad: Bound kademlia messages to the replication factor (#371)
  • codec: Decode smaller payloads for identity to None (#362)

Added

  • bitswap: Add write timeout for sending frames (#361)
  • notif/tests: check test state (#360)
  • SRLabs: Introduce simple fuzzing harness (#367)
  • SRLabs: Introduce Fuzzing Harness (#365)

Changed

  • features: Move quic related dependencies under feature flag (#359)
  • tests/substrate: Remove outdated substrate specific conformace testing (#370)
  • ci: Update stable dependencies (#375)
  • build(deps): bump hex-literal from 0.4.1 to 1.0.0 (#381)
  • build(deps): bump tokio from 1.44.1 to 1.44.2 in /fuzz/structure-aware (#378)
  • build(deps): bump Swatinem/rust-cache from 2.7.7 to 2.7.8 (#363)
  • build(deps): bump tokio from 1.43.0 to 1.43.1 (#368)
  • build(deps): bump openssl from 0.10.70 to 0.10.72 (#366)