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)
|
||||
|
||||
Alle AILang-Funktionen werden zu `@ail_<modul>_<def>` gemangelt — auch im
|
||||
Single-Modul-Fall. Globale Strings/Konstanten zu `@.str_<modul>_<idx>`
|
||||
bzw. `@ail_<modul>_<def>`. Eintrittspunkt ist eine `define i64 @main()`-
|
||||
Trampoline, die `@ail_<entry-modul>_main()` aufruft. `source_filename`
|
||||
existiert genau einmal pro Workspace und trägt den Eintrittsmodulnamen.
|
||||
Single-Modul-Fall. Konstanten ebenfalls (`@ail_<modul>_<const>`). Globale
|
||||
String-Literale tragen einen kurzen Hint zur Lesbarkeit:
|
||||
`@.str_<modul>_<hint>_<idx>` (z. B. `@.str_sum_fmt_int_0`). Eintrittspunkt
|
||||
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)
|
||||
|
||||
|
||||
@@ -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 <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