ludic/selfhost
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
..
backend 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
check Merge branch 'lang/dispatch-check' into lang/foundations 2026-09-28 18:03:09 +03:00
frontend owned fields (25.5e): @owns(Kind) on a record's field, and owned_leaks 2026-09-28 17:01:28 +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 (fix): a function taken as a value keeps what it returns, and an entry is walked 2026-09-28 20:10:18 +03:00
ludicc.win.seed.ll 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
main.ludic region rule (25.3c): keep() and intern(), frame_keeps, and --arena-strict 2026-09-28 16:33:53 +03:00