WhatsNew + roadmap: mut-local milestone closed; Stateful-islands marked in-progress

- docs/WhatsNew.md: append a user-facing entry describing the new
  local-mutable-state block — what it does, what it does not yet
  cover (heap-Str and user ADTs), the two example fixtures, and
  the broader streaming-workloads motivation. No internals.

- docs/roadmap.md: the Stateful-islands milestone flips from [ ] to
  [~] (in progress). A Progress paragraph records sub-milestone 1
  (mut-local) as closed with its commit references, and enumerates
  the remaining sub-milestones (effect-handler infrastructure,
  refs + !Mut, MutArray, Stateful + pipe) — each to be brainstormed
  separately so each one stays small and audit-friendly.
This commit is contained in:
2026-05-15 09:22:48 +02:00
parent 20add51112
commit 8685e96970
2 changed files with 31 additions and 1 deletions
+17 -1
View File
@@ -265,7 +265,7 @@ clean. Pick the next milestone from P2.)_
exercising the LLM-natural Show-body shape.
- context: per-iter journal 2026-05-13-iter-str-concat.md.
- [ ] **\[milestone\]** Stateful islands — bounded mutation for
- [~] **\[milestone\]** Stateful islands — bounded mutation for
streaming workloads (`Stateful a b` + `!Mut` effect + `mut`
syntactic block). Adds a sealed mutable-state layer on top of
the pure core: a `Stateful a b` first-class type whose interior
@@ -281,6 +281,22 @@ clean. Pick the next milestone from P2.)_
zero-allocation pipe combinator, growing tuple-state types as
pipelines lengthen).
**Progress.** Decomposed at brainstorm time (2026-05-15) into a
sequence of shippable sub-milestones. Sub-milestone 1 closed
2026-05-15: **mut-local** — sealed-by-construction `mut`/`var`/
`assign` blocks for Int/Float/Bool/Unit scalars, alloca-resident,
no escape, no `!Mut` effect leakage. Foundation in place;
fn signatures stay pure while LLM authors can write imperative
accumulators directly. Spec `docs/specs/2026-05-15-mut-local.md`;
iters mut.1/mut.2/mut.3/mut.4-tidy (commits 7b92719, b24718a,
03fb633, 20add51). Remaining sub-milestones (to be brainstormed
separately, in order): (2) effect-handler infrastructure as a
prerequisite for any non-IO/non-Diverge effect; (3) `!Mut` effect
+ `ref a` first-class type that can escape mut blocks under
uniqueness-tracking; (4) mutable-array primitive `MutArray a`;
(5) `Stateful a b` sealed callable type + `pipe` combinator with
zero-allocation composition + `runST`-equivalent escape discharge.
**Motivation.** AILang's signature-as-contract thesis is *better*
served by an explicit `Stateful a b` + `!Mut` annotation than by
the implicit-closure-mutation idiom of myc / Lua / JS factory