• v0.6.0 301e3463e3

    chore(release): v0.6.0 — RFC 019: actor stack reserve & shrink

    Markk116 released this 2026-08-08 19:44:55 +00:00 | 47 commits to master since this release

    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).

    Downloads