v5 Semantics
Module-level semantics
- modules are compile-time compilation units
- exports define public contract, not all internal bindings
Graph constraints
- module names unique
mainexists and is last- imports must point to earlier modules
Alias and scope
- imports become aliases in current module scope
- alias collisions are redeclare errors
- alias used only for qualified access
Member-access validation
aliasmust resolve- alias must be module binding
- requested member must be exported
Layered semantics
- old scope/const/arity/return/break rules still apply
- module checks are additional front-end guards
Why now
- avoids runtime module lookup crashes
- keeps capstone deterministic
- improves teaching value by failing early
Quick checks
- unqualified member access from imported module fails
- future imports are rejected
- unknown exports are explicit
1 / 1