From 1e8086b4d3539f916d49b3989fd4692dbfa23af8 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Fri, 25 Sep 2026 17:00:16 +0700 Subject: [PATCH] The use-after-release checks to build are recorded --- TODO.org | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.org b/TODO.org index a1fd604d..867e46b1 100644 --- a/TODO.org +++ b/TODO.org @@ -905,6 +905,7 @@ semantics; the refined version needs liveness across control flow, which is the flow tracking that was repealed. ** NEXT Catching a use-after-release statically +Decided 2026-09-25 (91): build (A) Odin's unsafe-return refusal — returning (addr local), (slice local-array …) or (addr (at local-array i)); (B) the same test on a set into a global; (C) dev fills a fixed arena's freed bytes with poison on free-all; (D) detect_stack_use_after_return=1 for @sanitize. Rules out a with-allocator escape check: the runtime epoch check catches it and a static rule flags building into the caller's arena. Probes: p1-p16 of the study. Decided 2026-09-25: a study, not a build — how arena memory escapes in real Flan code, and whether a sound lexical check would catch most of it. The result goes in docs/BUILT.md; nothing is built on it without the author. Open, and for the first time with evidence available: the epoch trap is built, and there is a =Vec= to write real arena programs with, so whether the escapes that