From 62d55ed1b7538b67b9600c1c68f51febbce0982d Mon Sep 17 00:00:00 2001 From: InauguralPhysicist Date: Fri, 10 Jul 2026 00:06:00 -0500 Subject: [PATCH] =?UTF-8?q?release:=20v0.29.0=20=E2=80=94=20the=20task-lay?= =?UTF-8?q?er=20round-out=20+=20hardening=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cut v0.29.0. Highlights (full detail in CHANGELOG [0.29.0]): - task_self (#526) + task_detach (#530): tasks learn their own id and fire-and-forget tasks reap their handle slot — the 255-task cap now bounds concurrent tasks, not lifetime spawns; task_kill no longer poisons the ready queue. - Three deep runtime fixes surfaced by the liferaft #523 migration: the JIT is task-gated at every entry point (#533), same-instant sleeper wakes are allocation-history-independent (#535), and dict_remove no longer inflates its hash table exponentially. - lib/supervise (#409), lib/sync + must_not_yield (#488), catchable deadlock (#509), args on the tape (#471), eigs.json lint allow-list (#455), W018 (#469), silent-tolerance audit cleared (#490-#512). VERSION, CHANGELOG section, CLAUDE.md latest-release line, and docs/llms.txt stamp move together (doc_drift rule 2 resolves when the dispatch creates the v0.29.0 tag). Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 2 ++ CLAUDE.md | 26 +++++++++++++------------- VERSION | 2 +- docs/llms.txt | 2 +- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 656a1f6..e5e8f4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to EigenScript are documented here. ## [Unreleased] +## [0.29.0] - 2026-07-10 + ### Added - **`task_detach` — fire-and-forget tasks reap their handle slot (#530).** Finished tasks were never removed from the 255-slot handle table before diff --git a/CLAUDE.md b/CLAUDE.md index e220527..b04e1eb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -125,19 +125,19 @@ bash tools/embed_stack_soak.sh # embed REPL soak inside a 64 KiB stack rlimit ( ## Current state & where the detail lives -- **Latest release: v0.28.0** (2026-07-08) — the concurrency release: the - deterministic cooperative task layer (#408) — `task_spawn`/`task_yield`/ - `task_join`/`task_alive`, mailboxes (`task_send`/`task_recv`/ - `task_try_recv`/`task_kill`), virtual time (`task_sleep`/`task_now`), and a - seeded scheduling strategy (`task_sched_seed`), all deterministic by - construction (byte-identical across runs, zero tape `N` records) on a single - OS thread so the JIT stays live; structured runtime errors (#406, BREAKING — - `catch` binds `{kind, message, line}`), parse-error source excerpt + caret - (#407), scope-precise E003 undefined-name lint (#404), observer surface - coherence (#412, unity horizon + real `how` gradient), and correctness fixes - (#459 `dispatch` rebinding + builtin-shadow lint derivation, #410 JIT - back-edge abort poll, #460 `# lint: loaded-by`). (v0.27.0, 2026-07-06: the - tooling-and-contracts release.) Unreleased +- **Latest release: v0.29.0** (2026-07-10) — the task-layer round-out + + hardening release: `task_self` (#526), `task_detach` (#530 — tasks reap at + finish/kill, the 255 cap now bounds CONCURRENT tasks, `task_kill` no longer + poisons the ready queue), THREE deep scheduler/runtime fixes surfaced by + the liferaft #523 migration (JIT task-gate at every entry point #533 — task + code truly runs interpreted now; allocation-history-independent sleeper + wake order #535; `dict_remove` exponential hash-table inflation), + `lib/supervise` observer-native supervision (#409), `lib/sync` locks + + `must_not_yield` (#488), catchable `deadlock` (#509), `args` on the trace + tape (#471), per-file lint allow-list (#455), W018 error-kind near-miss + lint (#469), the silent-tolerance audit cleared (#490–#512), and the #483 + suspended-main-slice leak fix. (v0.28.0, 2026-07-08: the concurrency + release — the #408 cooperative task layer, structured errors #406; tooling-and-contracts release.) Unreleased work on `main`: see CHANGELOG.md `[Unreleased]`. Full version history: **CHANGELOG.md** (don't re-narrate it here — tools/doc_drift_check.sh now FAILS the suite when this line falls behind the latest tag). Roadmap: diff --git a/VERSION b/VERSION index 697f087..ae6dd4e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.28.0 +0.29.0 diff --git a/docs/llms.txt b/docs/llms.txt index 5ea0070..7bc49e0 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -1,6 +1,6 @@ # EigenScript — single-file reference for language models -> EigenScript v0.28.0. A small dynamically-typed language with one distinctive +> EigenScript v0.29.0. A small dynamically-typed language with one distinctive > feature: an **observer** tracks every value's entropy/trend on each > assignment, so convergence, stability, and oscillation are first-class. This > file is the whole surface you need to generate correct `.eigs`. Models