v0.33.0
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-transportPre-built binaries
Download the appropriate binary for your platform below.
Linux/macOS:
tar -xzf saorsa-transport-*.tar.gz
chmod +x saorsa-transport
./saorsa-transport --helpWindows:
Expand-Archive saorsa-transport-*.zip
.\saorsa-transport.exe --helpDocker
docker pull ghcr.io/saorsa-labs/saorsa-transport:0.33.0What'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.