diff --git a/docs/DESIGN.md b/docs/DESIGN.md index 1a5edcb..dccc9cf 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -103,10 +103,13 @@ Trade-off: keine Inline-Optimierungen über die LLVM-API. Wir setzen auf ## Mangling-Schema (Iter 5c) Alle AILang-Funktionen werden zu `@ail__` gemangelt — auch im -Single-Modul-Fall. Globale Strings/Konstanten zu `@.str__` -bzw. `@ail__`. Eintrittspunkt ist eine `define i64 @main()`- -Trampoline, die `@ail__main()` aufruft. `source_filename` -existiert genau einmal pro Workspace und trägt den Eintrittsmodulnamen. +Single-Modul-Fall. Konstanten ebenfalls (`@ail__`). Globale +String-Literale tragen einen kurzen Hint zur Lesbarkeit: +`@.str___` (z. B. `@.str_sum_fmt_int_0`). Eintrittspunkt +ist eine `define i32 @main()`-Trampoline (C-/LLVM-ABI), die +`@ail__main()` aufruft. `source_filename` existiert genau +einmal pro Workspace und trägt den Eintrittsmodulnamen +(`.ail`). ## Konvention: Qualifizierte Cross-Module-Verweise (Iter 5b) diff --git a/docs/JOURNAL.md b/docs/JOURNAL.md index 24cd325..0de72ad 100644 --- a/docs/JOURNAL.md +++ b/docs/JOURNAL.md @@ -292,3 +292,60 @@ IR-Snapshots. **Stand:** Modulsystem ist Ende-zu-Ende geschlossen — Loader + Typcheck + Codegen + Build sehen den Workspace als kohärente Einheit. Multi- Diagnose-Refactor und ggf. ADT-Cross-Module bleiben für später. + +## 2026-05-07 — Iter 5d fertig: Tooling auf Workspace ausgedehnt + +- `ail manifest|describe|deps|diff --workspace` arbeiten jetzt + über alle Module des Workspaces. Default ohne Flag bleibt single-modul + für Rückwärtskompatibilität. Manifest sortiert nach `(modul, name)`, + describe akzeptiert Punktnotation `ws_lib.add`, deps emittiert + `{from_module, from_def, to_module, to_def}`-Edges, diff vergleicht + workspace-übergreifend mit added/removed/changed/unchanged_modules + und nested Sub-Diff pro changed_module. +- Refactor: `diff_def_lists` ist die einzige Quelle der 4-Kategorie- + Logik; Single- und Workspace-Diff teilen sie. +- Tests: 44 grün (vorher 40). Neu: `manifest_workspace_lists_all_defs`, + `describe_workspace_resolves_qualified_name`, + `deps_workspace_includes_cross_module`, `diff_workspace_added_module`. + +**Beobachtung (Schuld):** `deps` filtert Builtins/Locals/Funktions- +parameter nicht. Im Workspace-Modus wird das deutlicher als im Single- +Modus — `ws_lib.add` listet Edges auf `ws_lib.+` (Builtin) und +`ws_lib.a`/`ws_lib.b` (Funktionsparameter). Bekanntes Vorbestand- +Problem aus Iter 2; Task #22 im Backlog. + +## 2026-05-07 — Architektur-Review nach Iter 5 + +Architekt-Agent gerufen. Befunde: + +1. **Mangling-Konsistenz hält.** `@ail__` durchgängig in + Funktionen, Konstanten, String-Globals, Cross-Module-Calls. + Trampoline korrekt. ADT-Konstruktoren sind absichtlich symbol-frei + (inline malloc). +2. **Modul-Hashes bitidentisch seit Iter 4.** Iter-5c-Snapshot- + Regenerierung war Codegen-Output-Änderung, nicht Hash-Bruch. +3. **Drift, sofort fällig:** + - DESIGN.md sagt `define i64 @main()`, der Codegen emittiert + `define i32 @main()` (siehe `sum.ll:35`). + - Stringschema-Notation in DESIGN.md verkürzt + (`@.str__` statt `@.str___`). +4. **Schulden, die Zinsen tragen:** `deps`-Builtin-Leck (Task #22) ist + im Workspace-Modus zu einer Falschaussage geworden — vor dem + nächsten großen Sprung schließen. + +**Plan Iteration 6 — Aufräumarbeiten:** + +1. **DESIGN.md-Drift fixen.** Mangling-Schema-Block aktualisieren, + `@main`-Signatur korrigieren, String-Globals präzise notieren. +2. **`deps`-Härtung (#22).** Pro Workspace eine Top-Level-Def-Tabelle + bauen; Edges, deren Ziel kein Top-Level-Symbol ist, filtern oder + als separate `builtin:`/`local:`-Kategorie ausgeben. + Funktionsparameter via Lexikalisches Scope-Tracking aus walk_term. +3. **Multi-Diagnose-Refactor (#20).** `check_workspace` akkumuliert + `Vec` über alle Defs, statt beim ersten Error zu + shortcuten. Intra-Def darf weiter shortcuten — der Wert ist + "alle defektiven Defs auf einmal sehen", nicht "alle defektiven + Subterme einer Def sehen". + +Reihenfolge: 1 zuerst (Doku-Trivialität), dann 2 vor 3 (deps ist eine +Tooling-Wahrheit-Reparatur, Multi-Diag eine Strukturerweiterung).