Phase 5: Editor und inkrementellen Compiler implementieren und archivieren

This commit is contained in:
2026-09-06 17:58:26 +02:00
parent df85a4b7b2
commit 9c85349a4d
36 changed files with 2993 additions and 247 deletions

View File

@@ -244,7 +244,9 @@ Nutzer — verworfen: erfordert Rust-Toolchain beim Anwender.
Definitionen. Echte lokale Duplikate werden diagnostiziert. SHARED
bleibt modullokal. COMMON-Variablen desselben Blocks und derselben vollständigen
Variablenidentität teilen einen Slot; Elementtyp, Rang und bekannte Grenzen
müssen kompatibel sein. Ein inkrementeller IDE-Cache ist weiterhin geplant.
müssen kompatibel sein. Der IDE-Cache speichert Parsing und unverknüpfte
Modulprodukte im vorhandenen Projektcompiler; der Vollcompile nutzt dieselben
Schritte mit einem leeren Cache. Details stehen in [ide-bedienung.md](ide-bedienung.md#übersetzung-und-revisionsbindung).
- Keine Optimierungspasses. Erlaubt sind nur Gratis-Optimierungen im
Codegen (Konstantenfaltung im Ausdruck, Peephole beim Emit).
- Budget als Test verankern (Phase 2): Benchmark-Projekt (~50k Zeilen)
@@ -628,3 +630,24 @@ die Entscheidungen sind Lückenfüller, keine Setzungen gegen das Vorbild.
vorhandenem Array prüft es Elementtyp und die ausgewerteten Grenzen, ohne
Werte oder Handle zu ersetzen (Konflikt: Fehler 13). Statisch erkennbare
COMMON-Typ-/Grenzenkonflikte werden bereits beim Linken diagnostiziert.
### Inkrementeller Compile (Phase 5, Change 03)
Messung vom 2026-09-06 auf macOS/aarch64, Apple M5 Max. Aufruf:
`cargo bench -p tb-vm --bench compile`; Release mit opt-level=3, LTO und
codegen-units=1. Derselbe Generator erzeugt das Referenz-Einzelmodul mit
508 Zeilen und das Projekt mit 20 Modulen / 49.760 Zeilen. Vollcompile und
Cacheänderung schließen die Projektauflösung und den Link ein. Cacheänderungen
ändern einen privaten Prozedurrumpf; sieben Läufe liefern den Median und prüfen
die Zahl tatsächlich neu übersetzter Module. Die Grenzwerte werden nur im
expliziten Release-Benchmark geprüft, nicht in normalen Debug-Tests.
| Referenz | Vollcompile | Cacheänderung (Median) | Neu / wiederverwendet | Budget |
| --- | ---: | ---: | ---: | ---: |
| Einzelmodul, 508 Zeilen | 1,21 ms | 0,74 ms | 1 / 0 | < 50 ms: erfüllt |
| Projekt, 49.760 Zeilen | 103 ms | 22,10 ms | 1 / 19 | < 1.000 ms: erfüllt |
Der Vollcompile des Einzelmoduls ist wie im bestehenden Harness der beste
von zehn Läufen; das Projekt wird einmal vollständig gemessen. Der Benchmark
zählt 335.421 verknüpfte Instruktionen. Diese Werte sind eine lokale Messung,
keine hardwareunabhängige Zeitgarantie.