JOURNAL: Iter-5-Sub-Schritte 5a/5b/5c/5d präzisiert

This commit is contained in:
2026-05-07 11:19:36 +02:00
parent 937c5211e8
commit 7619f20cd6
+27
View File
@@ -193,3 +193,30 @@ ailang-codegen + 7 ailang-core.
**Plan Iteration 5:** Modulsystem mit Imports. Cross-Module-Hashing,
Import-Auflösung, mehrere `.ail.json`-Files in einem Build. Multi-
Diagnose-Refactor erst danach.
Sub-Schritte:
- **5a — Workspace-Loader.** `ailang_core::Workspace { modules:
BTreeMap<String, Module> }` plus `load_workspace(entry: &Path)`, das
`imports` rekursiv vom Eintrittsmodul folgt. Konvention: `import {
module: "foo" }` löst auf `<dir>/foo.ail.json` neben dem Entry. Zyklus-
Erkennung. CLI: bestehende Subkommandos arbeiten weiter auf einzelnem
Modul; ein neues `ail workspace <entry>` listet alle erreichbaren
Module mit Hash. Tests: zwei kleine Beispielmodule mit
Import-Beziehung; Zyklus-Test.
- **5b — Cross-Module-Typcheck.** Typchecker bekommt `&Workspace`
statt `&Module`. Imports werden im Env als Namespace eingehängt
(`alias.def` oder bei fehlendem Alias `module.def`). Neue Diagnostic-
Codes: `unknown-module`, `unknown-import`, `import-cycle`,
`ambiguous-name`. Tests pro Code.
- **5c — Cross-Module-Codegen.** Emitter erzeugt IR für alle Module im
Workspace, prefix-mangelt mit `@ail_<module>_<def>`. E2E-Test:
Programm, das eine Funktion aus Modul B in Modul A nutzt, liefert
korrektes Ergebnis im Binary.
- **5d — Tooling-Anpassungen.** `manifest`, `describe`, `deps`, `diff`
bekommen einen `--workspace`-Modus (rekursiv). Single-Modus bleibt
Default für Rückwärtskompatibilität.
Während Iter 5 gleich beim Bau **`source_filename` pfad-unabhängig
halten** (nur Modulname, kein Verzeichnis-Prefix), sonst kippen die
IR-Snapshots.