feat(lang): packages count under uses; a port of defaults may go unbound
A module that says uses must name every package module it reaches; a package with no module line is named for its directory (ludic_render3d) for this rule, so a mechanic reaching into the renderer is caught. Only the engine's runtime needs no naming. 'module x uses' with nothing after it reaches no other module. A port whose every member has a default answers with its defaults when unbound, and 'new' of a port says to bind it. ludic-dev test runs 'ludic test packages'. Reseed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e8c1d54a96
commit
f4062010e9
15 changed files with 47465 additions and 46516 deletions
11
changes/uses-packages.md
Normal file
11
changes/uses-packages.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
bump: minor
|
||||
type: feature
|
||||
**Packages count under `uses`, and the mechanic packages hold themselves to it.** A module that
|
||||
says `uses` must name every package module it reaches (`ludic_inventory`, `ludic_ui`); a package
|
||||
with no `module` line is named for its directory (`ludic_render3d`), so a mechanic reaching into
|
||||
the renderer is caught. Only the engine's own runtime needs no naming. `module x uses` with nothing
|
||||
after it reaches no other module. A port whose every member has a default may go unbound and
|
||||
answers with its defaults. ludic.base, ludic.clock, ludic.effects, ludic.inventory, ludic.wallet,
|
||||
ludic.weather and ludic.tracks say `uses ludic_base` (ludic.base: nothing), and their records of
|
||||
function values are ports - `clock_bind(w)`, `inv_bind(r)`, `weather_bind(w)` and `tracks_bind(w)`
|
||||
are gone; a game writes `bind ClockWorld { ... }` (and so on) instead.
|
||||
Loading…
Add table
Add a link
Reference in a new issue