ludic/selfhost
Orkuncakilkaya e958d00373 Os.heap_relief(): the allocator's freed-but-cached memory handed back, once after a load
Beside Os.heap_bytes: malloc_zone_pressure_relief(NULL, 0) on macOS (weak, so a libc without it reads
0) and HeapCompact(GetProcessHeap(), 0) on Windows - kernel32 only, so the Windows build imports
nothing new; the bytes it says it released. Once after a load, never per frame.

Measured, for the record: on macOS it does NOT reach the large-block cache. A C program that frees six
15 MB blocks still holds 90 MB of MALLOC_LARGE (empty) after relief on every zone (it returns 0); only
MallocLargeCache=0 in the environment AT PROCESS START turns the cache off (read at malloc's init -
set later, it does nothing). Maroon Lake's watcher sets it for the processes it spawns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 14:30:20 +03:00
..
backend Os.heap_relief(): the allocator's freed-but-cached memory handed back, once after a load 2026-09-29 14:30:20 +03:00
check Merge branch 'lang/dispatch-check' into lang/foundations 2026-09-28 18:03:09 +03:00
frontend frame keeps: a model's records filled in place, kept event numbers, list spares, Json.read_file 2026-09-29 12:22:13 +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 Os.heap_relief(): the allocator's freed-but-cached memory handed back, once after a load 2026-09-29 14:30:20 +03:00
ludicc.win.seed.ll Os.heap_relief(): the allocator's freed-but-cached memory handed back, once after a load 2026-09-29 14:30:20 +03:00
main.ludic region rule (25.3c): keep() and intern(), frame_keeps, and --arena-strict 2026-09-28 16:33:53 +03:00