From 301e3463e3abb11ee25b94ee2ec31c497fb4e2b4 Mon Sep 17 00:00:00 2001 From: "Claude (sandbox)" Date: Sat, 8 Aug 2026 19:44:55 +0000 Subject: [PATCH] =?UTF-8?q?chore(release):=20v0.6.0=20=E2=80=94=20RFC=2001?= =?UTF-8?q?9:=20actor=20stack=20reserve=20&=20shrink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per-actor stack shapes on every spawn surface (SpawnOpts stack_reserve/ guard_size, Config defaults, pool rule: only default-shaped recycle); sampled stack high-water + MADV_FREE shrink at actor-park (THRESHOLD 256 KiB, COOLDOWN 64 parks, redzone 1 page); pool-recycle MADV_DONTNEED above the retained 64 KiB entry end; SIGSEGV overflow diagnostics (two-tier: in-guard definitive / 1 MiB overshoot 'stepped over', prior handler chained for foreign faults) with per-scheduler sigaltstack; and the per-actor introspection surface (ActorInfo.stack: reserve, guard, sampled depth, parks_since_shrink, shrinks). Amendments ratified during implementation, for the RFC changelog: - DEFAULT_STACK_GUARD 64 KiB -> 1 MiB, following the kernel's post-Stack- Clash stack_guard_gap convention; PROT_NONE width is VA-only and free. - §7's motivating segfault was a cargo-vendored gz build, not SQLite as the RFC text says (cc-built C lacks -fstack-clash-protection; distro libraries have it — the risky class is vendored builds). - §4 hibernate() deferred to the jar (bolt-on: force-flag on the §3 shrink path, ~10 lines when wanted). Gates (jobrunner box, 2026-08-08): reclaim gate PASS at c3 and again at tip (3.0 MiB LazyFree -> kernel reclaim -> Rss to one live page -> re-spike bit-identical, live data intact; MADV_PAGEOUT stands in for memcg — cgroup2 is RO in the job container — driving the same reclaim path). E1 interleaved A/B vs v0.5.0: every ka cell (the E1 subject) within +0.3..+2.9% at tip; close-mode control cells within noise except t8-c4 close, which is bistable (~40-44k vs ~46-49k modes for BOTH variants, base self-disagrees by 11% across rounds); 6 rounds across two runs are inconclusive there and a 10-round focused run is noted in the handoff as deferred follow-up, accepted for this release. No breaking API changes since v0.5.0: SpawnOpts fields and ActorInfo gained members (exhaustive-construction downstream will need the new ActorInfo.stack field; urus does not construct it). --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c7e0f70..a796ddf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "smarm" -version = "0.5.0" +version = "0.6.0" edition = "2021" rust-version = "1.95"