Clause
← Toda la documentación

El original en inglés ha cambiado desde que se hizo esta traducción, por lo que partes de ella pueden estar desactualizadas. Leer en inglés

Traducido del original en inglés · 1e3a39c8-dirty · 2026-10-26

Validación

Línea base actual

Últimas puertas registradas en el anfitrión de desarrollo Windows x64 (clang-cl y LLVM SDK 23.1.2, /MT, _ITERATOR_DEBUG_LEVEL=0); los pasos posteriores registran las suyas en .agents/00-finished.md:

ComprobaciónResultado
CTest Debug combinado desde cero (2026-10-14)299/300 aprobadas; el fallo es el conocido límite de tamaño de IR de codegen_measurements; codegen_resource_cli está desactivada
check-quality-all (misma ejecución)Limpio; Lizard CCN 10
Pruebas opcionales de auditoría con OTP (2026-10-14, fijado en d199a49a01a2, oráculo OTP 29.1.1)17/17
regenerate.py --corpus all --check (igual)19/19 corpus se reproducen

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, one unit per header
cmake --build build/debug --target check-quality-all  # whole tree

Linux

La misma puerta se ejecuta en Linux con el SDK de LLVM 23.1.2 para Linux fijado como compilador del anfitrión (CC/CXX de su bin/), la libstdc++ del sistema, Ninja y CMake 3.28 o posterior. Boost 1.90 y toml++ 3.4.0 provienen de paquetes instalados o se extraen en thirdparty/ (boost_1_90_0/, tomlplusplus-3.4.0/); solo Windows los descarga. El ld.lld del archivo de la versión enlaza ICU 70 (Ubuntu 22.04) y su lldb enlaza Python 3.14; en anfitriones sin ellos, linking_lto necesita ICU 70 en LD_LIBRARY_PATH, y linking_debugger usa GDB.

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

check-quality (Lizard, clang-tidy) se ejecuta solo en el anfitrión de desarrollo Windows; los demás anfitriones compilan y ejecutan las pruebas (una vez quedó limpio en Linux, véase el historial).

Otros destinos

Los destinos de 32 bits y ARM se comprueban sin un compilador construido para ellos (no existe SDK de LLVM para esos anfitriones):

Fixtures y procedencia

Diseño de las pruebas

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

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

Estado de plataformas y sanitizers

Benchmarks

Comparación manual de rendimiento con Erlang/OTP. Nunca forma parte de CTest, de la puerta de commit ni de check-quality, y solo ella necesita un Erlang/OTP en el anfitrión; los resultados son evidencia específica del anfitrión, no resultados de la puerta.

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

Historial

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

FechaHitoPruebasUnidades de calidadNotas
2026-09-19Fase VI del parser (macOS arm64, OTP 29.1 751f87b7, oráculo 29.0.5)46todas344/344 producciones atestiguadas; corpus de 10 archivos
2026-09-20Proyectos (macOS arm64)64todasDebug, solo compilador, ASan+UBSan
2026-09-28Migración de pruebas a flujos de trabajo de la CLI; reparación de la puerta en Windows75todasDesbordamiento de pila de parser_hardening corregido con una pila de 8 MiB; Lizard + clang-tidy limpios
2026-09-29Hito del compilador, steps 1–46103182Solo compilador 80, solo runtime 16, ASan del runtime 16
2026-10-01 – 10-03Plan de patrones/guards PG1–PG20104–131189–258Revisiones de la ABI 2–4; PG15a hizo los goldens independientes de OTP (auditorías opcionales, 131 → 118 pruebas); cerrado con 19 corpus, 67.634 valores, 1.969 resultados sembrados
2026-10-03Auditoría de fuentes de OTP125258Archivos copiados de OTP reemplazados por fragmentos locales; una comparación con ventanas de 60 tokens contra 4.150 archivos Erlang y 1.190 archivos C/C++ de OTP no encontró coincidencias salvo una tupla de enteros generada
2026-10-03Línea base del plan 11 step 1 (commit b1a471f, fijado en 21776803ecd1, Lizard 1.24.0, clang-tidy 22.1.8)125 (122 rápidas)258Completo 729 s en serie, 85 s con -j 16; 14/14 auditorías; 19/19 corpus; objetos ajenos O0/O2 inspeccionados para 7 destinos
2026-10-03Steps 2, 4: fixtures de programas, impresión de términos126–128265Seis goldens de programas de OTP; 9.542 goldens de ~w/display
2026-10-04Steps 8, 8I: ejecutor de ejecutables, heap clásico (phases B, C cerradas)138–144272–276Completo con -j 16 235–370 s
2026-10-04 – 10-05Steps 9–20: case, if, excepciones lanzadas, catch, try, trazas de pila, maybe (phase D cerrada), recursión, marcos y llamadas de cola146–158277–278Pruebas rápidas y pruebas afectadas en modo completo por paso; completo con -j 16 155/155 en 259 s en la phase D
2026-10-06Steps 21–28: comprehensions (phase E cerrada), raíces y recolección, límites de memoria y de términos (27A–27E), copias de grafos159–166278–281Completo con -j 12 105–275 s; el step 27 eliminó los límites de memoria predeterminados
2026-10-07Steps 29–35: records, native records (ABI 6), funs (ABI 7), clausuras, funs con nombre, llamadas dinámicas (ABI 8)167–177283–290Completo con -j 12 119–152 s
2026-10-09Step 63 Linux x86-64 (WSL2 Ubuntu 25.04, glibc 2.41, clang del SDK de LLVM 23.1.2, libstdc++ 14, GDB 16.2)235338CTest completo 235/235 en 161 s; Lizard y clang-tidy limpios en Linux (7 informes del analizador en cabeceras de Boost ignorados); puerta de Windows 235/235 con cabeceras comprobadas
2026-10-09Step 64 32 bits: Windows x86 (WoW64, clang-cl) y Linux i386 (chroot de Debian 13, clang 19)42 + 65 goldens—Pruebas del runtime/ABI 42/42 de forma nativa en ambos; goldens de cross.py 65/65 en ambos (omitidas las ejecuciones de integer_limit solo para 64 bits)
2026-10-09Step 65 Linux arm64 y armhf (sysroots de Debian 13, qemu-user 9.2)42 + 65 goldens—Pruebas del runtime/ABI 42/42 en cada uno; goldens 64/65 en cada uno (port_spawn enoent: carencia de posix_spawn en qemu), límite de ejecución 900 s
2026-10-10Step 67 ASan + UBSan + LeakSanitizer (Linux x86-64)235—Ningún informe de sanitizer; cuatro pruebas de rechazo inyectado del anfitrión fuera del alcance de ASan; CLAUSE_TEST_TIMEOUT_SCALE=10
2026-10-10Step 68 ThreadSanitizer (Linux x86-64)233—Una inversión del orden de bloqueos corregida (Executor::clear); después ningún informe en el CTest completo ni en 15 pruebas de concurrencia x5
2026-10-10Steps 65A–65C: behaviours, module_info/0,1, imports234–236 rápidas342–344Los goldens de lint y de ejecutables se reproducen con OTP 29.1.1
2026-10-11Steps 73A–73G parse transforms242/243 rápidas—Fallo conocido de codegen_resource_cli, desactivada desde entonces
2026-10-12Steps 62D1–62E directorio de compilación y cachés263/264todasCTest completo, fallo conocido de codegen_resource_cli; check-quality-all limpio
2026-10-13Steps 58U–58W caché de inferencia278/279todasCTest completo, fallo conocido de codegen_measurements; check-quality-all limpio
2026-10-14Step 41S prim_eval y la nueva ejecución de luerl (H3 cerrado)299/300todasVéase la línea base actual
2026-10-17Plan 20 OPTM.2 (Term de una palabra, términos persistentes en su sitio y recuperados) y OPTM.3 (accesores sin comprobaciones)330/332todasCTest completo: fallo conocido de codegen_measurements, y library_freshness (OTP del anfitrión) todavía espera los cuerpos de stub not_implemented que b0e62a38 reemplazó; check-quality-all limpio
2026-10-19Plan 21 LIB10F ThreadSanitizer (Linux x86-64): goldens de ETS y digraph, runtime_concurrency10—Ningún informe; ets_portions con un hilo de trabajo mostró una eliminación liberada en dos porciones, corregida al contabilizar un objeto liberado como uno recorrido

PG = paso del plan de patrones/guards; los registros de pasos del plan 11 están archivados en .agents/00-finished.md.