ludic/tools/ludic-cli
Orkuncakilkaya a299117858 frame keeps: a model's records filled in place, kept event numbers, list spares, Json.read_file
From the fence's kept frames in 22 minutes of play:

- A component field that is a record or a list of records was `value_put(o, k, view_val_T(x))`,
  a whole new tree every frame (HudPrompt's notifications). view_fill.ludic generates view_set_T /
  view_set_list_T / view_fill_T that fill the object and list under the key in place.
- value_list_fit dropped the items it cut off and value_item made new ones as the list grew back,
  a Value per item per regrowth (value_item / value_set_strs); the cut-off items are now the
  list's spares (Val.spare), and an item of another kind is turned rather than replaced.
- ludic.ui: a scroll box's "scroll" and a slider's "change" fired a fresh Value.float a frame
  (sc_walk, scroll.ludic:36); ui_fire_float takes one from a ring kept with the state (fired.ludic).
  ui_object_fit_into is exported, for a draw that keeps its list.
- Json.read_file(path): read, parsed, and the file's text given back - Json.parse(Fs.read_text())
  kept the whole file on every read (Maroon Lake's settings peeks).

Golden value_list_regrow: a list alternating 6 and 2 items every frame keeps nothing (the toolchain
before this fails it: +128 B new Val from value_item). Game compiles; ludic.i18n/settings/hints/
base tests pass (ludic.ui has none); arena and fence goldens unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 12:22:13 +03:00
..
assets.ludic feat(windows): the ludic CLI and ludic bundle on Windows 2026-09-13 03:01:33 +03:00
build.ludic merge lang/foundations into lang/native-jolt (seeds regenerated) 2026-09-27 03:20:44 +03:00
bundle.ludic feat(bundle): a native library's licence ships with it - each linked package's native/LICENSE* beside the .exe, in Contents/Resources on macOS 2026-09-27 14:43:16 +03:00
checks.ludic feat(tools): L10 ludic-fmt enforces a project's style 2026-09-24 14:38:35 +03:00
deps.ludic owned fields (25.5e): @owns(Kind) on a record's field, and owned_leaks 2026-09-28 17:01:28 +03:00
dev.ludic feat(render3d): every shader variant as Vulkan SPIR-V, built ahead of time 2026-09-15 10:11:31 +03:00
docgen.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
docgen_check.ludic refactor(cli)!: split the contributor tool out of the ludic CLI 2026-09-05 23:15:12 +03:00
docgen_gen.ludic feat(windows): the ludic CLI and ludic bundle on Windows 2026-09-13 03:01:33 +03:00
forgejo.ludic feat(windows): the ludic CLI and ludic bundle on Windows 2026-09-13 03:01:33 +03:00
glgen.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
json.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
lsp_test.ludic feat(tooling): JetBrains IDE support, LSP navigation, barrel imports, package scripts and hooks 2026-09-16 16:13:31 +03:00
main.ludic feat(migrate): 0.R5 - ludic migrate state --tighten takes mut off every state parameter nothing down the chain writes; --root DIR lets the edits reach a directory without running its programs; a write through a local holding part of a mut state counts as a write to it 2026-09-27 00:20:44 +03:00
migrate.ludic feat(migrate): 0.R5 - ludic migrate state --tighten takes mut off every state parameter nothing down the chain writes; --root DIR lets the edits reach a directory without running its programs; a write through a local holding part of a mut state counts as a write to it 2026-09-27 00:20:44 +03:00
pack.ludic docs(packages): an index of the packages; the pack skips what is not a package directory 2026-09-25 07:22:05 +03:00
packignore.ludic feat(pack): .packignore, so a pack root can leave build artefacts out 2026-09-11 18:29:32 +03:00
pkg.ludic feat(tooling): JetBrains IDE support, LSP navigation, barrel imports, package scripts and hooks 2026-09-16 16:13:31 +03:00
pkg_test.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
prelude.ludic feat(test): ludic test -j N runs tests side by side 2026-09-25 11:38:09 +03:00
project.ludic feat(cli): ludic build --check / ludicc --check - check without building 2026-09-25 13:13:42 +03:00
release.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
scripts.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
selfhost.ludic 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
selfhost_test.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
shaders.ludic feat(render3d): the meadow's blades are culled on the GPU - under 1.5 ms of a MoltenVK frame for all the grass 2026-09-27 15:47:36 +03:00
test.ludic 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
testpar.ludic feat(pkg): phase 15 - a package can carry a native library 2026-09-26 23:35:45 +03:00
toolchain.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
tools.ludic feat(tools): L10 ludic-fmt enforces a project's style 2026-09-24 14:38:35 +03:00
vkgen.ludic feat(lang): L7 memory is safe unless it says unsafe 2026-09-24 12:53:27 +03:00