ludic/selfhost/backend
Orkuncakilkaya 42deb76c28 schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes
--emit-schema FILE writes the compiler's resolved view once the program type-checks: every
record (fields, types, defaults as written, docs, places, attributes), every registry with its
entries in their final order after the open-registry merge (key, constant, index, file:line:col
of the entry and of each field value, and which file contributed which keys), every const, and
the zero-argument functions a fn value can name. Deterministic, schema_version 1; the runtime is
left out. `ludic schema [file] [-o FILE]` wraps it.

--check --diagnostics=json prints every error as one JSON array on stdout: the checker's and the
module rules' all, a parse or lowering error as the last. Tokens and nodes now carry a column.

Fields take several @attributes; @Ref(Registry), @OneOf(PREFIX_), @Range(lo, hi), @Unit("..."),
@Asset("..."), @Color on a field and @AppendOnly / @ByKey on a registry change nothing but go into
the schema, and @Ref naming no registry is an error (every one reported). Fixtures:
examples/lang/attributes.ludic, examples/rejected/ref_unknown.ludic, cases in ludic-dev test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 18:06:54 +03:00
..
game a program's states made on first injection, and the ECS stores started at 8 slots 2026-09-29 14:14:05 +03:00
stdlib map packs: Fs.mount / Fs.unmount at run time, and a map's bakes under assets/baked/maps/<map>/ 2026-09-29 17:27:06 +03:00
emit_addr.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
emit_call.ludic a program's states made on first injection, and the ECS stores started at 8 slots 2026-09-29 14:14:05 +03:00
emit_core.ludic Os.heap_relief(): the allocator's freed-but-cached memory handed back, once after a load 2026-09-29 14:30:20 +03:00
emit_decl.ludic Os.heap_relief(): the allocator's freed-but-cached memory handed back, once after a load 2026-09-29 14:30:20 +03:00
emit_deps.ludic frame allocs: a local shadowing a function is no edge, the drain's calls are no edges, HEAP keeps only a growth off the arena, and the arena starts at its first use 2026-09-28 20:23:28 +03:00
emit_escape.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
emit_expr.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_fence.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
emit_fence_ir.ludic intern: past its store or its table, the fence's overflow - said once 2026-09-29 00:37:56 +03:00
emit_float.ludic schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes 2026-09-29 18:06:54 +03:00
emit_fnval.ludic a program's states made on first injection, and the ECS stores started at 8 slots 2026-09-29 14:14:05 +03:00
emit_frame.ludic schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes 2026-09-29 18:06:54 +03:00
emit_head.ludic a program's states made on first injection, and the ECS stores started at 8 slots 2026-09-29 14:14:05 +03:00
emit_intrin.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
emit_intrin2.ludic a render3d program's window is opened by its renderer, not by the runtime before main 2026-09-29 14:19:10 +03:00
emit_lazy.ludic a program's states made on first injection, and the ECS stores started at 8 slots 2026-09-29 14:14:05 +03:00
emit_mem.ludic fence (25.1): every allocation goes through the fence - sites, frame judging, census, callers 2026-09-28 15:35:29 +03:00
emit_new.ludic capacities (25.5a): @max(n) on a list field, and a full table is a failure 2026-09-28 16:43:02 +03:00
emit_resource.ludic owned fields (25.5e): @owns(Kind) on a record's field, and owned_leaks 2026-09-28 17:01:28 +03:00
emit_schema.ludic schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes 2026-09-29 18:06:54 +03:00
emit_stmt.ludic frame allocs (25.2): @frame on a step list's field, @alloc_ok on a statement, and on an exported function 2026-09-28 15:56:32 +03:00
emit_vis.ludic schema: ludicc --emit-schema / ludic schema, --check --diagnostics=json, and editor attributes 2026-09-29 18:06:54 +03:00