ludic/selfhost
Orkuncakilkaya 8ca18725b6 escape (25.3a): which allocations never outlive their frame - the analysis, behind --escape-report; @alloc_ok on generics
emit_escape.ludic: every value is in a class, joined by flow edges (a let, an assignment, an argument
into its parameter, a result into the call) and store edges (a field, an element, a push). HEAP (a
parameter, a state, a global, what an unknown call hands back) flows forward; ESC (stored into
something HEAP, into a global, into an event's fields or named values, handed to an unknown callee)
flows backward, and from an ESC or HEAP target along a store. A load is its base's class. A site that
is neither ESC nor in a function reaching Mem.frame is LOCAL (Node.uns = ES_SCRATCH). ludicc
--escape-report prints each site and the totals; nothing is emitted differently yet - the arena that
allocates the LOCAL sites is next.

@alloc_ok on a generic now covers its instances (kept_push$NetFact is under kept_push's), and a
statement's @alloc_ok is carried on the node (Node.uns), so a generic's clone keeps it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 16:05:07 +03:00
..
backend escape (25.3a): which allocations never outlive their frame - the analysis, behind --escape-report; @alloc_ok on generics 2026-09-28 16:05:07 +03:00
check fix(migrate): 0.R5 - a state an argument to a C function comes out of keeps the mutability it was declared with, so --tighten leaves the mut on a wrapper writing through a native handle (phys_force) and does not add one to a query that reads through one 2026-09-27 04:23:11 +03:00
frontend escape (25.3a): which allocations never outlive their frame - the analysis, behind --escape-report; @alloc_ok on generics 2026-09-28 16:05:07 +03:00
golden chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
support feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
tests fix(compiler): == / != on references is identity; only text compares by content 2026-09-16 16:13:31 +03:00
ludicc.seed.ll escape (25.3a): which allocations never outlive their frame - the analysis, behind --escape-report; @alloc_ok on generics 2026-09-28 16:05:07 +03:00
ludicc.win.seed.ll escape (25.3a): which allocations never outlive their frame - the analysis, behind --escape-report; @alloc_ok on generics 2026-09-28 16:05:07 +03:00
main.ludic escape (25.3a): which allocations never outlive their frame - the analysis, behind --escape-report; @alloc_ok on generics 2026-09-28 16:05:07 +03:00