Skip to content

Releases: WithAutonomi/saorsa-core

v0.25.0

12 Jun 17:30
1804546

Choose a tag to compare

saorsa-core v0.25.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.25.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

1804546 Merge pull request #130 from WithAutonomi/rc-2026.6.2
45f894d chore(release): promote rc-2026.6.2 to 0.25.0
0a02a83 Merge pull request #129 from jacderida/v2-463
13cf6ba fix(dht): address review — don't fail peers on cache exhaustion; canonicalize cache keys; log threshold crossing
ee12b2d feat(dht): relay-IP-level dial-failure inference in DialFailureCache
b5ef83b Merge pull request #124 from WithAutonomi/codex/remove-bootstrap-cache
60fb354 chore: update Cargo.lock after rebase
1fc9426 fix(network): remove outer peer dial timeouts
104f4c6 feat!: remove bootstrap cache manager
febd44a test: cover find_closest_nodes_local_by_distance_with_self
42835f5 feat: add XOR-only self-inclusive local lookup for verification
60108a4 feat: add XOR-only local lookup for closeness verification
313cb57 fix: rank close-group/candidate selection by reachability
088c355 chore(release): cut rc-2026.6.2


See crates.io for full documentation.

What's Changed

Full Changelog: v0.24.5...v0.25.0

v0.24.5

03 Jun 16:27
a681772

Choose a tag to compare

saorsa-core v0.24.5

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.24.5"

Or install via cargo:

cargo add saorsa-core

What's Changed

a681772 Merge pull request #128 from WithAutonomi/rc-2026.5.5
31755a8 chore(release): promote rc-2026.5.5 to 0.24.5
9bc88f2 Merge pull request #126 from WithAutonomi/docs/withautonomi-repo-ownership
1dd8bd1 docs: update repository ownership metadata
7d88169 chore(release): cut rc-2026.5.5
f4ba0da Merge pull request #125 from grumbach/grumbach/pr123-expose-timestamp
1831647 fix(p2p): expose signed timestamp on P2PEvent::Message
7513d15 test(p2p): cover signed skewed timestamps
7ca2fda docs(adr): cite IETF MASQUE and QUIC NAT drafts in ADR-014
7965511 fix(p2p): remove wall-clock timestamp validation from WireMessage


See crates.io for full documentation.

What's Changed

  • fix(p2p): expose signed timestamp on P2PEvent::Message (alt to #123) by @grumbach in #125
  • fix(p2p): remove wall-clock timestamp validation from WireMessage by @dirvine in #123
  • docs: update repository ownership metadata by @dirvine in #126
  • chore(release): promote rc-2026.5.5 by @jacderida in #128

Full Changelog: v0.24.4...v0.24.5

v0.24.4

20 May 21:09
b4d0da0

Choose a tag to compare

saorsa-core v0.24.4

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.24.4"

Or install via cargo:

cargo add saorsa-core

What's Changed

b4d0da0 Merge pull request #120 from saorsa-labs/rc-2026.5.3
b0e7f48 chore(release): promote rc-2026.5.3 to 0.24.4
0032d41 chore(release): cut rc-2026.5.3
616aeef Merge pull request #117 from grumbach/grumbach/filter-unspecified-on-store
bbf2577 Merge pull request #118 from saorsa-labs/fix/dht-maintenance-lookup-throttle
7d3e730 fix(dht): keep self lookup unthrottled
e4baa75 fix(dht): sanitize wildcard addrs on engine add_node path + clarify replace docs
874e736 fix(dht): address maintenance refresh review
851f9a6 fix(dht): keep bucket refresh tests portable
f24ff5f fix(dht): tune maintenance bucket refresh
b9a2615 fix(dht): throttle maintenance lookups
6ec50a0 fix(dht): drop wildcard / port-zero addresses at store side


See crates.io for full documentation.

What's Changed

Full Changelog: v0.24.3...v0.24.4

v0.24.3

13 May 19:15
550183b

Choose a tag to compare

saorsa-core v0.24.3

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.24.3"

Or install via cargo:

cargo add saorsa-core

What's Changed

550183b Merge pull request #116 from saorsa-labs/rc-2026.5.2
15b3e8a chore(release): promote rc-2026.5.2 to 0.24.3
8293fa5 chore(release): cut rc-2026.5.2
5f482af Merge pull request #115 from saorsa-labs/fix/stability-improvements
5586795 fix(network): register peer info before PeerConnected
a8e8207 feat(network)!: gate LAN address records by provenance
e9de6ed fix(network): require same WAN for LAN-first dialing
c112e09 fix(network): canonicalize mapped IPv4 LAN addresses
a060269 feat(network)!: classify LAN addresses separately
0ed3e4a fix(dht): handle receiver lag in lookup failure signal to prevent request timeout storms
e765e2b fix(dht): enforce non-zero sequence numbers for publish and replace operations
4499019 chore(deps): switch saorsa-transport to git source for stability fixes
43f5216 fix(transport): adjust direct connect timeout to 1250ms for better QUIC retransmission handling
d7f656c fix: prevent stale relay records in DHT lookups
f6aa885 fix(dht): skip lookup peers with failed dial plans
fb51181 fix(dht): avoid liveness refresh from address gossip
2820772 feat(dht): propagate DHT lookup peer failures
78cac14 fix(dht): revalidate admission off event loop
bc631ed refactor(self-address): replace HashSet+Vec with structured SelfAddressSet
60f1b1c refactor(transport): drop delivery-ack send variants now that QUIC send always waits
0f3ebb7 feat(transport): add delivery-ack send variant through P2PNode and TransportHandle


See crates.io for full documentation.

What's Changed

Full Changelog: v0.24.2...v0.24.3

v0.24.2

05 May 23:50
db94fe0

Choose a tag to compare

saorsa-core v0.24.2

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.24.2"

Or install via cargo:

cargo add saorsa-core

What's Changed

db94fe0 Merge pull request #113 from saorsa-labs/rc-2026.4.4
9ed219c chore(release): promote rc-2026.4.4 to 0.24.2
21811ae chore(release): roll rc-2026.4.4 to 0.24.2-rc.3
7541175 Merge pull request #111 from saorsa-labs/refactor/share-self-address-policy
6a477a0 refactor(dht): share self-address publish policy between driver and DHT self-entry
3177efe chore(release): roll rc-2026.4.4 to 0.24.2-rc.2
f2c18a9 Merge pull request #110 from saorsa-labs/fix/relay-tunnel-timeout
89cf745 chore(deps): pin saorsa-transport to rc-2026.4.4 head with Windows fix
fa5eb66 fix(dht): include Unverified externals in local self-entry
3e54d9d ci: trigger lint, build, and unit-test checks on rc-* PRs
37ae3af chore(deps): track saorsa-transport rc-2026.4.4 branch via git
be3e7e9 fix(transport): restore dual-stack peer-ID registration; defer DHT lookup on reconnect
016f429 feat(transport): expose watch-backed observers for address events
9bcd4c8 feat(reachability): dedup typed self address set publishes
23433e7 feat(transport): retain unverified observed externals as publish candidates
2c651a9 feat(reachability): keep one best address per IP family in self-publish and dial plan
ee336bc fix(transport): drop send-failure variants the transport no longer emits
60980f4 refactor(transport): unify direct connect timeout configuration
8af25ff fix(transport): refine timeouts for Happy Eyeballs and direct connections
d912700 fix(transport): classify send failures and avoid retrying mid-write sends
68b9f73 fix(transport): normalize peer mappings and drop same-ip updates
4d7b97b downgrade(logging): reduce failed peer addition log severity to debug
a147e4d fix(reachability): per-address attribution from OBSERVED_ADDRESS reports
a75869b feat(transport): tag connect_peer dial logs with AddressType
0b17803 fix(reachability): per-address proof + source-disjoint quorum for Direct tagging
2620abe chore(logging): add reachability diagnostic logging
ee4a5b2 chore(release): roll rc-2026.4.4 to 0.24.2-rc.1
66d38f4 Merge pull request #109 from jacderida/fix-bucket_refresh_jitter
6abffa3 fix(dht): jitter the bucket-refresh interval to break startup-lockstep


See crates.io for full documentation.

What's Changed

  • fix(dht): jitter the bucket-refresh interval to break startup-lockstep by @jacderida in #109
  • transport: per-address reachability proofs + dial/send hardening by @mickvandijke in #110
  • refactor(dht): share self-address publish policy between driver and DHT self-entry by @mickvandijke in #111
  • chore(release): promote rc-2026.4.4 by @jacderida in #113

Full Changelog: v0.24.1...v0.24.2

v0.24.1

30 Apr 00:23
a3fd6ea

Choose a tag to compare

saorsa-core v0.24.1

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.24.1"

Or install via cargo:

cargo add saorsa-core

What's Changed

a3fd6ea Merge pull request #108 from saorsa-labs/rc-2026.4.3
fd60f8c chore(release): promote rc-2026.4.3 to 0.24.1
3270d11 chore(release): roll rc-2026.4.3 to 0.24.1-rc.2
27136fc Merge pull request #106 from jacderida/chore-revert_102_target_rc
51f0c83 Revert "Merge pull request #102 from saorsa-labs/tune/kademlia-iteration-limits"
a477a17 chore(release): cut rc-2026.4.3
ae3c607 Merge pull request #99 from jacderida/feat-demote-chatty-logs
e539df5 Merge pull request #103 from saorsa-labs/fix/identity-timeout-consolidation
d1b2ea6 Merge pull request #102 from saorsa-labs/tune/kademlia-iteration-limits
dfe6e16 Merge pull request #101 from saorsa-labs/fix/identity-failure-deny-list
c5d1b00 Merge pull request #100 from saorsa-labs/fix/identity-gated-liveness
3df1599 perf(dht): raise Kademlia MAX_ITERATIONS from 10 to 12
bcb1686 perf(network): client-mode bootstrap stops at 6 successful peers
27403b4 perf(dht): tighten bootstrap identity timeout and dedupe reconnect budget
78fa54a perf(dht): tighten Kademlia lookup limits to fail faster
6e7c1e3 fix(dht): bump IdentityMismatch suppression to 30 min, separate from IdentityFailed TTL
7ddbac1 fix(dht): close IdentityMismatch storm + atomicize failure-cache eviction
0afd050 fix(dht): suppress in-session retries against peers that just failed identity exchange
8132165 fix(dht): preserve sub-second precision in STALE_REVALIDATION_BUDGET
1a750f9 refactor(dht): require &MultiAddr for upgrade-only merge
4d175ae refactor(dht): short-circuit revalidation on ping failure
6918c7a test(dht): tighten gossip-merge tests and lock in revalidation invariants
311e197 fix(dht): gate routing-table liveness on identity-confirmed activity
b1605c5 perf(logging): demote per-message INFO logs in transport hot path


See crates.io for full documentation.

What's Changed

  • fix(dht): gate routing-table liveness on identity-confirmed activity by @mickvandijke in #100
  • fix(dht): peer-id deny-list for in-session identity-failure retries by @mickvandijke in #101
  • perf(dht): tighten Kademlia lookup limits to fail faster by @mickvandijke in #102
  • perf(dht): tighten bootstrap identity timeout, dedupe reconnect budget, client-mode early-exit by @mickvandijke in #103
  • perf(logging): demote per-message INFO logs in transport hot path by @jacderida in #99
  • Revert #102: Kademlia lookup limit tightening by @jacderida in #106
  • chore(release): promote rc-2026.4.3 by @jacderida in #108

Full Changelog: v0.24.0...v0.24.1

v0.24.0

24 Apr 19:40
9d4955a

Choose a tag to compare

saorsa-core v0.24.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.24.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

9d4955a Merge pull request #98 from saorsa-labs/rc-2026.4.2
cd56ddc chore(clippy): fix Rust 1.95 lints and Windows test flake
a6329a1 test: ignore 4 broken MASQUE relay / DHT tests (V2-210)
019a771 style: apply rustfmt
75e8f53 chore: bump version to 0.24.0, upgrade saorsa-transport to 0.33.0
33a3e58 Merge pull request #97 from Nic-dorman/fix/bootstrap-dial-closure-hrtb
8a9b807 fix(network): satisfy HRTB in parallel bootstrap dial closure
a2813e8 chore: bump version to 0.24.0-rc.1 for rc-2026.4.2
d37491f fix(transport): dispatch v4 peers to v4 socket on Windows split-stack
2626d42 fix(dht): prevent background tasks from blocking shutdown under active traffic
523e36f fix: increase clock skew tolerance from 30s to 5min (symmetric)
65583ed perf(dht): revert node-mode gossip dial parallelisation
01540fc feat(dht): quorum hardening on FIND_NODE aggregation
af53b50 feat(dht): prefer closest-XOR responder when FIND_NODE reports disagree
800ae4a feat(dht): cap external peers at 2 addresses per IP family
25b2a8b perf(dht): skip gossip-peer dials in client mode, parallelise in node mode
7e2fb84 chore(deps): update multiple crate versions in Cargo.lock for dependency upgrades
4af8e86 chore(deps): switch saorsa-transport to git-based dependency tracking
b50700b feat(dht): ingest FIND_NODE typed addresses into routing table
fec51a1 perf(network): parallelize bootstrap peer dials with bounded concurrency
f380c79 feat(dht): merge typed addresses across FIND_NODE responses
05ee5f7 fix(dht): dedupe in-flight dials per peer and prune stale routing entries
36fe599 perf(dht): cache failed dial targets for 30 minutes
d364c4a perf(transport): tighten happy-eyeballs direct-connect timeout to 2s
6df085a perf(dht): cap dials at two addresses per peer
8429cc0 refactor(dht): classify transport-observed addresses as Unverified by default
5c99d60 fix(reachability): stop tagging transport-observed peers as Direct
9b91dfd refactor(dht): default untagged address fallback to Unverified
acc475e feat(reachability): add Unverified AddressType and passive reachability classifier
68b7b14 perf(dht): lower Kademlia iteration grace to 5s
264eb4b perf(dht): bound Kademlia iteration wait after first response
959e279 feat(network): skip post-bootstrap self-lookups in client mode
734d24d perf(transport): switch registry RwLock maps to DashMap
23e3a94 fix(reachability): event-driven DHT republish on RelayLost
94c9dd3 perf(transport): switch channel registry to DashMap and spawn identity announce
4bb3ac2 fix: wire advertise_external_addresses from NodeMode::Client through transport
d25e6a9 fix: double identity exchange timeouts for relay connections
45f1a58 fix: cap pinned external addresses and normalize publish dedup
802a37b fix: replace observed address cache with pinned external address store
b72548d fix: keep relay serving enabled and broadcast address set to all peers
575284a fix: prioritize relay addresses when dialing peers
97a706e perf: disable relay service for client-mode transport
dce1779 perf: route dual-stack sends by address family, tighten identity timeout
a439cb9 refactor: type-aware dial path, drop dead referrer plumbing
856d276 refactor!: replace reachability probe with unconditional relay driver
92ff8e4 perf: skip reachability classification and relay setup for client mode
d997cc9 refactor: disable hole-punch/relay cascade via StrategyConfig::direct_only()
f5b0966 fix(monitor): use transport-level relay health instead of Ping timeout
ada2c64 perf: try IPv4 before IPv6 in dual-stack send path
74327c5 feat(relay): add MASQUE relay e2e tests and expose relay_address API


See crates.io for full documentation.

What's Changed

Full Changelog: v0.22.0...v0.24.0

v0.23.1

17 Apr 16:47

Choose a tag to compare

saorsa-core v0.23.1

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.23.1"

Or install via cargo:

cargo add saorsa-core

What's Changed

c371379 chore(release): v0.23.1
466b540 Merge pull request #94 from jacderida/feat-use_dashmap_for_peer_to_channel
0576c63 perf: migrate peer_to_channel and channel_to_peers to DashMap
7d156bb Merge pull request #88 from mickvandijke/perf/dht-lookup-latency
e249ed8 Merge pull request #87 from mickvandijke/feat/skip-self-lookup-client-mode
0dd3336 perf(dht): lower Kademlia iteration grace to 5s
210aae6 perf(dht): bound Kademlia iteration wait after first response
4ef787b feat(network): skip post-bootstrap self-lookups in client mode


See crates.io for full documentation.

What's Changed

  • feat(network): skip post-bootstrap self-lookups in client mode by @mickvandijke in #87
  • perf(dht): cut Kademlia lookup latency on cold clients by @mickvandijke in #88
  • perf: migrate peer_to_channel and channel_to_peers to DashMap by @jacderida in #94

Full Changelog: v0.23.0...v0.23.1

v0.23.0

14 Apr 23:01
caa5595

Choose a tag to compare

saorsa-core v0.23.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.23.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

caa5595 Merge pull request #85 from saorsa-labs/fix/cargo-lock-update
181efc9 chore: update Cargo.lock for v0.23.0
4055f5b Merge pull request #84 from saorsa-labs/rc-2026.4.1
7e5482a chore: fix formatting and clippy warnings
2379ec5 chore(release): v0.23.0
2d4adf9 chore: upgrade saorsa-transport to published 0.32.0
2c99ba5 Revert "chore: disable join rate limiting for 1000-node testnet deployment"
8c68682 Merge pull request #83 from saorsa-labs/revert/accept-loop-write-lock-stall
bb28d23 Revert "Merge pull request #82 from saorsa-labs/fix/accept-loop-write-lock-stall"
7d73977 chore: update dependencies
3667104 Merge pull request #82 from saorsa-labs/fix/accept-loop-write-lock-stall
4dccb64 fix: spawn accept loop registration to prevent handshake channel stall
7c9775a Merge pull request #81 from saorsa-labs/fix/dht-shutdown-hang-under-traffic
9f75266 fix: prevent DHT background tasks from blocking shutdown under active traffic
8acdf5b chore: update dependencies
04327f5 Merge pull request #80 from saorsa-labs/fix/shard-channel-saturation-rc
464ce8b fix: shard channel saturation causing upload degradation at 1000-node scale
eb85947 fix: point saorsa-transport dependency at saorsa-labs/rc-2026.4.1
4a77627 chore: update dependencies
ee6779c Merge pull request #79 from jacderida/fix/hint-republish-thundering-herd
8035ead fix: randomize hint republish interval and reduce log verbosity
e926bf2 Merge pull request #78 from jacderida/fix/clock-skew-tolerance
0c4ed40 fix: address review feedback — log levels and Phase 1 parallelization
112e404 Merge pull request #77 from grumbach/fix/clock-skew-tolerance
3e15451 fix: surface real QUIC error in send_to_peer_optimized failures
1f7d3e4 fix: concurrent dialing in bootstrap phase 3 to prevent DIAL_TIMEOUT serialization
b135873 fix: collect-then-dial in bootstrap to ensure hints precede connections
70a6cb3 feat: propagate coordinator hints through DHT and periodic republishing
4e9d19c fix: extract coordinator hints from DHT records in bootstrap path
b4e7c2e fix: use git dep for saorsa-transport instead of local path
9a727e8 fix: parse channel IDs as SocketAddr, include hints for all nodes
6416ecb feat: coordinator hints in DHT records for NAT traversal
20848c5 fix: reduce connection timeouts and add DIAL_TIMEOUT diagnostics
3183f1d fix: increase clock skew tolerance from 30s to 5min (symmetric)
e92150d chore: update dependencies
81a29f7 chore: update dependencies
ada78f2 Merge pull request #70 from saorsa-labs/fix/dht-dialable-addresses-nat-hardening
3b7131d fix: address deep-review findings on PR #70
ab3a5bf perf(transport): shard inbound message dispatcher by source IP
a9a126f perf(dht): atomic last_seen to run touch under a read lock
13c68ac feat: cache observed external addresses as fallback for dropped connections
220e375 fix: drop primary_local_ip and rely on OBSERVED_ADDRESS for self-entry
45c6d6f fix: bump IDENTITY_EXCHANGE_TIMEOUT to 15s for slow-link parity
171af29 chore: drop needless struct update in IPDiversityConfig test
c2b9865 fix: advertise dialable addresses to DHT and harden NAT traversal
05d47b8 fix: set bootstrap peer as preferred hole-punch coordinator
abe2bab chore: update dependencies
14131e3 chore: disable join rate limiting for 1000-node testnet deployment
bf7b4a7 Merge pull request #69 from saorsa-labs/perf/tighten-network-timeouts
4d18307 chore: update dependencies


See crates.io for full documentation.

What's Changed

  • fix: clippy lint and tighten CI workflows by @jacderida in #67
  • perf: tighten network timeouts for faster connections by @mickvandijke in #68
  • perf: evict stale K-closest peers after self-lookup by @mickvandijke in #69
  • fix: NAT traversal hardening and 1000-node scale fixes by @mickvandijke in #70
  • fix: clock skew tolerance 30s -> 5min (proven by Mac upload to NAT testnet) by @grumbach in #77
  • feat: DHT coordinator hints + concurrent bootstrap + error diagnostics by @jacderida in #78
  • fix: randomize hint republish interval and reduce log verbosity by @jacderida in #79
  • fix: shard channel saturation causing upload degradation at 1000-node scale by @jacderida in #80
  • fix: prevent DHT background tasks from blocking shutdown under active traffic by @jacderida in #81
  • fix: spawn accept loop registration to prevent handshake channel stall by @jacderida in #82
  • Revert PR #82: accept loop write lock stall fix by @jacderida in #83
  • Release v0.23.0 — merge RC 2026.4.1 into main by @jacderida in #84
  • chore: update Cargo.lock for v0.23.0 by @jacderida in #85

Full Changelog: v0.22.0...v0.23.0

v0.22.0

02 Apr 23:44
4caa6c4

Choose a tag to compare

saorsa-core v0.22.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.22.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

75a663b Merge pull request #67 from saorsa-labs/fix/clippy-and-release-workflow
855e8cf ci: add -D warnings to merge clippy, remove tests from release workflow
4ff0698 fix: collapse nested if to satisfy clippy collapsible_if lint


See crates.io for full documentation.

What's Changed

  • feat!: replace binary peer blocking with lazy trust-based swap-out by @mickvandijke in #65
  • feat: relay address DHT propagation + peer ID routing for hole-punch by @jacderida in #66

Full Changelog: v0.21.0...v0.22.0