Skip to content

v0.10.1 — RC hardening

Pre-release
Pre-release

Choose a tag to compare

@jamesgober jamesgober released this 17 Jun 07:36
· 2 commits to main since this release

raft-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 bench

All 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.0 freeze.

Installation

[dependencies]
raft-io = "0.10"

Documentation


Full diff: v0.10.0...v0.10.1.
Changelog: CHANGELOG.md.