Skip to content

v0.33.0

Choose a tag to compare

@github-actions github-actions released this 24 Apr 18:08
· 48 commits to main since this release
bd56771

saorsa-transport v0.33.0

Overview

saorsa-transport is a QUIC transport protocol implementation with advanced NAT traversal capabilities, optimized for P2P networks and the Autonomi ecosystem.

Installation

From crates.io

cargo install saorsa-transport

Pre-built binaries

Download the appropriate binary for your platform below.

Linux/macOS:

tar -xzf saorsa-transport-*.tar.gz
chmod +x saorsa-transport
./saorsa-transport --help

Windows:

Expand-Archive saorsa-transport-*.zip
.\saorsa-transport.exe --help

Docker

docker pull ghcr.io/saorsa-labs/saorsa-transport:0.33.0

What's Changed

Changelog

All notable changes to saorsa-transport will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[0.33.0] - 2026-04-24

Bug Fixes

  • Remove references to deleted ConnectionHealth API in tests (50f3241)
  • Differentiate FAST_SEND_ACK_TIMEOUT from default (500ms → 250ms) (eb1eb64)
  • Race condition in hole-punch peer ID matching (da74da9)
  • Scale send ACK timeout with payload size (9009e64)
  • Always overwrite NAT API connection DashMap with newer connection (c670c54)
  • Detect zombie connections before queuing PUNCH_ME_NOW relay (5516b06)
  • Detect stale coordinator connections by comparing handle indices (0216038)
  • Keep preferred coordinator on hole-punch retry (e861d3a)
  • Reject IPv6 documentation prefix in UPnP external IP classifier (21bda71)
  • Address PR #42 review — atomic fallback decrement, read-lock connect_transport, bench cleanup (45bf738)
  • Raise coordinator PUNCH_ME_NOW rate limit from 5 to 50 per minute (496721b)
  • Raise coordinator PUNCH_ME_NOW rate limit from 50 to 300 per minute (6e85dd9)
  • Prevent 0.0.0.0 wildcard in relay-allocated addresses (9b66e9e)
  • Bypass tunnel for relay connection's own QUIC traffic (f53f72f)
  • Prioritise original socket reads to prevent ACK starvation (a758d66)
  • Split GSO-batched transmits into individual tunnel frames (6bc6c3a)
  • Interleave original socket and tunnel reads to prevent starvation (f5fea70)
  • Raise send ACK timeout from 500ms to 5s (7319c1c)
  • Persist original UDP socket across relay rebinds (fc298f4)
  • Raise send ACK timeout from 500ms to 1s (3a2bda4)
  • [BREAKING] Use separate relay endpoint instead of rebinding the main socket (ab41814)
  • Prevent race condition on waker registration in poll_recv (098a932)
  • Improve MASQUE relay connectivity for NATted nodes (7ca8407)
  • Address discovery bugs — priority normalization, async scan, mutex contention (3a0f468)
  • Decouple relay forwarding I/O and increase initial congestion window (8f37695)
  • Increase send ack size budget for concurrent uploads (70623cc)
  • Reduce max relay clients per peer from 4 to 2 (c6baa61)
  • Suppress ADD_ADDRESS broadcast and coordinator registration for client-mode endpoints (d0da4bb)
  • Eliminate hot-path allocations, lock contention, and OOM risk in MASQUE relay (4c759f5)
  • Eliminate zombie-connection cascade that triggered identity-announce timeouts (f168e92)
  • Graceful relay endpoint close + RelayLost event on tunnel death (930a20d)
  • Keep ADD_ADDRESS broadcast eager, quorum-gate only the pin (3ea593b)
  • Treat non-WouldBlock UDP send errors as non-fatal in ConnectionDriver (614f7e8)
  • Attach relay handler to duplicate connections instead of force-closing (ec16340)

Documentation

  • Rewrite stale "pre-classified" comment on with_default_strategy (7cdd20a)

Features

  • Add preferred coordinator for hole-punch relay and improve relay diagnostics (d99e5ab)
  • Best-effort UPnP IGD port mapping for NAT traversal (7314d0b)
  • Enforce 2-client cap per public peer with typed capacity error (2b55b6a)
  • Expose setup_proactive_relay as public delegate (086fe2e)
  • Add relay_serving_enabled gate and set_relay_serving_enabled setter (64a8a64)
  • Expose is_relay_healthy delegate for relayer monitor (04b89e2)
  • Add holepunch_enabled flag to StrategyConfig (3d4da0d)
  • Add relay stream keepalive and UPnP port mapping for relay sockets (6aa3e57)
  • Wire QlogStreamer end-to-end behind __qlog feature (0b2a49f)
  • IP-diversity policy for relay establishment and acceptance (9db992d)
  • Actually set SO_REUSEPORT when SocketOptions::reuse_port (917cce9)
  • [BREAKING] Add BBR with rate-based pacing, set as default (21e0aab)
  • Implement BBRv2 with enhanced bandwidth modeling (4c9221f)
  • Default TransportConfig to BBRv2 (b470a7b)
  • Require K-observer quorum before pinning external address (73681ea)
  • Add dedup mechanism for relay request handlers (dd67531)

Miscellaneous Tasks

  • Resolve merge conflict with rc-2026.4.1 after PR #41 (faaa797)
  • Add diagnostic tracing to relay socket bypass path (d9a9624)
  • Promote bypass tracing to info level for testnet visibility (e69fb83)
  • Demote bypass tracing from info to trace level (f97ebce)
  • Bump version to 0.33.0-rc.1 (8b44b24)
  • Bump version to 0.33.0 (c934eb4)
  • Fix Rust 1.95 lints (f9f549d)

Performance

  • Tighten network timeouts for faster connection establishment (56e89b6)
  • Increase timeouts based on 50-node multi-region testnet data (e29f324)
  • [BREAKING] Hold read lock on router during send via atomic selection stats (3c847aa)
  • Fail fast on send when QUIC connection is already closed (a55cc6a)
  • Reduce direct connect timeout from 3s to 1s (7971d3d)
  • Skip MASQUE relay server for client-mode nodes (c6d451b)
  • Raise MAX_TRANSMIT_SEGMENTS to 64; add udp_throughput bench (d517df1)
  • Bound per-connection event channel with shed counter (bf03b75)
  • Raise UDP socket buffers to PQC size in Endpoint::new (21f94ae)
  • Increase handshake channel size to handle high connection peaks (a28376b)
  • Gate OBSERVED_ADDRESS feed to bootstrap window (6e99590)
  • Increase MAX_RELAY_CLIENTS_PER_PUBLIC_PEER to 4 (1f4d3c6)
  • Raise default initial MTU to 1350 and correct broadband capability (ffed7fb)
  • Implement backpressure for send channel to eliminate packet drops (eb3e9e2)

Refactor

  • Remove dead connect_dual_stack and try_connect_family methods (49a78e6)
  • [BREAKING] Remove dead NatTraversalEndpoint hole-punch chain (5280123)
  • [BREAKING] Remove orphaned CandidatePair public types (090a45c)
  • [BREAKING] Make ConnectionRouter fully lock-free and interior-mutable (386c6e8)
  • [BREAKING] Remove symmetric-NAT auto-relay; saorsa-core drives acquisition (684f296)
  • Remove bootstrap probe resolution notification (883c4a2)
  • [BREAKING] Remove MigrationCoordinator relay-to-direct promotion (8e46fb5)

Styling

  • Apply rustfmt to two unrelated info! call sites (b906e65)

Debug

  • Add peer ID tracing to hole-punch coordination path (f65af2e)
  • Check connection health before queuing PUNCH_ME_NOW relay (e828dbc)
  • Log when PUNCH_ME_NOW relay frame is encoded into QUIC packet (6c4088f)

Checksums

See checksums.txt for SHA256 checksums of all binaries.