diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b7d611d..f4a6b115 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.4] — 2026-07-29 + ### Added - **TLS connections task-park too (c1M P1-TLS).** Idle TLS connections now exit their handler task after `--conn-park-secs`, like plain TCP: the diff --git a/Cargo.lock b/Cargo.lock index 7e32ec57..37eed461 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1816,7 +1816,7 @@ dependencies = [ [[package]] name = "moon" -version = "0.8.3" +version = "0.8.4" dependencies = [ "anyhow", "arc-swap", diff --git a/Cargo.toml b/Cargo.toml index 1db3592c..f1f41f82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "moon" -version = "0.8.3" +version = "0.8.4" 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 bc77c869..742f2e58 100644 --- a/README.md +++ b/README.md @@ -373,7 +373,8 @@ Redis 8.6.1.* | **v0.8.0** | One Storage Kernel — kill-9-lossless on every plane (46-cell crash matrix) + 10× RAM datasets under disk offload | **GA** | | **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** (current) | 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.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.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 7c057c02..f62908c7 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,5 +1,10 @@ # Releases +## 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. +evidence: Patch release rolling up PR #424 (c1M round 6). **Ships a fix for a bug LIVE in v0.8.3:** task-exit parking defaults on (`--conn-park-secs 60`), and the idle-park arms treated every read error as the sweep's cancel — a client that dies with an RST while its connection is parked (crashed client, NAT reset, LB probe) left the fd permanently readable and spun that connection through park→wake→park at 100 % shard CPU with the socket stuck in CLOSE_WAIT (found live by E11's first TLS leg: 3 000 CLOSE_WAIT conns pinning a shard; the plain-TCP RST path hits the same loop). The arms now match monoio's exact ECANCELED (raw os 125, both drivers) — only a sweep cancel downshifts/parks; real errors tear down promptly; regression tests cover FIN-while-parked (TLS) and RST-while-parked (plain). **Also in this release:** TLS task-exit parking (idle TLS 47.0 → 26.0 KB/conn, −45 %, E11 same-binary flag A/B; vendored `io_ref()` readiness passthrough + `task_park_safe()` veto — no park while the TLS stack buffers anything fd readability can't signal); registration handoff across park/wake (no deregistered window; fixes the wake silently resetting `CLIENT SETNAME`/`age` — caught red/green); migrated connections park; REPLCONF'd connections (replica handshake) are excluded from parking so a replica can never hit the unsupported PSYNC-after-park path. **Validation:** parity suites green on kqueue AND io_uring (plain 5/5, TLS 3/3, incl. the two new teardown regressions); VM monoio 4466 + tokio 3628 lib tests; E10 plain-park sanity unchanged (3.28 KB/conn); small-N spin repro post-fix: fds released, 0 CLOSE_WAIT, 0 % CPU; CodeRabbit review findings all addressed in-branch (REPLCONF exclusion, SAFETY comment, expect-free `is_drained`). Release gate: crash-matrix nightly + ITERS=20 soak dispatched on the RC (no crash/persistence path touched; ritual held), green before tag. + ## v0.8.3 — 2026-07-29 milestones: none (patch release: the c10k/c1M connection-plane campaign, rounds 1–5) waivers: none new — `XSHARD-READ-01` remains the open GA gap (ROADMAP R4), unchanged from v0.8.2.