diff --git a/CHANGELOG.md b/CHANGELOG.md index 92550da5..ebf50da8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.8.5] — 2026-08-08 + ### Added - **Cluster mode now works on the default (monoio) runtime — v0.9 W0/C-1 (#405).** The cluster control plane (bus listener, gossip ticker, failover diff --git a/Cargo.lock b/Cargo.lock index 7bb148aa..93255069 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1816,7 +1816,7 @@ dependencies = [ [[package]] name = "moon" -version = "0.8.4" +version = "0.8.5" dependencies = [ "anyhow", "arc-swap", diff --git a/Cargo.toml b/Cargo.toml index cdc04548..286d7c76 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "moon" -version = "0.8.4" +version = "0.8.5" edition = "2024" rust-version = "1.94" description = "A high-performance Redis-compatible server written in Rust" diff --git a/README.md b/README.md index 742f2e58..176ad843 100644 --- a/README.md +++ b/README.md @@ -374,7 +374,8 @@ Redis 8.6.1.* | **v0.8.1** | Deploy-safe busy-poll (O3 contention governor auto-gates on shared cores) + single-shard tuning preset | **GA** | | **v0.8.2** | Storage kernel unification — one value codec / spill pipeline / eviction entry point / accessor skeleton, millisecond-TTL fidelity fix, batched sync-eviction manifest fsyncs | **GA** | | **v0.8.3** | Connection plane at scale — idle conns 56.5 → 3.25 KB (−94%, task-exit parking + idle downshift + TLS diet), loud maxclients, striped registry, c1M-ready (1 M idle ≈ 3.3 GB) | **GA** | -| **v0.8.4** (current) | c1M follow-ups — TLS task-parking (47 → 26 KB idle), park/wake registry handoff, park-vs-error spin fix (RST'd parked conn no longer pins a shard) | **GA** | +| **v0.8.4** | c1M follow-ups — TLS task-parking (47 → 26 KB idle), park/wake registry handoff, park-vs-error spin fix (RST'd parked conn no longer pins a shard) | **GA** | +| **v0.8.5** (current) | Durability hardening — AOF rewrites never drop acked writes (overflow spill + exactly-once snapshot cut, adversarially verified), fail-loud WAL mid-chain tears, sticky append/fsync degraded latches, deep-review wave (LFU/LRU arithmetic, cluster election, silent-failure hardening) | **GA** | | **v0.9** | Horizontal scale — cluster-on-monoio + multi-shard replicas | planned | | **v1.0** | Every [`PRODUCTION-CONTRACT.md`](docs/PRODUCTION-CONTRACT.md) GA box ticked | gate | diff --git a/RELEASES.md b/RELEASES.md index f62908c7..b6848794 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,5 +1,10 @@ # Releases +## v0.8.5 — 2026-08-08 +milestones: none (patch release: 2026-08 deep-review wave + durability wave 1) +waivers: none new — `XSHARD-READ-01` remains the open GA gap (ROADMAP R4), unchanged from v0.8.4. +evidence: Patch release rolling up the 2026-08 deep-review wave (#453) and durability wave 1 (#452/#54, PR #454), both merged after two-round adversarial review. Headline: AOF rewrites no longer drop acked writes under sustained load — a per-writer RewriteOverflow spill buffer with an exactly-once snapshot cut covers all six fold arms on both runtimes; merge-base A/B (tests/recovery_matrix_w1.rs) showed main losing ~5.6k acked writes per hit, fixed is exact across SIGKILL + recovery (251k appends through the overflow in the release-gate run). The re-verify round closed an abort-treated-as-commit P0 (aborted multi-shard fold discarded spills + false Synced acks), a same-key replay-inversion window, an ungated ordered-append leg, and taken-batch loss accounting; residual architectural findings tracked in #455. Also: WAL v3 mid-chain tears now abort boot (exit 70) instead of replaying past the hole (MOON_WAL_SALVAGE=1 override); sticky aof_last_append_status + per-writer aof_last_fsync_status latches; reason-DEL escalated backpressure with ONE shared bound per eviction sweep; manifest-sync failure latch keeps the AOF backstop until a newer snapshot persists; failed spill pwrite re-inserts the victim; eviction metadata widened (LFU decay/LRU inversion/OBJECT IDLETIME wrap/WATCH ABA); cluster election acks actually received + inline fast path disabled in cluster mode; CLIENT TRACKING max_keys enforced. Validation: fmt + clippy x2 feature sets, macOS monoio 4541 + tokio 3705 and VM Linux 4563 lib tests, rewrite-under-pipelined-load e2e green, PR CI green on both PRs pre-merge; crash-matrix nightly + ITERS=20 soak dispatched on the RC (b346910d), green before tag (soak-first-then-tag). + ## v0.8.4 — 2026-07-29 milestones: none (patch release: c1M P1 follow-ups + the park-vs-error spin fix) waivers: none new — `XSHARD-READ-01` remains the open GA gap (ROADMAP R4), unchanged from v0.8.3.