Skip to content

Releases: saorsa-labs/saorsa-core

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

v0.21.0

31 Mar 16:13

Choose a tag to compare

saorsa-core v0.21.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.21.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

809a13f chore: bump version to 0.21.0
f2e8253 Merge pull request #63 from saorsa-labs/refactor/distance-sorted-lookup-candidates
10b53ff fix: update stale lookup docs and restore PeerBlocked trust exclusion
b0ede19 docs: remove REPLICATION_DESIGN.md from the repository
873bbe9 docs: fix stale references from trust consolidation and penalty-only refactor
d09004c refactor!: penalty-only trust model with aggressive EMA tuning
a25587e fix: consolidate trust failure recording in send_dht_request to prevent double-counting
0c6f45c fix: use infallible write().await for background task JoinHandle storage
cd59a4f refactor: use distance-sorted BTreeMap for Kademlia lookup candidates


See crates.io for full documentation.

What's Changed

  • refactor!: DHT lookup convergence, trust consolidation, and penalty-only model by @mickvandijke in #63

Full Changelog: v0.20.0...v0.21.0

v0.20.0

30 Mar 21:27

Choose a tag to compare

saorsa-core v0.20.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.20.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

1459fd0 chore: bump version to 0.20.0
81294f2 Merge pull request #57 from saorsa-labs/refactor/simplify-ip-diversity
cba9349 fix: prevent Instant subtraction overflow in stale-peer tests on Windows
1ca7da7 fix: address 4 PR review comments (cache atomicity, response cap, testnet dedup)
7c46113 fix: address 12 findings from PR 57 deep review round 2
903fe94 fix: address review findings from PR 57 deep review
7435701 fix: address critical and high-severity issues from PR 57 review
8a3c26d fix: check all node addresses in IP diversity and prevent over-eviction
d320e3f fix: evict peer from routing table when consumer trust events cross block threshold
f956b40 fix: close remaining routing table design gaps
a36ac44 feat!: implement routing table design from ROUTING_TABLE_DESIGN.md
85b6149 fix: change IPv6 subnet diversity mask from /64 to /48
0db96c5 docs: add MAX_CONCURRENT_REVALIDATIONS parameter and global semaphore design
3d43ea9 docs: apply 21 deep review fixes to routing table design spec
e13cd4e docs: apply 24 review fixes to routing table design spec
7ef779b docs: fix 13 review issues in routing table design spec
2c8fecb docs: add BootstrapComplete event to routing table design
3205e6e docs: fix design gaps in routing table spec (TOCTOU, EMA formula, convergence, isolation, events, params, address validation)
653cba7 feat: add replication-ready API surface (KClosestPeersChanged, routing table enumeration, self-inclusive lookup)
1192dca docs: add consumer trust reporting API and EMA scoring model to routing table design
a102a7c docs: close design gaps across routing table, replication, and upload flow specs
e7d22be refactor: replace hardcoded DHT_CLOSEST_NODES_COUNT with configured k_value
a8b3342 fix: adjust default alpha value in DHTConfig test assertions to 3
9dfbc58 docs: add reactive stale peer revalidation to routing table design
54d685d docs: add KClosestPeersChanged event and require reliable emission
f6f3972 docs: clarify evicted peer re-admission path in touch_node section
0576d4a refactor: strip consumer-side concerns from routing table design doc
a952d74 fix: return None from get_bucket_index when key equals local node ID
349dead fix: remove incorrect early exit in find_closest_nodes_local
0c17d8f fix: update default alpha value from 5 to 3 in DHTConfig
9dc56f3 fix: harden IP diversity, trust persistence, and cache atomicity
971fc50 fix: unify K value — remove hardcoded K=8, use config-driven bucket size
2124c87 refactor: rename close group cache API from file path to directory
2a87759 feat: wire close group cache into startup and shutdown lifecycle
b20295b feat: trust-aware routing with persistent close group cache
4071432 feat: trust-aware swap-closer protects well-trusted peers from eviction
0ebd32d chore: remove dead code — node ID types, geo routing, CachedGeoProvider
bed9709 refactor!: simplify bootstrap IP limiter, remove dead ASN/geo code
ae1b9b0 refactor!: simplify diversity to 2-tier K-based IP limits, remove geo
8578381 feat!: enforce IP/subnet diversity per-bucket and per-close-group
7d58024 fix: correct geo diversity capacity check and close-group swap accounting
8c74168 feat: enforce geo diversity per-bucket with swap-closer logic
b931802 Merge pull request #62 from saorsa-labs/feat-continuous_uploads


See crates.io for full documentation.

What's Changed

  • fix: NAT traversal, dual-stack normalisation, and connection reliability by @mickvandijke in #62
  • refactor!: routing table design improvements by @mickvandijke in #57

Full Changelog: v0.19.0...v0.20.0

v0.19.0

30 Mar 08:39

Choose a tag to compare

saorsa-core v0.19.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.19.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

5e73edb chore: bump version to 0.19.0
edb637b fix: collapse nested if blocks to satisfy clippy collapsible_if lint
d8d232e chore: remove Cargo.lock from version control in .gitignore
e6bfcf3 chore: update dependencies in Cargo.lock and Cargo.toml
1403101 chore: update dependencies in Cargo.lock and Cargo.toml
6427efa fix: address PR review comments
cdf6d7a fix: formatting and update test for 90s connection timeout
e5ed26b chore: patch saorsa-transport to git branch for CI
2552046 fix: remove premature is_connection_active rejection in send_on_channel
5decdb7 fix: check authoritative QUIC state for hole-punch connections
ec0c6a6 fix: register hole-punch connections in active_connections on first send
95cb88f fix: increase connection timeout to 90s for NAT traversal
77839d2 fix: add 60s timeout to send_to_peer_raw
13e142d chore: revert saorsa-transport to version-based crates.io reference
afd5d15 fix: normalise dual-stack IPv4-mapped addresses at DualStackNetworkNode boundary
13ef2b0 fix: register unknown channels on the fly in send_on_channel
6027b21 Merge pull request #59 from jacderida/chore-remove_dot_cargo_toml
d09b85e chore: remove committed .cargo/config.toml
d5763af Merge pull request #56 from jacderida/fix-dual_stack_binding_socket
b49da09 fix: handle dual-stack IPv6 socket claiming IPv4 port on Linux
17aa68b Merge pull request #54 from saorsa-labs/ci/decouple-security-audit-from-release
c3678d6 ci: remove unused security-audit job from release workflow
97d84bb ci: decouple publish/release jobs from security audit
3eb3f48 Merge pull request #53 from saorsa-labs/fix/harden-send-message-reconnect
2771a03 chore: bump version to 0.18.1
f6323fe fix: enforce address invariants in KBucket::add_node
4b0d0d7 chore: bump version to 0.18.0
d38f309 fix: filter bootstrap and iterative-lookup addresses through dialable check
9e24df0 fix: filter DHT routing-table addresses through dialable check before dialling
b936c87 fix: close zombie QUIC connections on reconnect double-check and identity timeout paths
cddeb95 refactor: rename stale_channels to existing_channels for clarity in reconnect logic
0d80486 fix: serialise concurrent send_message calls when no connection exists
5d2c158 chore: bump saorsa-transport dependency to 0.28
e398d5b Merge remote-tracking branch 'origin/main' into fix/harden-send-message-reconnect
c6508e6 refactor: remove unused NodeCapacity struct
44acef5 feat: support multiple addresses per peer in DHT routing table
178a179 test: add idle timeout expiry recovery test
409c5c1 fix: harden send_message reconnect logic and remove poison_quic_for_peer
da6c964 refactor: extend send_message with additional address resolution and reconnect logic
ef90310 test: add stale QUIC session recovery integration test
901fd04 Merge pull request #52 from jacderida/chore-revert_logging_strip
8b1e166 Revert "feat: gate tracing macros behind cfg(debug_assertions)"
80c4f58 Revert "refactor: keep logging macros crate-internal via #[macro_use]"


See crates.io for full documentation.

What's Changed

  • chore: revert logging strip from release builds by @jacderida in #52
  • fix: harden send_message reconnect, DHT address validation, and zombie connection cleanup by @mickvandijke in #53
  • chore: bump saorsa-transport to 0.27, release v0.17.2 by @mickvandijke in #51
  • ci: decouple publish/release from security audit by @mickvandijke in #54
  • fix: handle dual-stack IPv6 socket claiming IPv4 port on Linux by @jacderida in #56
  • chore: remove committed .cargo/config.toml by @jacderida in #59

Full Changelog: v0.17.2...v0.19.0

v0.18.1

19 Mar 16:24

Choose a tag to compare

saorsa-core v0.18.1

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.18.1"

Or install via cargo:

cargo add saorsa-core

What's Changed

17aa68b Merge pull request #54 from saorsa-labs/ci/decouple-security-audit-from-release
c3678d6 ci: remove unused security-audit job from release workflow
97d84bb ci: decouple publish/release jobs from security audit
3eb3f48 Merge pull request #53 from saorsa-labs/fix/harden-send-message-reconnect
2771a03 chore: bump version to 0.18.1
f6323fe fix: enforce address invariants in KBucket::add_node
4b0d0d7 chore: bump version to 0.18.0
d38f309 fix: filter bootstrap and iterative-lookup addresses through dialable check
9e24df0 fix: filter DHT routing-table addresses through dialable check before dialling
b936c87 fix: close zombie QUIC connections on reconnect double-check and identity timeout paths
cddeb95 refactor: rename stale_channels to existing_channels for clarity in reconnect logic
0d80486 fix: serialise concurrent send_message calls when no connection exists
5d2c158 chore: bump saorsa-transport dependency to 0.28
e398d5b Merge remote-tracking branch 'origin/main' into fix/harden-send-message-reconnect
c6508e6 refactor: remove unused NodeCapacity struct
44acef5 feat: support multiple addresses per peer in DHT routing table
178a179 test: add idle timeout expiry recovery test
409c5c1 fix: harden send_message reconnect logic and remove poison_quic_for_peer
da6c964 refactor: extend send_message with additional address resolution and reconnect logic
ef90310 test: add stale QUIC session recovery integration test
901fd04 Merge pull request #52 from jacderida/chore-revert_logging_strip
8b1e166 Revert "feat: gate tracing macros behind cfg(debug_assertions)"
80c4f58 Revert "refactor: keep logging macros crate-internal via #[macro_use]"


See crates.io for full documentation.

What's Changed

  • chore: revert logging strip from release builds by @jacderida in #52

Full Changelog: v0.17.2...v0.18.1

v0.17.2

18 Mar 19:21

Choose a tag to compare

saorsa-core v0.17.2

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.17.2"

Or install via cargo:

cargo add saorsa-core

What's Changed

5af2c0d chore: bump version to 0.17.2
efa957c chore: bump saorsa-transport dependency to 0.27
cda466a Merge pull request #50 from jacderida/chrisoneil/v2-124-strip-logging-from-release
573036c Merge pull request #49 from saorsa-labs/test/integration-tests
536081e ci: add integration tests to CI workflow
113170e fix: address PR review feedback on integration tests
ea3b51a test: add integration tests for node lifecycle, trust flow, sybil protection, and messaging


See crates.io for full documentation.

What's Changed

Full Changelog: v0.17.1...v0.17.2

v0.17.1

18 Mar 11:55

Choose a tag to compare

saorsa-core v0.17.1

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.17.1"

Or install via cargo:

cargo add saorsa-core

What's Changed

975ba49 chore: bump version to 0.17.1
bacfef0 refactor: keep logging macros crate-internal via #[macro_use]
e9b5bf0 feat: gate tracing macros behind cfg(debug_assertions)
ab12bfa Merge pull request #48 from saorsa-labs/version-0.17.0


See crates.io for full documentation.

What's Changed

Full Changelog: v0.17.0...v0.17.1

v0.17.0

17 Mar 17:50

Choose a tag to compare

saorsa-core v0.17.0

Installation

Add to your Cargo.toml:

[dependencies]
saorsa-core = "0.17.0"

Or install via cargo:

cargo add saorsa-core

What's Changed

7eb7b88 feat: bump version to 0.17.0
6b3699f Merge pull request #47 from saorsa-labs/development
41e6dfd chore: remove redundant fields and test cases from network configuration
3797ed2 chore: remove configuration system and related dependencies
c0cf7be chore: simplify and streamline configuration management by removing unused fields and modules
ab6ae91 chore: remove unused network configuration and related modules
d9047b3 fix: rename report_app_event to report_trust_event, align docs with scope
fc4b49f fix: address second round of PR review comments
af234ef fix: avoid Instant subtraction overflow in trust decay tests on Windows
304ff64 fix: address PR review comments — validate block_threshold, fix stale docs
2dc0310 fix: resolve merge conflicts with main (MultiAddr format, floor/ceiling semantics)
422ca84 feat: expose trust enforcement config through NodeConfig builder API
b20a764 feat: add static limits for IPv4 subnets and subnet floor overrides
ee674b3 feat: add configurable subnet limit overrides for IP diversity
1048aaf fix: send explicit rejection to blocked peers to prevent mutual-block loops
8f24dbd test: add e2e tests for trust lifecycle, blocking, and recovery
bca1973 fix: tune decay so worst score takes 3 days to unblock
470b3e0 feat: add time decay and score bounds to trust system
2ba8202 feat: add NetworkError::PeerBlocked variant
a59bb7f fix: fail fast on outbound operations to blocked peers
b76afbd fix: disconnect blocked peers instead of just dropping messages
1fcca74 refactor!: make trust eviction immediate, remove periodic sweep
9c46167 refactor!: replace EigenTrust power iteration with direct response-rate scoring
f1dbd0c refactor!: replace maintenance polling loop with reactive trust blocking
9142a97 refactor!: replace trust-weighted routing with peer blocking
92422c8 refactor!: remove ProtocolViolation — no code path produces it
6a45370 fix: remove UnexpectedDisconnect from TrustEvent
b72b0ef refactor!: trim TrustEvent to only network-observable events, wire missing signals
de7eb7a test: add integration tests for trust signal flow
6fef9e7 docs: update exports and documentation for new trust architecture
a77d686 feat: add trust-weighted routing behind config flag
2cceb6e refactor: extract magic numbers into named constants
afcd1fd fix: wire EvictionManager to TrustEngine for live trust score queries
4eeca74 refactor!: introduce AdaptiveDHT as the sole trust boundary
872d085 refactor!: consolidate trust system — rename EigenTrustEngine to TrustEngine, remove dead code
b9d2891 Merge pull request #45 from jacderida/fix/ipv4-testnet-diversity-limits
f7afad7 fix: restore explicit IPv4 diversity floors in testnet config
9831460 refactor!: remove unused fields, constants, and dependencies across modules
27a5aa3 refactor!: remove adaptive-related tests, benchmarks, and .gitignore from saorsa-testnet
707b029 refactor!: remove authenticated_sibling_broadcast.rs and related functionality
1e63de2 refactor!: remove purely observational metrics from adaptive modules
2d3d3f8 refactor!: remove 24k lines of dead and off-mission code
7d68f6d refactor!: remove all metrics, telemetry, and prometheus code
a244180 refactor!: remove 8 dead modules with no production consumers
194ed88 refactor!: remove storage, replication, and shard vestiges from phonebook-only library
d5d3b5e refactor!: rename StorageError to StateError
9d4fe1a chore: remove dead code and StorageHealthChecker
1746118 chore: remove unused PersistentStateManager and WAL module
0d971bc refactor!: remove placement module and storage orchestration system
bec8651 chore: remove orphaned storage/replication config, metrics, and stale comments


See crates.io for full documentation.

What's Changed

  • fix: remove GeoIP rejection at transport connection layer by @jacderida in #42
  • fix: restore explicit IPv4 diversity caps in testnet config by @jacderida in #45
  • v0.16.0: Strip to phonebook-only library with simplified trust by @mickvandijke in #47

New Contributors

Full Changelog: v0.16.0...v0.17.0