The use-after-release checks to build are recorded

This commit is contained in:
Joseph Ferano 2026-09-25 17:00:16 +07:00
parent fc6e2f7dfb
commit 1e8086b4d3

View File

@ -905,6 +905,7 @@ semantics; the refined version needs liveness across control flow, which is the
flow tracking that was repealed. flow tracking that was repealed.
** NEXT Catching a use-after-release statically ** 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. 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 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 there is a =Vec= to write real arena programs with, so whether the escapes that