Clause
← All dokumentation

Det engelska originalet har ändrats sedan översättningen gjordes, så delar av den kan vara inaktuella. Läs på engelska

Översatt från det engelska originalet · 1e3a39c8-dirty · 2026-10-26

Validering

Nuvarande baslinje

Senast registrerade grindresultat på Windows x64-utvecklingsvärden (clang-cl och LLVM SDK 23.1.2, /MT, _ITERATOR_DEBUG_LEVEL=0); senare steg registrerar sina i .agents/00-finished.md:

KontrollResultat
Färsk kombinerad Debug-CTest (2026-10-14)299/300 godkända; felet är den kända IR-storleksgränsen i codegen_measurements; codegen_resource_cli är inaktiverat
check-quality-all (samma körning)Rent; Lizard CCN 10
Valfria OTP-granskningstester (2026-10-14, pin d199a49a01a2, orakel OTP 29.1.1)17/17
regenerate.py --corpus all --check (samma)19/19 korpusar återskapas

Köra grinden

Från ett x64-utvecklarskal för Visual Studio med C:\Program Files\LLVM\bin i PATH (automatiskt val av SDK återanvänder thirdparty/):

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

Samma grind körs på Linux med det fastlåsta LLVM 23.1.2 SDK för Linux som värdkompilator (CC/CXX från dess bin/), systemets libstdc++, Ninja och CMake 3.28 eller nyare. Boost 1.90 och toml++ 3.4.0 kommer från installerade paket eller extraheras till thirdparty/ (boost_1_90_0/, tomlplusplus-3.4.0/); endast Windows laddar ned dem. Versionsarkivets ld.lld länkar ICU 70 (Ubuntu 22.04) och dess lldb länkar Python 3.14; på värdar utan dem behöver linking_lto ICU 70 i LD_LIBRARY_PATH, och linking_debugger använder GDB.

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

check-quality (Lizard, clang-tidy) körs endast på Windows-värden för utveckling; andra värdar bygger och kör testerna (den var ren på Linux en gång, se historik).

Andra mål

32-bitars- och ARM-mål kontrolleras utan en kompilator byggd för dem (inget LLVM SDK finns för de värdarna):

Fixturer och ursprung

Testdesign

Beteende testas via den riktiga CLI:n, emitterade objekt, länkade native-konsumenter och goldens från OTP. Fokuserade enhetstester finns kvar endast där källkod inte kan nå tillståndet, var och ett med sitt syfte angivet i testet:

Fall som beror på filsystemets förmågor (länkar, skiftlägesalias) rapporterar överhoppningar per fall; de ersätter aldrig ett godkänt helt test.

Plattforms- och sanitizer-status

Prestandamätningar

Manuell prestandajämförelse med Erlang/OTP. Den är aldrig en del av CTest, commit-grinden eller check-quality, och endast den behöver ett Erlang/OTP på värden; resultaten är värdspecifika belägg, inte grindresultat.

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

Historik

Sammanfattat från de tidigare posterna per steg (original i Git-historiken fram till commit 2777c98). Om inget annat anges: Windows x64, LLVM 23.1.2, pin 21776803ecd1, orakel OTP 29.1.1 / ERTS 17.1. Testantal är fullständiga CTest-körningar utan överhoppningar.

DatumMilstolpeTesterKvalitetsenheterAnteckningar
2026-09-19Parserfas VI (macOS arm64, OTP 29.1 751f87b7, orakel 29.0.5)46alla344/344 produktioner belagda; korpus med 10 filer
2026-09-20Projekt (macOS arm64)64allaDebug, enbart kompilator, ASan+UBSan
2026-09-28Testmigrering till CLI-arbetsflöden; reparation av Windows-grinden75allaStackspill i parser_hardening åtgärdat med 8 MiB stack; Lizard + clang-tidy rena
2026-09-29Kompilatormilstolpe steg 1–46103182Enbart kompilator 80, enbart runtime 16, runtime-ASan 16
2026-10-01 – 10-03Mönster-/guard-planen PG1–PG20104–131189–258ABI-revisioner 2–4; PG15a gjorde goldens OTP-fria (granskningar valfria, 131 → 118 tester); stängd vid 19 korpusar, 67 634 värden, 1 969 seedade utfall
2026-10-03Granskning av OTP-källkod125258Kopierade OTP-filer ersatta med lokala fragment; jämförelse med fönster om 60 token mot 4 150 Erlang-filer och 1 190 C/C++-filer från OTP hittade ingen överlappning utöver en genererad heltalstupel
2026-10-03Plan 11 step 1 baslinje (commit b1a471f, pin 21776803ecd1, Lizard 1.24.0, clang-tidy 22.1.8)125 (122 snabba)258Fullt 729 s seriellt, 85 s -j 16; 14/14 granskningar; 19/19 korpusar; främmande O0/O2-objekt inspekterade för 7 mål
2026-10-03Steps 2, 4: programfixturer, termutskrift126–128265Sex OTP-programgoldens; 9 542 ~w/display-goldens
2026-10-04Steps 8, 8I: körare för körbara filer, klassisk heap (phases B, C stängda)138–144272–276Fullt -j 16 235–370 s
2026-10-04 – 10-05Steps 9–20: case, if, raises, catch, try, stackspår, maybe (phase D stängd), rekursion, ramar och svansanrop146–158277–278Snabba och berörda tester i fullt läge per steg; fullt -j 16 155/155 på 259 s vid phase D
2026-10-06Steps 21–28: comprehensions (phase E stängd), rötter och skräpsamling, minnes- och termgränser (27A–27E), grafkopior159–166278–281Fullt -j 12 105–275 s; step 27 tog bort minnestak som standard
2026-10-07Steps 29–35: records, native records (ABI 6), funs (ABI 7), closures, namngivna funs, dynamiska anrop (ABI 8)167–177283–290Fullt -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)235338Fullständig CTest 235/235 på 161 s; Lizard och clang-tidy rena på Linux (7 analysatorrapporter i Boost-headers ignorerade); Windows-grinden 235/235 med headers kontrollerade
2026-10-09Step 64 32-bitars: Windows x86 (WoW64, clang-cl) och Linux i386 (Debian 13 chroot, clang 19)42 + 65 goldens—Runtime-/ABI-tester 42/42 inbyggt på båda; cross.py-goldens 65/65 på båda (körningar av integer_limit endast för 64 bitar överhoppade)
2026-10-09Step 65 Linux arm64 och armhf (Debian 13 sysroots, qemu-user 9.2)42 + 65 goldens—Runtime-/ABI-tester 42/42 vardera; goldens 64/65 vardera (port_spawn enoent: lucka i qemu:s posix_spawn), körgräns 900 s
2026-10-10Step 67 ASan + UBSan + LeakSanitizer (Linux x86-64)235—Ingen sanitizer-rapport; fyra tester med injicerad vägran från värden utanför ASan:s räckvidd; CLAUSE_TEST_TIMEOUT_SCALE=10
2026-10-10Step 68 ThreadSanitizer (Linux x86-64)233—En inverterad låsordning åtgärdad (Executor::clear); därefter ingen rapport i fullständig CTest och 15 samtidighetstester x5
2026-10-10Steps 65A–65C: behaviours, module_info/0,1, importer234–236 snabba342–344Lint- och körbara goldens återskapas under OTP 29.1.1
2026-10-11Steps 73A–73G parse transforms242/243 snabba—Känt fel i codegen_resource_cli, sedan dess inaktiverat
2026-10-12Steps 62D1–62E byggkatalog och cachar263/264allaFullständig CTest, känt fel i codegen_resource_cli; check-quality-all rent
2026-10-13Steps 58U–58W inferenscache278/279allaFullständig CTest, känt fel i codegen_measurements; check-quality-all rent
2026-10-14Step 41S prim_eval och den nya luerl-körningen (H3 stängd)299/300allaSe nuvarande baslinje
2026-10-17Plan 20 OPTM.2 (enords-Term, persistenta termer på plats och återvunna) och OPTM.3 (okontrollerade åtkomstfunktioner)330/332allFullständig CTest: känt fel i codegen_measurements, och library_freshness (värdens OTP) väntar sig ännu de not_implemented-stubbkroppar som b0e62a38 ersatte; check-quality-all utan anmärkningar
2026-10-19Plan 21 LIB10F ThreadSanitizer (Linux x86-64): ETS- och digraph-goldens, runtime_concurrency10—Ingen rapport; ets_portions på en arbetstråd visade att en borttagning frigjorde i två portioner, åtgärdat genom att räkna kostnaden för ett frigjort objekt som för ett genomgånget

PG = steg i mönster-/guard-planen; posterna för plan 11-stegen är arkiverade i .agents/00-finished.md.