ludic/selfhost
Orkuncakilkaya bef0d6fbca arena (25.3b): LOCAL sites allocate from the frame's scratch; dispatch is not an allocation; @frame by property
Behind ludicc --arena (or 'arena on' in the program's package.ludic): the escape analysis runs and a
LOCAL site's allocation raises @lp_want for that one call, so it comes from the frame's arena. Two
halves in one mmap reservation (R3D_ARENA_MB each, 256 by default), bump-allocated with a 16-byte
size header, flipped at each frame mark: a frame's scratch is good through the next frame, then its
half is started again (R3D_ARENA_CHECK=1 fills it with 0xDD first). The heap takes over when no frame
is running, off the main thread, or past the half's end; lp_free ignores an arena block and
lp_realloc copies one out. R3D_ARENA=0 turns it off at run time; the census reports each half's
high-water mark. A program that builds text, a list and a record per frame: 29998 heap blocks made
and 18002 freed without it, 8 and 8 with it and 544 bytes of scratch a frame, the same output.

A dispatch's 'new' fills the queue's kept record (E_NEW.b), so 25.2 no longer counts it and 25.3
treats its fields as kept. '@frame' is keyed by property and field: a 'run' field is a root only in
a property that marks it, and 'tick' stays a System's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 16:25:32 +03:00
..
backend 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
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 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
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 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
ludicc.win.seed.ll 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
main.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