ludic/selfhost/backend
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
..
game fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
stdlib fence (25.1c): the census reads the heap outside Ludic's blocks; blocks counted at malloc's own size 2026-09-28 15:38:13 +03:00
emit_addr.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
emit_call.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_core.ludic Os.heap_bytes: the heap without the renderer; string_temps reads it 2026-09-28 12:31:42 +03:00
emit_decl.ludic frame allocs (25.2): @frame on a step list's field, @alloc_ok on a statement, and on an exported function 2026-09-28 15:56:32 +03:00
emit_deps.ludic frame allocs (25.2): what a frame can come to allocate, counted and ratcheted 2026-09-28 15:50:09 +03:00
emit_escape.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
emit_expr.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_fence.ludic fence (25.1c): the census reads the heap outside Ludic's blocks; blocks counted at malloc's own size 2026-09-28 15:38:13 +03:00
emit_fence_ir.ludic fence (25.1c/25.2): natives by library in the census, and @alloc_ok's allocations declared at run time 2026-09-28 15:54:08 +03:00
emit_float.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_fnval.ludic feat(compiler): a Job.parallel_for worker may read a state but not change one 2026-09-27 22:04:59 +03:00
emit_frame.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
emit_head.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_intrin.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_intrin2.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_mem.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_new.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_stmt.ludic frame allocs (25.2): @frame on a step list's field, @alloc_ok on a statement, and on an exported function 2026-09-28 15:56:32 +03:00
emit_vis.ludic fix(lang): the action drain is the program's; --check runs every check a build makes; a registry key named count is refused; name lookups are tables 2026-09-25 23:34:43 +03:00