ludic/selfhost/backend
Orkuncakilkaya 5d34d0fd09 escape (fix): a function taken as a value keeps what it returns, and an entry is walked
Two more holes of the arena's family, found from ECS's births:
- a function called through a function value (UiClass.make's cmp_x_new, a step list, a System's tick)
  has its result flow nowhere the analysis can see, so what it returned looked LOCAL - and a caller
  keeping it (ludic.ui's instance table) would keep scratch. Every function taken as a value (fn f)
  now has its result kept.
- an entry block has no name, and the analysis only walked named declarations: what an entry stored
  was never seen. It is walked now.
examples/lang/arena_fnval.ludic (a factory in a field, its records kept by a pool across frames)
crashed poisoned before and prints '5 1053' as the heap does now; in ludic-dev test. Maroon Lake:
component constructors are kept, not births (birth_leaks 115 -> 103); what fn values return is kept
(frame_allocs 194 -> 210, frame_keeps 151 -> 162); 5293 sites local, 6586 kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 20:10:18 +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 arena (25.3b): LOCAL sites allocate from the frame's scratch; dispatch is not an allocation; @frame by property 2026-09-28 16:25:32 +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 region rule (25.3c): keep() and intern(), frame_keeps, and --arena-strict 2026-09-28 16:33:53 +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: a click is not a frame, a reducer is its dispatch's, a capped push is bounded; ludic.photo at 0 2026-09-28 20:02:47 +03:00
emit_escape.ludic escape (fix): a function taken as a value keeps what it returns, and an entry is walked 2026-09-28 20:10:18 +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: declared bytes are never judged nor listed; the scan's sites sorted by bytes, as many as asked, and all to a file 2026-09-28 18:03:00 +03:00
emit_fence_ir.ludic fence: free and realloc stay on the fast path with the arena on - the arena's range checked inline 2026-09-28 18:37:45 +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 (fix): a function taken as a value keeps what it returns, and an entry is walked 2026-09-28 20:10:18 +03:00
emit_head.ludic reachability scan (25.5b) and exit accounting; free() and print release what they are handed 2026-09-28 16:49:27 +03:00
emit_intrin.ludic arena (25.3b): LOCAL sites allocate from the frame's scratch; dispatch is not an allocation; @frame by property 2026-09-28 16:25:32 +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 capacities (25.5a): @max(n) on a list field, and a full table is a failure 2026-09-28 16:43:02 +03:00
emit_resource.ludic owned fields (25.5e): @owns(Kind) on a record's field, and owned_leaks 2026-09-28 17:01:28 +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