v0.10.1 — RC hardening
Pre-releaseraft-io v0.10.1 — RC hardening: benchmarks + soak
Numbers, and confidence. With the protocol feature-complete as of v0.10.0,
v0.10.1 is the first run-up to a 1.0: a committed performance baseline across
every hot path, and an extended soak of the property suite. No library code or
public API changed — this is tooling, measurement, and documentation.
What's new in 0.10.1
A committed performance baseline
RaftNode::step is the single entry point the whole system funnels through, so it
is the path whose cost matters. The criterion suite (benches/raft_bench.rs) now
covers every shape of step that a running cluster exercises — not just the three
it started with:
- steady state: the follower clock tick (~8 ns, allocation-free) and the leader
heartbeat tick (~19 ns); - elections: granting an inbound vote (~93 ns, persists the vote);
- reads: releasing a linearizable read via ReadIndex on a single-node leader
(~165 ns); - snapshots: a follower installing a leader's snapshot (~170 ns);
- replication: a leader committing on a follower's acknowledgement (~188 ns) and a
follower applying a batch of eight entries (~820 ns); - proposals: a single-node append + commit + apply (~205 ns).
Because the core is sans-I/O, these are pure protocol costs — no clock, socket,
or disk — so they are stable and reproducible. docs/BENCHMARKS.md records the
reference numbers, the methodology, and how to gate regressions; REPS treats a
regression beyond 5% on a tracked metric as a blocker.
Extended soak
The full property suite was run at elevated case counts with no failure: the
jepsen-style hardening nemesis (every fault mode at once, all five safety
properties asserted) at PROPTEST_CASES=6000, and the whole suite — replication,
recovery, snapshots, membership churn, and the key-value consumer (convergence and
stale-free linearizable reads) — at PROPTEST_CASES=2000.
Breaking changes
None. This release adds benchmarks, a soak, and documentation only.
Verification
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features
cargo deny check
cargo audit
cargo build --examples --all-features
cargo benchAll green. Test counts are unchanged from v0.10.0 (122 unit + 25 integration /
property + 60 doctests). MSRV: Rust 1.85 (edition 2024).
What's next
- 1.0. The protocol is complete and the performance baseline is set. What
remains is a final pass over the docs and the protocol specification, and the
1.0freeze.
Installation
[dependencies]
raft-io = "0.10"Documentation
Full diff: v0.10.0...v0.10.1.
Changelog: CHANGELOG.md.