Clause
← Toda la documentación

Traducido del original en inglés · 06042fa · 2026-10-09 · Leer en inglés

Validación

Línea base actual

Plan 11 step 1, 2026-10-03, commit b1a471f, Windows x64: clang-cl 23.1.2, LLVM SDK 23.1.2 (/MT, _ITERATOR_DEBUG_LEVEL=0), Lizard 1.24.0, clang-tidy 22.1.8, OTP fijado en 21776803ecd1 con OTP 29.1.1 / ERTS 17.1 como oráculo.

ComprobaciónResultado
CTest Debug combinado desde cero125/125, cero omisiones (729 s en serie; 85 s con -j 16)
CTest en modo rápido (debug-fast)122 pruebas, unos 60 s
check-qualityAprobado; Lizard CCN 10, clang-tidy sobre 258 unidades de producción
Pruebas opcionales de auditoría con OTP14/14
regenerate.py --corpus all --check19/19 corpus se reproducen
Objetos ajenos O0/O27 objetivos inspeccionados (Linux x86/x64/ARM/AArch64, Windows x86/x64, Apple Silicon)

Ejecución de la puerta de calidad

Desde un shell de desarrollador x64 de Visual Studio con C:\Program Files\LLVM\bin en PATH (la selección automática del SDK reutiliza 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 y procedencia

Diseño de las pruebas

El comportamiento se prueba mediante la CLI real, los objetos emitidos, los consumidores nativos enlazados y los goldens de OTP. Las pruebas unitarias focalizadas se mantienen solo donde el código fuente no puede alcanzar el estado, cada una con su propósito indicado en la prueba:

Los casos que dependen de capacidades del sistema de archivos (enlaces, alias por mayúsculas/minúsculas) informan de omisiones por caso; nunca sustituyen a la aprobación de una prueba completa.

Estado de plataformas y sanitizers

Historial

Condensado a partir de los antiguos registros por paso (originales en el historial de Git hasta el commit 2777c98). Salvo indicación en contrario: Windows x64, LLVM 23.1.2, versión fijada 21776803ecd1, OTP 29.1.1 / ERTS 17.1 como oráculo. Los recuentos de pruebas son ejecuciones completas de CTest aprobadas con cero omisiones.

FechaHitoPruebasUnidades de calidadNotas
2026-09-19Analizador sintáctico, fase VI (macOS arm64, OTP 29.1 751f87b7, oráculo 29.0.5)46todas344/344 producciones verificadas; corpus de 10 archivos
2026-09-20Proyectos (macOS arm64)64todasDebug, solo compilador, ASan+UBSan
2026-09-28Migración de pruebas a flujos de trabajo con la CLI74/75—Línea base 78/93; desbordamiento de pila en parser_hardening corregido después con una pila de 8 MiB
2026-09-28Reparación de la puerta en Windows75todasLizard + clang-tidy sin avisos
2026-09-29Hito del compilador, pasos 1–46103182Solo compilador 80, solo runtime 16, ASan del runtime 16
2026-10-01PG1 matriz semántica y evidencia104—Hashes del código fuente fijados
2026-10-01PG2 canal de fallos108—ABI rev 2
2026-10-01PG3 átomos109189ABI rev 3
2026-10-01PG4 vinculaciones con ámbito11119126 casos de legalidad
2026-10-02PG5 semántica de patrones11319692 módulos de legalidad
2026-10-02PG6 coincidencia de inmediatos11419934 llamadas
2026-10-02PG7 guards de inmediatos1192051,689 llamadas
2026-10-02PG8 flujo de control de guards1202072,075 llamadas
2026-10-02PG9 cláusulas ordenadas1212081,020 llamadas
2026-10-02PG10 coincidencias en el cuerpo1222091,666 llamadas
2026-10-02PG11 heap estable y raíces123213ABI rev 4
2026-10-02PG12 tuplas/listas/cadenas1252214,801 llamadas
2026-10-02PG13 enteros arbitrarios12723116,065 llamadas
2026-10-02PG14 flotantes12923814,436 llamadas
2026-10-02PG15 maps1312448,010 llamadas
2026-10-02PG15a goldens sin OTP11824414 corpus, 49,959 valores; auditorías opcionales
2026-10-02PG16 bitstrings1202538,826 llamadas
2026-10-03PG17 records como tuplas1212571,025 resultados, 29 casos semánticos
2026-10-03PG18 catálogo de guards12225781 filas, 5,033 resultados
2026-10-03PG19 hechos de vinculación123258822 resultados, 976 comprobaciones de dominancia
2026-10-03PG20 cierre12425819 corpus, 67,634 valores, 1,969 resultados sembrados
2026-10-03Auditoría del código fuente de OTP125258Archivos copiados de OTP sustituidos por fragmentos locales
2026-10-03Plan 11 step 1, línea base125258Véase la línea base actual
2026-10-03Plan 11 step 2, fixtures de programas126258Seis goldens de OTP; modo rápido 123 pruebas; completo -j 16 83 s
2026-10-03Plan 11 step 4, impresión de términos128 rápido2659,542 goldens de ~w/display; 154 llamadas display compiladas en todas las políticas; clang-tidy ejecutado con un solo trabajo (las ejecuciones concurrentes hacían fallar la herramienta en unidades sin cambios)
2026-10-04Plan 11 step 8, ejecutor de ejecutables (phase B cerrada)138 (135 rápido)272Casos demo, exits bajo ocho combinaciones de política/driver; completo -j 16 235 s
2026-10-04Plan 11 step 8I, heap clásico (phase C cerrada)144 (140 rápido)276Completo -j 16 370 s: 143/144, codegen_dependency agotó el tiempo a los 120 s bajo carga y pasó por sí solo en 29 s; Lizard-all 0 avisos; tidy-all pasó con un trabajo tras una salida silenciosa de la herramienta con dos trabajos
2026-10-04Plan 11 step 9, case y begin146 (142 rápido)114 modificadasRápido 142/142; pruebas afectadas 7/7 en modo completo; Lizard 0 avisos; tidy pasó con un trabajo tras una salida silenciosa con dos trabajos
2026-10-05Plan 11 step 10, if147 (143 rápido)114 modificadasRápido 143/143; pruebas afectadas 8/8 en modo completo; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 11, excepciones lanzadas desde el código fuente148 (144 rápido)124 modificadasRápido 144/144; pruebas afectadas 22/22 en modo completo; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 12, catch Expr149 (145 rápido)277Rápido 145/145; pruebas afectadas 25/25 en modo completo; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 13, try ... of ... catch150 (146 rápido)189 modificadasRápido 146/146; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 14, try ... after153 (149 rápido)2 modificadasRápido 149/149; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 15, trazas de pila y raise/3154 (150 rápido)129 modificadasRápido 150/150; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 16, maybe (phase D cerrada)155 (151 rápido)277Rápido 151/151; completo -j 16 155/155 en 259 s; Lizard-all 0 avisos; tidy-all pasó
2026-10-05Plan 11 step 18, grafos de llamadas recursivas156 (152 rápido)91 modificadasRápido 152/152; pruebas afectadas 13/13 en modo completo; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 19, marcos explícitos y llamadas de cola157 (153 rápido)278CTest rápido y completo aprobados (con el caso del step 20: 154/154, 158/158); configuración con clang-cl; Lizard 0 avisos; tidy pasó
2026-10-05Plan 11 step 20, recursión profunda en el cuerpo y presupuesto de pila158 (154 rápido)278Rápido 154/154; completo 158/158; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 21, comprehensions de listas159 (155 rápido)modificadasRápido 155/155; pruebas afectadas en modo completo; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 22, comprehensions de binaries y maps (phase E cerrada)160 (156 rápido)todasRápido 156/156; completo -j 12 160/160 en 275 s; Lizard-all 0 avisos; tidy-all pasó tras corregir cuatro hallazgos en código nuevo
2026-10-06Plan 11 step 23, inventario de raíces, SafePoint, registros vivos160 (156 rápido)50 modificadasRápido 156/156; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 26, recolección desde código generado161 (157 rápido)63 modificadasRápido 157/157; completo -j 12 161/161 en 107 s; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 27, agotamiento del heap tras la recolección162 (158 rápido)50 modificadasRápido 158/158; completo -j 12 162/162 en 108 s; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 27, corrección: sin límites de memoria predeterminados162 (158 rápido)50 modificadasCompleto -j 12 158/162 en 120 s, 4 codegen_failure_* corregidas esperando out_of_memory, después 10/10 afectadas; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 27, seguimiento: sin límites de binaries ni de número de procesos, --max-atoms164 (160 rápido)281Rápido 160/160; completo -j 12 164/164 en 105 s; Lizard 0 avisos; tidy-all pasó
2026-10-06Plan 11 step 28, copias de grafos entre heaps, búferes compartidos fuera del heap166 (162 rápido)71 modificadasRápido 162/162; completo -j 12 166/166 en 130 s; Lizard 0 avisos; tidy pasó
2026-10-07Plan 11 step 29, actualizaciones de records167 (163 rápido)38 modificadasRápido 163/163; Lizard 0 avisos; tidy pasó; el corpus de records se reproduce con OTP
2026-10-07Plan 11 step 30, record_info/2168 (164 rápido)42 modificadasRápido 164/164; completo -j 12 168/168 en 119 s; Lizard 0 avisos; tidy pasó
2026-10-07Plan 11 step 31B, celdas de native record y CLAUSE_record_v1 (ABI 6)169 (165 rápido)283 modificadasRápido 165/165; completo -j 12 169/169 en 122 s; Lizard 0 avisos; tidy pasó tras dos correcciones
2026-10-07Plan 11 step 31C, native records locales170 (166 rápido)285 modificadasRápido 166/166; completo -j 12 170/170 en 146 s; Lizard y tidy pasaron tras correcciones de complejidad
2026-10-07Plan 11 step 31D, native records cualificados e importados171 (167 rápido)124 modificadasRápido 167/167; completo -j 12 171/171 en 129 s; Lizard 0 avisos; tidy pasó tras tres correcciones
2026-10-07Plan 11 step 31E, native records anónimos (step 31 cerrado)172 (168 rápido)33 modificadasRápido 168/168; completo -j 12 172/172 en 124 s; Lizard 0 avisos; tidy pasó tras una corrección
2026-10-07Plan 11 step 32, valores de función fun F/A, fun M:F/A (ABI 7)173 (169 rápido)289 modificadasRápido 169/169; completo -j 12 173/173 en 122 s; Lizard y tidy pasaron tras correcciones de complejidad
2026-10-07Plan 11 step 33, clausuras con variables capturadas175 (171 rápido)134 modificadasRápido 171/171; completo -j 12 175/175 en 126 s; Lizard y tidy pasaron tras correcciones de complejidad
2026-10-07Plan 11 step 34, funs con nombre176 (172 rápido)132 modificadasRápido 172/172; completo -j 12 176/176 en 152 s; Lizard 0 avisos; tidy pasó
2026-10-07Plan 11 step 35, llamadas dinámicas M:F(Args), apply/2,3, fun M:F/A en tiempo de ejecución (ABI 8)177 (173 rápido)290 (configuración del analizador modificada)Rápido 173/173; completo -j 12 177/177 en 142 s; Lizard 0 avisos y tidy pasó tras una corrección de complejidad y tres de tidy
2026-10-06Plan 11 step 27E, límite de enteros grandes de ERTS, error:system_limit165 (161 rápido)157 modificadasRápido 161/161; completo -j 12 165/165 en 130 s; Lizard 0 avisos; tidy pasó; 21 goldens de ejecutables se reproducen con OTP
2026-10-06Plan 11 step 27D, sin límites de tamaño de map ni de trabajo con claves164 (160 rápido)13 modificadasRápido 160/160; completo -j 12 164/164 en 115 s; tras una corrección de tidy en bit_order, pasan 35 pruebas afectadas; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 27C, límite de aridad de tupla 16,777,215164 (160 rápido)51 modificadasRápido 160/160; completo -j 12 164/164 en 121 s; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 27B, sin límites de longitud de lista ni de trabajo de comparación164 (160 rápido)4 modificadasRápido 160/160; completo -j 12 164/164 en 125 s; Lizard 0 avisos; tidy pasó
2026-10-06Plan 11 step 27A, límite de memoria de todo el runtime y --max-heap/stack/memory164 (160 rápido)49 modificadasRápido 160/160; completo -j 12 164/164 en 118 s; tras una corrección de tidy en ProcessStack::grow, pasan 42 pruebas afectadas; Lizard 0 avisos; tidy pasó

PG = paso del plan de patrones/guards (archivado en .agents/00-finished.md).