Clause
← Gesamte Dokumentation

Das englische Original wurde seit dieser Übersetzung geändert, daher können Teile davon veraltet sein. Auf Englisch lesen

Übersetzt aus dem englischen Original · 1e3a39c8-dirty · 2026-10-26

Validierung

Aktuelle Basislinie

Zuletzt erfasste Prüfstufen auf dem Windows-x64-Entwicklungshost (clang-cl und LLVM-SDK 23.1.2, /MT, _ITERATOR_DEBUG_LEVEL=0); spätere Schritte erfassen ihre in .agents/00-finished.md:

PrüfungErgebnis
Frischer kombinierter Debug-CTest (2026-10-14)299/300 bestanden; der Fehlschlag ist die bekannte IR-Größengrenze von codegen_measurements; codegen_resource_cli ist deaktiviert
check-quality-all (derselbe Lauf)Sauber; Lizard CCN 10
Optionale OTP-Audit-Tests (2026-10-14, Pin d199a49a01a2, Orakel OTP 29.1.1)17/17
regenerate.py --corpus all --check (ebenso)19/19 Korpora reproduzierbar

Ausführen der Prüfstufe

Aus einer x64-Entwickler-Shell von Visual Studio mit C:\Program Files\LLVM\bin im PATH (die automatische SDK-Auswahl verwendet thirdparty/ wieder):

cmake --preset debug --fresh -DBUILD_TESTING=ON -G Ninja -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
cmake --build build/debug
ctest --preset debug-fast                  # during development
ctest --preset debug -j 16                 # full mode, at feature completion
cmake --build build/debug --target check-quality      # changed files, one unit per header
cmake --build build/debug --target check-quality-all  # whole tree

Linux

Dieselbe Prüfstufe läuft unter Linux mit dem festgelegten Linux-SDK von LLVM 23.1.2 als Host-Compiler (CC/CXX aus seinem bin/), der libstdc++ des Systems, Ninja und CMake 3.28 oder neuer. Boost 1.90 und toml++ 3.4.0 stammen aus installierten Paketen oder werden nach thirdparty/ entpackt (boost_1_90_0/, tomlplusplus-3.4.0/); nur Windows lädt sie herunter. Das ld.lld des Release-Archivs linkt ICU 70 (Ubuntu 22.04) und sein lldb linkt Python 3.14; auf Hosts ohne diese braucht linking_lto ICU 70 in LD_LIBRARY_PATH, und linking_debugger verwendet GDB.

cmake --preset debug --fresh -G Ninja -DBUILD_TESTING=ON
cmake --build build/debug
ctest --preset debug -j 16

check-quality (Lizard, clang-tidy) läuft nur auf dem Windows-Entwicklungshost; andere Hosts bauen und führen die Tests aus (unter Linux war es einmal sauber, siehe Verlauf).

Andere Ziele

32-Bit- und ARM-Ziele werden ohne einen für sie gebauten Compiler geprüft (für diese Hosts gibt es kein LLVM-SDK):

Fixtures und Herkunft

Testdesign

Verhalten wird über die echte CLI, erzeugte Objekte, gelinkte native Konsumenten und OTP-Goldens getestet. Gezielte Unit-Tests bleiben nur dort, wo Quelltext den Zustand nicht erreichen kann, jeweils mit im Test angegebenem Zweck:

Fälle zu Dateisystemfähigkeiten (Links, Groß-/Kleinschreibungs-Aliase) melden Auslassungen pro Fall; sie stehen nie für das Bestehen eines ganzen Tests.

Plattform- und Sanitizer-Status

Benchmarks

Manueller Leistungsvergleich mit Erlang/OTP. Er ist nie Teil von CTest, der Commit-Prüfstufe oder check-quality, und nur er braucht ein Erlang/OTP auf dem Host; Ergebnisse sind hostspezifische Belege, keine Ergebnisse der Prüfstufe.

make-benchmark.bat                         # Windows; set JOBS=N to cap parallel builds
make-benchmark.bat --repeat 9 --only bench_gc,bench_msg
make-benchmark.bat --cpus all                 # unpinned set; default --cpus performance
make benchmark BENCH_ARGS="--baseline HEAD~5"   # other hosts

Verlauf

Verdichtet aus den früheren schrittweisen Aufzeichnungen (Originale in der Git-Historie bis Commit 2777c98). Sofern nicht anders angegeben: Windows x64, LLVM 23.1.2, Pin 21776803ecd1, Orakel OTP 29.1.1 / ERTS 17.1. Testzahlen sind vollständige CTest-Durchläufe ohne Auslassungen.

DatumMeilensteinTestsQualitätseinheitenAnmerkungen
2026-09-19Parser phase VI (macOS arm64, OTP 29.1 751f87b7, Orakel 29.0.5)46vollständig344/344 Produktionen belegt; Korpus aus 10 Dateien
2026-09-20Projekte (macOS arm64)64vollständigDebug, Nur-Compiler, ASan+UBSan
2026-09-28Testmigration auf CLI-Abläufe; Reparatur der Windows-Prüfstufe75vollständigStack-Überlauf in parser_hardening mit 8-MiB-Stack behoben; Lizard + clang-tidy sauber
2026-09-29Compiler-Meilenstein steps 1–46103182Nur-Compiler 80, Nur-Runtime 16, Runtime-ASan 16
2026-10-01 – 10-03Muster-/Guard-Plan PG1–PG20104–131189–258ABI-Revisionen 2–4; PG15a machte Goldens OTP-frei (Audits optional, 131 → 118 Tests); abgeschlossen mit 19 Korpora, 67.634 Werten, 1.969 vorgegebenen Ergebnissen
2026-10-03OTP-Quelltext-Audit125258Kopierte OTP-Dateien durch lokale Fragmente ersetzt; ein Vergleich mit einem 60-Token-Fenster gegen 4.150 Erlang- und 1.190 C/C++-Dateien von OTP fand außer einem erzeugten Ganzzahltupel keine Überschneidung
2026-10-03Basislinie Plan 11 step 1 (Commit b1a471f, Pin 21776803ecd1, Lizard 1.24.0, clang-tidy 22.1.8)125 (122 schnell)258Vollständig 729 s seriell, 85 s mit -j 16; 14/14 Audits; 19/19 Korpora; fremde O0/O2-Objekte für 7 Ziele untersucht
2026-10-03Steps 2, 4: Programm-Fixtures, Termausgabe126–128265Sechs OTP-Programm-Goldens; 9.542 Goldens für ~w/display
2026-10-04Steps 8, 8I: Runner für ausführbare Dateien, klassischer Heap (phases B, C abgeschlossen)138–144272–276Vollständig -j 16 235–370 s
2026-10-04 – 10-05Steps 9–20: case, if, Auslösen, catch, try, Stacktraces, maybe (phase D abgeschlossen), Rekursion, Frames und Endaufrufe146–158277–278Schnelle und betroffene Tests im Vollmodus pro Schritt; vollständig -j 16 155/155 in 259 s bei phase D
2026-10-06Steps 21–28: Comprehensions (phase E abgeschlossen), Wurzeln und Bereinigung, Speicher- und Termgrenzen (27A–27E), Graphkopien159–166278–281Vollständig -j 12 105–275 s; step 27 entfernte standardmäßige Speicherobergrenzen
2026-10-07Steps 29–35: Records, native Records (ABI 6), Funs (ABI 7), Closures, benannte Funs, dynamische Aufrufe (ABI 8)167–177283–290Vollständig -j 12 119–152 s
2026-10-09Step 63 Linux x86-64 (WSL2 Ubuntu 25.04, glibc 2.41, LLVM 23.1.2 SDK clang, libstdc++ 14, GDB 16.2)235338Vollständiges CTest 235/235 in 161 s; Lizard und clang-tidy unter Linux sauber (7 Analysator-Berichte in Boost-Headern ignoriert); Windows-Prüfstufe 235/235 mit geprüften Headern
2026-10-09Step 64 32-Bit: Windows x86 (WoW64, clang-cl) und Linux i386 (Debian-13-chroot, clang 19)42 + 65 Goldens—Runtime-/ABI-Tests 42/42 nativ auf beiden; cross.py-Goldens 65/65 auf beiden (nur für 64 Bit gedachte Läufe von integer_limit übersprungen)
2026-10-09Step 65 Linux arm64 und armhf (Debian-13-Sysroots, qemu-user 9.2)42 + 65 Goldens—Runtime-/ABI-Tests je 42/42; Goldens je 64/65 (port_spawn enoent: Lücke in posix_spawn von qemu), Laufgrenze 900 s
2026-10-10Step 67 ASan + UBSan + LeakSanitizer (Linux x86-64)235—Kein Sanitizer-Bericht; vier Tests mit eingespeister Verweigerung durch den Host außerhalb des Bereichs von ASan; CLAUSE_TEST_TIMEOUT_SCALE=10
2026-10-10Step 68 ThreadSanitizer (Linux x86-64)233—Eine Umkehrung der Sperrreihenfolge korrigiert (Executor::clear); danach kein Bericht in vollständigem CTest und 15 Nebenläufigkeitstests x5
2026-10-10Steps 65A–65C: Behaviours, module_info/0,1, Importe234–236 schnell342–344Lint- und Executable-Goldens reproduzierbar unter OTP 29.1.1
2026-10-11Steps 73A–73G Parse-Transformationen242/243 schnell—Bekannter Fehlschlag von codegen_resource_cli, inzwischen deaktiviert
2026-10-12Steps 62D1–62E Build-Verzeichnis und Caches263/264alleVollständiges CTest, bekannter Fehlschlag von codegen_resource_cli; check-quality-all sauber
2026-10-13Steps 58U–58W Inferenz-Cache278/279alleVollständiges CTest, bekannter Fehlschlag von codegen_measurements; check-quality-all sauber
2026-10-14Step 41S prim_eval und der erneute luerl-Lauf (H3 abgeschlossen)299/300alleSiehe aktuelle Basislinie
2026-10-17Plan 20 OPTM.2 (Ein-Wort-Term, persistente Terme an Ort und Stelle und freigegeben) und OPTM.3 (ungeprüfte Zugriffsfunktionen)330/332alleVollständiger CTest: bekannter Fehler in codegen_measurements, und library_freshness (Host-OTP) erwartet noch die durch b0e62a38 ersetzten not_implemented-Stub-Rümpfe; check-quality-all sauber
2026-10-19Plan 21 LIB10F ThreadSanitizer (Linux x86-64): ETS- und digraph-Goldens, runtime_concurrency10—Kein Bericht; ets_portions auf einem Worker zeigte eine Löschung, die in zwei Portionen freigegeben wurde; behoben, indem ein freigegebenes Objekt wie ein durchlaufenes berechnet wird

PG = Schritt des Muster-/Guard-Plans; die Aufzeichnungen der Schritte von plan 11 sind in .agents/00-finished.md archiviert.