Doku-Drift fixen + Iter-5d-JOURNAL nachreichen
JOURNAL bekommt fehlenden Iter-5d-Eintrag und Iter-5-Architektur- Review-Notiz mit Iter-6-Plan (Aufräumarbeiten). DESIGN.md korrigiert zwei Drifts vom Architekt-Befund: @main ist i32 (C-/LLVM-ABI), nicht i64; String-Globals tragen Hint @.str_<modul>_<hint>_<idx>.
This commit is contained in:
+7
-4
@@ -103,10 +103,13 @@ Trade-off: keine Inline-Optimierungen über die LLVM-API. Wir setzen auf
|
|||||||
## Mangling-Schema (Iter 5c)
|
## Mangling-Schema (Iter 5c)
|
||||||
|
|
||||||
Alle AILang-Funktionen werden zu `@ail_<modul>_<def>` gemangelt — auch im
|
Alle AILang-Funktionen werden zu `@ail_<modul>_<def>` gemangelt — auch im
|
||||||
Single-Modul-Fall. Globale Strings/Konstanten zu `@.str_<modul>_<idx>`
|
Single-Modul-Fall. Konstanten ebenfalls (`@ail_<modul>_<const>`). Globale
|
||||||
bzw. `@ail_<modul>_<def>`. Eintrittspunkt ist eine `define i64 @main()`-
|
String-Literale tragen einen kurzen Hint zur Lesbarkeit:
|
||||||
Trampoline, die `@ail_<entry-modul>_main()` aufruft. `source_filename`
|
`@.str_<modul>_<hint>_<idx>` (z. B. `@.str_sum_fmt_int_0`). Eintrittspunkt
|
||||||
existiert genau einmal pro Workspace und trägt den Eintrittsmodulnamen.
|
ist eine `define i32 @main()`-Trampoline (C-/LLVM-ABI), die
|
||||||
|
`@ail_<entry-modul>_main()` aufruft. `source_filename` existiert genau
|
||||||
|
einmal pro Workspace und trägt den Eintrittsmodulnamen
|
||||||
|
(`<entry-modul>.ail`).
|
||||||
|
|
||||||
## Konvention: Qualifizierte Cross-Module-Verweise (Iter 5b)
|
## Konvention: Qualifizierte Cross-Module-Verweise (Iter 5b)
|
||||||
|
|
||||||
|
|||||||
@@ -292,3 +292,60 @@ IR-Snapshots.
|
|||||||
**Stand:** Modulsystem ist Ende-zu-Ende geschlossen — Loader + Typcheck
|
**Stand:** Modulsystem ist Ende-zu-Ende geschlossen — Loader + Typcheck
|
||||||
+ Codegen + Build sehen den Workspace als kohärente Einheit. Multi-
|
+ Codegen + Build sehen den Workspace als kohärente Einheit. Multi-
|
||||||
Diagnose-Refactor und ggf. ADT-Cross-Module bleiben für später.
|
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 <entry> --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_<modul>_<def>` 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_<modul>_<idx>` statt `@.str_<modul>_<hint>_<idx>`).
|
||||||
|
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<Diagnostic>` ü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).
|
||||||
|
|||||||
Reference in New Issue
Block a user