Clause
← Toute la documentation

Traduit de l'original anglais · 06042fa · 2026-10-09 · Lire en anglais

Validation

Référence actuelle

Plan 11 step 1, 2026-10-03, commit b1a471f, Windows x64 : clang-cl 23.1.2, SDK LLVM 23.1.2 (/MT, _ITERATOR_DEBUG_LEVEL=0), Lizard 1.24.0, clang-tidy 22.1.8, version OTP épinglée 21776803ecd1 avec OTP oracle 29.1.1 / ERTS 17.1.

VérificationRésultat
CTest Debug combiné à neuf125/125, aucun test ignoré (729 s en série ; 85 s avec -j 16)
CTest en mode rapide (debug-fast)122 tests, environ 60 s
check-qualityRéussi ; Lizard CCN 10, clang-tidy sur 258 unités de production
Tests d'audit OTP optionnels14/14
regenerate.py --corpus all --check19/19 corpus reproduits
Objets étrangers O0/O27 cibles inspectées (Linux x86/x64/ARM/AArch64, Windows x86/x64, Apple Silicon)

Exécuter la porte de validation

Depuis un shell développeur Visual Studio x64 avec C:\Program Files\LLVM\bin dans le PATH (la sélection automatique du SDK réutilise 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 + dependents
cmake --build build/debug --target check-quality-all  # whole tree

Fixtures et provenance

Conception des tests

Le comportement est testé via la vraie CLI, les objets émis, des consommateurs natifs liés et les références OTP. Des tests unitaires ciblés ne subsistent que là où le code source ne peut pas atteindre l'état voulu, chacun avec son objectif indiqué dans le test :

Les cas liés aux capacités du système de fichiers (liens, alias de casse) signalent des tests ignorés au cas par cas ; ils ne remplacent jamais la réussite d'un test complet.

État des plateformes et des sanitizers

Historique

Condensé à partir des anciens comptes rendus par étape (originaux dans l'historique Git jusqu'au commit 2777c98). Sauf mention contraire : Windows x64, LLVM 23.1.2, version épinglée 21776803ecd1, OTP oracle 29.1.1 / ERTS 17.1. Les nombres de tests correspondent à des passes CTest complètes sans aucun test ignoré.

DateJalonTestsUnités de qualitéNotes
2026-09-19Analyseur syntaxique phase VI (macOS arm64, OTP 29.1 751f87b7, oracle 29.0.5)46toutes344/344 productions observées ; corpus de 10 fichiers
2026-09-20Projets (macOS arm64)64toutesDebug, compilateur seul, ASan+UBSan
2026-09-28Migration des tests vers des flux CLI74/75—Référence 78/93 ; dépassement de pile de parser_hardening corrigé plus tard avec une pile de 8 Mio
2026-09-28Réparation de la porte Windows75toutesLizard + clang-tidy sans avertissement
2026-09-29Jalon du compilateur, steps 1–46103182Compilateur seul 80, runtime seul 16, ASan runtime 16
2026-10-01PG1 matrice sémantique et preuves104—Empreintes des sources épinglées
2026-10-01PG2 canal d'échec108—ABI rév. 2
2026-10-01PG3 atomes109189ABI rév. 3
2026-10-01PG4 liaisons à portée11119126 cas de légalité
2026-10-02PG5 sémantique des motifs11319692 modules de légalité
2026-10-02PG6 correspondance immédiate11419934 appels
2026-10-02PG7 guards immédiats1192051 689 appels
2026-10-02PG8 flot de contrôle des guards1202072 075 appels
2026-10-02PG9 clauses ordonnées1212081 020 appels
2026-10-02PG10 correspondances dans le corps1222091 666 appels
2026-10-02PG11 tas stable et racines123213ABI rév. 4
2026-10-02PG12 tuples/listes/chaînes1252214 801 appels
2026-10-02PG13 entiers arbitraires12723116 065 appels
2026-10-02PG14 flottants12923814 436 appels
2026-10-02PG15 maps1312448 010 appels
2026-10-02PG15a références sans OTP11824414 corpus, 49 959 valeurs ; audits optionnels
2026-10-02PG16 bitstrings1202538 826 appels
2026-10-03PG17 records sous forme de tuples1212571 025 résultats, 29 cas sémantiques
2026-10-03PG18 catalogue des guards12225781 lignes, 5 033 résultats
2026-10-03PG19 faits de liaison123258822 résultats, 976 vérifications de dominance
2026-10-03PG20 clôture12425819 corpus, 67 634 valeurs, 1 969 résultats semés
2026-10-03Audit des sources OTP125258Fichiers OTP copiés remplacés par des fragments locaux
2026-10-03Plan 11 step 1, référence125258Voir la référence actuelle
2026-10-03Plan 11 step 2, fixtures de programmes126258Six références OTP ; mode rapide 123 tests ; complet -j 16 83 s
2026-10-03Plan 11 step 4, affichage des termes128 rapide2659 542 références ~w/display ; 154 appels d'affichage compilés dans toutes les politiques ; clang-tidy exécuté avec un seul job (les exécutions concurrentes faisaient planter l'outil sur des unités inchangées)
2026-10-04Plan 11 step 8, exécuteur d'exécutables (phase B close)138 (135 rapide)272Cas demo, exits sous huit combinaisons politique/pilote ; complet -j 16 235 s
2026-10-04Plan 11 step 8I, tas classique (phase C close)144 (140 rapide)276Complet -j 16 370 s : 143/144, codegen_dependency a expiré à 120 s sous charge et a réussi seul en 29 s ; Lizard-all 0 avertissement ; tidy-all réussi avec un job après une sortie silencieuse de l'outil à deux jobs
2026-10-04Plan 11 step 9, case et begin146 (142 rapide)114 modifiéesRapide 142/142 ; tests concernés 7/7 en mode complet ; Lizard 0 avertissement ; tidy réussi avec un job après une sortie silencieuse à deux jobs
2026-10-05Plan 11 step 10, if147 (143 rapide)114 modifiéesRapide 143/143 ; tests concernés 8/8 en mode complet ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 11, levées d'exceptions dans le source148 (144 rapide)124 modifiéesRapide 144/144 ; tests concernés 22/22 en mode complet ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 12, catch Expr149 (145 rapide)277Rapide 145/145 ; tests concernés 25/25 en mode complet ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 13, try ... of ... catch150 (146 rapide)189 modifiéesRapide 146/146 ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 14, try ... after153 (149 rapide)2 modifiéesRapide 149/149 ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 15, traces de pile et raise/3154 (150 rapide)129 modifiéesRapide 150/150 ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 16, maybe (phase D close)155 (151 rapide)277Rapide 151/151 ; complet -j 16 155/155 en 259 s ; Lizard-all 0 avertissement ; tidy-all réussi
2026-10-05Plan 11 step 18, graphes d'appels récursifs156 (152 rapide)91 modifiéesRapide 152/152 ; tests concernés 13/13 en mode complet ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 19, cadres explicites et appels terminaux157 (153 rapide)278CTest rapide et complet réussis (avec le cas du step 20 : 154/154, 158/158) ; configuration clang-cl ; Lizard 0 avertissement ; tidy réussi
2026-10-05Plan 11 step 20, récursion profonde dans le corps et budget de pile158 (154 rapide)278Rapide 154/154 ; complet 158/158 ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 21, compréhensions de listes159 (155 rapide)modifiéesRapide 155/155 ; tests concernés en mode complet ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 22, compréhensions de binaries et de maps (phase E close)160 (156 rapide)toutesRapide 156/156 ; complet -j 12 160/160 en 275 s ; Lizard-all 0 avertissement ; tidy-all réussi après correction de quatre signalements dans du nouveau code
2026-10-06Plan 11 step 23, inventaire des racines, SafePoint, registres vivants160 (156 rapide)50 modifiéesRapide 156/156 ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 26, collecte depuis le code généré161 (157 rapide)63 modifiéesRapide 157/157 ; complet -j 12 161/161 en 107 s ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 27, épuisement du tas après collecte162 (158 rapide)50 modifiéesRapide 158/158 ; complet -j 12 162/162 en 108 s ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 27, correction : pas de plafond mémoire par défaut162 (158 rapide)50 modifiéesComplet -j 12 158/162 en 120 s, 4 codegen_failure_* corrigés en attendant out_of_memory, puis 10/10 concernés ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 27, suite : pas de plafond sur les binaries ni sur le nombre de processus, --max-atoms164 (160 rapide)281Rapide 160/160 ; complet -j 12 164/164 en 105 s ; Lizard 0 avertissement ; tidy-all réussi
2026-10-06Plan 11 step 28, copies de graphes entre tas, tampons hors tas partagés166 (162 rapide)71 modifiéesRapide 162/162 ; complet -j 12 166/166 en 130 s ; Lizard 0 avertissement ; tidy réussi
2026-10-07Plan 11 step 29, mises à jour de records167 (163 rapide)38 modifiéesRapide 163/163 ; Lizard 0 avertissement ; tidy réussi ; le corpus des records se reproduit sous OTP
2026-10-07Plan 11 step 30, record_info/2168 (164 rapide)42 modifiéesRapide 164/164 ; complet -j 12 168/168 en 119 s ; Lizard 0 avertissement ; tidy réussi
2026-10-07Plan 11 step 31B, cellules de native records et CLAUSE_record_v1 (ABI 6)169 (165 rapide)283 modifiéesRapide 165/165 ; complet -j 12 169/169 en 122 s ; Lizard 0 avertissement ; tidy réussi après deux corrections
2026-10-07Plan 11 step 31C, native records locaux170 (166 rapide)285 modifiéesRapide 166/166 ; complet -j 12 170/170 en 146 s ; Lizard et tidy réussis après corrections de complexité
2026-10-07Plan 11 step 31D, native records qualifiés et importés171 (167 rapide)124 modifiéesRapide 167/167 ; complet -j 12 171/171 en 129 s ; Lizard 0 avertissement ; tidy réussi après trois corrections
2026-10-07Plan 11 step 31E, native records anonymes (step 31 clos)172 (168 rapide)33 modifiéesRapide 168/168 ; complet -j 12 172/172 en 124 s ; Lizard 0 avertissement ; tidy réussi après une correction
2026-10-07Plan 11 step 32, valeurs fonctionnelles fun F/A, fun M:F/A (ABI 7)173 (169 rapide)289 modifiéesRapide 169/169 ; complet -j 12 173/173 en 122 s ; Lizard et tidy réussis après corrections de complexité
2026-10-07Plan 11 step 33, fermetures avec variables capturées175 (171 rapide)134 modifiéesRapide 171/171 ; complet -j 12 175/175 en 126 s ; Lizard et tidy réussis après corrections de complexité
2026-10-07Plan 11 step 34, funs nommées176 (172 rapide)132 modifiéesRapide 172/172 ; complet -j 12 176/176 en 152 s ; Lizard 0 avertissement ; tidy réussi
2026-10-07Plan 11 step 35, appels dynamiques M:F(Args), apply/2,3, fun M:F/A au runtime (ABI 8)177 (173 rapide)290 (configuration de l'analyseur modifiée)Rapide 173/173 ; complet -j 12 177/177 en 142 s ; Lizard 0 avertissement et tidy réussi après une correction de complexité et trois corrections tidy
2026-10-06Plan 11 step 27E, limite ERTS des grands entiers, error:system_limit165 (161 rapide)157 modifiéesRapide 161/161 ; complet -j 12 165/165 en 130 s ; Lizard 0 avertissement ; tidy réussi ; 21 références d'exécutables se reproduisent sous OTP
2026-10-06Plan 11 step 27D, pas de plafond sur la taille des maps ni sur le travail des clés164 (160 rapide)13 modifiéesRapide 160/160 ; complet -j 12 164/164 en 115 s ; après une correction tidy dans bit_order, 35 tests concernés réussissent ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 27C, limite d'arité des tuples 16 777 215164 (160 rapide)51 modifiéesRapide 160/160 ; complet -j 12 164/164 en 121 s ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 27B, pas de plafond sur la longueur des listes ni sur le travail de comparaison164 (160 rapide)4 modifiéesRapide 160/160 ; complet -j 12 164/164 en 125 s ; Lizard 0 avertissement ; tidy réussi
2026-10-06Plan 11 step 27A, limite mémoire globale du runtime et --max-heap/stack/memory164 (160 rapide)49 modifiéesRapide 160/160 ; complet -j 12 164/164 en 118 s ; après une correction tidy dans ProcessStack::grow, 42 tests concernés réussissent ; Lizard 0 avertissement ; tidy réussi

PG = étape du plan motifs/guards (archivé dans .agents/00-finished.md).