Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Jan 13:44
· 498 commits to main since this release

Changed

  • Breaking: Unified UdpTransport and SharedUdpTransport into a single
    UdpTransport with UdpHandle pattern. The new design uses a background
    receiver task with sharded pending maps for correct concurrent request handling.
  • Breaking: Transport trait changes:
    • Renamed target() to peer_addr() for consistency with std
    • Added register_request(request_id, timeout) for pre-send slot registration
    • recv() no longer takes a timeout parameter (uses registered deadline)
  • Request IDs are now allocated from a global counter for process-wide uniqueness,
    preventing collisions when multiple transports exist

Added

  • Configurable retry strategies with backoff support:
    • RetryStrategy::Fixed - constant delay between retries (default)
    • RetryStrategy::Exponential - exponential backoff with configurable base and max
    • RetryStrategy::None - disable retries entirely
  • UdpTransport::shutdown() for graceful termination of background receiver
  • ClientBuilder::build_with(&UdpTransport) for convenient shared transport usage

Fixed

  • Concurrent UDP requests no longer cause false timeouts due to race conditions
    in response routing
  • Memory leak from orphaned pending responses now prevented via periodic cleanup

Removed

  • SharedUdpTransport and SharedUdpHandle (functionality merged into UdpTransport)