ludic/changes/declared-namespaces.md
Orkuncakilkaya 9259808f80 feat(lang): L6 namespaces declared in Ludic - alias
`alias meth(labels) = target` in a namespace block makes Ns.meth a call to
target with those labels (the target's own parameter names without a list). The
engine's 41 table-driven namespaces - 438 methods: Http, Udp, Process, Json,
Value, Screen, Input, Audio, World, Tiled, ... - leave emit_ns_call for
runtime/native/namespaces.ludic, spliced into every program; 532 lines of
compiler go and the seed shrinks by 23k lines of IR. The game's IR is byte
identical. The checker checks an alias call's arguments against its target.
Still built in: the inline namespaces (Math, Text, List, Vector, Color, Time,
Date, ...) and the methods that pick a target by argument type.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 02:40:57 +03:00

662 B

bump: minor type: feature Namespaces are declared in Ludic. alias meth(labels) = target in a namespace block makes Ns.meth(...) a call to target, taking named arguments by those labels; with no label list the target's own parameter names are the labels. The engine's 41 table-driven namespaces - Http, Udp, Process, Json, Value, Screen, Input, Audio, World, Tiled and the rest, 438 methods - moved out of the compiler into runtime/native/namespaces.ludic, and a package owns an API the same way. The code a program compiles to is unchanged byte for byte, and the checker now checks an alias call's arguments against its target.