ludic/examples/lang
Orkuncakilkaya 6ab98292d2 fence: every runtime call is its line's site, and site 0 comes back when it returns
A block took whatever @lp_site held when it was made. Only malloc, calloc, realloc, concat, the number
texts, the float text, a substring and Text.* set one, so every other runtime helper - intern,
Text.repeat and the string builders, the Fs, Os, unicode, uuid and crypto helpers - was charged to
whichever line had allocated last (walk 9 blamed gvk_tex_storage, m4_new, kept_push$int and
survey_op_reward for intern's 16 B copies).

- Any `call ptr @lp_*` now takes a site of its own, its kind the callee's name when no better one is
  known (intern, str_repeat, fs_list, ...). What the helper makes, in however many blocks and
  through whichever helpers it calls in turn, is that line's.
- When the call returns, @lp_site goes back to site 0, now named "(runtime) (no site) unsited": a
  block made with no site of its own says so instead of borrowing the last one.
- The ECS stores' grows and a mod's registered stores - the only allocations emitted outside
  emit_bind - take a site each.

Golden alloc_fence_sites: two lines take turns keeping memory, Text.repeat and a record, every frame
judged. Each report names its own line (25 x +32 B str_repeat at :11, 25 x +16 B new Box at :12);
the toolchain before this charges 23 of the 32 B texts to the new Box line. The other fence and arena
goldens are unchanged; ludic.base's tests pass; the game's frame ratchets are 0 on main 7cb2b164.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 00:40:28 +03:00
..
data feat(lang): L9 resource files - registry ... from 2026-09-24 14:00:20 +03:00
aliases.ludic feat(lang): L6 namespaces declared in Ludic - alias 2026-09-24 02:40:57 +03:00
alloc_fence.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
alloc_fence_auto.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
alloc_fence_declared.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
alloc_fence_leak.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
alloc_fence_rewarm.ludic fence: declared but unbounded, and a rewarm that keeps the warm-up's deadline 2026-09-28 22:36:08 +03:00
alloc_fence_sites.ludic fence: every runtime call is its line's site, and site 0 comes back when it returns 2026-09-29 00:40:28 +03:00
alloc_fence_unbounded.ludic fence: declared but unbounded, and a rewarm that keeps the warm-up's deadline 2026-09-28 22:36:08 +03:00
annotations.ludic feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
arena_alias.ludic escape (fix): kept memory is HEAP, so what is pushed through an alias of it is kept 2026-09-28 21:15:32 +03:00
arena_defaults.ludic escape (fix): a node walked more than once is scratch only if every walk found it LOCAL 2026-09-28 17:17:33 +03:00
arena_fnval.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
arena_pool.ludic escape (fix): the arena took ludic.ui's pooled nodes - a generic's call and an unknown callee now keep what they are handed 2026-09-28 17:13:05 +03:00
checked.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
defaults.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
detach.ludic refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00
floats.ludic wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run 2026-09-25 15:31:34 +03:00
generics.ludic feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
json_saves.ludic runtime: Json.write_file, and Json.encode through a kept buffer 2026-09-28 15:32:36 +03:00
lifecycle.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
long_literals.ludic wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run 2026-09-25 15:31:34 +03:00
nested_templates.ludic fix(lang): a template inside another's hole, and integer literals past 2^31 - 1 2026-09-25 08:10:46 +03:00
offline_rewards.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
operators.ludic feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
qdecl.ludic feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
reason.ludic refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00
registry.ludic feat(lang): L8 registries by declaration - registry and def 2026-09-24 13:34:51 +03:00
resources.ludic feat(lang): L9 resource files - registry ... from 2026-09-24 14:00:20 +03:00
rng_demo.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
runtime_temps.ludic runtime: Log, DateTime.format, Input.text, Path, Mime, Fs, Os and Text keep nothing per call 2026-09-28 13:55:49 +03:00
scenes.ludic wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run 2026-09-25 15:31:34 +03:00
string_temps.ludic Os.platform/arch uname once; render3d primes a new buffer's Metal buffer 2026-09-28 13:34:45 +03:00
strings.ludic feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
time_demo.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
toggle.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00