v0.32.0
saorsa-transport v0.32.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.32.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.32.0] - 2026-04-14
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)
- Raise coordinator PUNCH_ME_NOW rate limit from 5 to 50 per minute (70ab29b)
- Raise send_ack_timeout from 500ms to 5s for cross-region connections (a6c82d0)
- Accept loop keeps newer connection on dedup instead of closing it (55ffca7)
- Replace has_public_ip with scope-aware peer-verified direct reachability (1478a1b)
- Address review feedback — double-count bug, relay capability, rustdoc (d12d86c)
- Rotate through all relay candidates instead of failing on first (6f139c7)
- Return socket on session reuse instead of None (e44b25e)
- Schedule periodic cleanup of expired relay sessions (f475bd0)
- Quality-aware coordinator selection with RTT weighting and load balancing (44b4662)
- Defer old connection close on dedup to avoid disrupting in-flight DHT queries (664ce20)
- Normalize IPv4-mapped IPv6 addresses in hole-punch DashMap lookups (2cabf2b)
- NAT traversal fixes for large-scale testnets (990+ nodes) (b2e6aaa)
- Increase handshake channel capacity from 32 to 1024 (8f1dd14)
- Apply rustfmt formatting and fix test_default_config assertion (a6cc9fb)
Features
- Add preferred coordinator for hole-punch relay and improve relay diagnostics (d99e5ab)
- Best-effort UPnP IGD port mapping for NAT traversal (7314d0b)
- Rotate hole-punch coordinators with capped per-attempt timeout (b58e671)
- PUNCH_ME_NOW_NACK — coordinator signals target not found (9a8ffa2)
- Increase ACK timeout size budget from 1ms/KB to 4ms/KB (35a43c7)
Miscellaneous Tasks
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)
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)
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.