Clause
← Toda a documentação

Traduzido do original em inglês · 06042fa · 2026-10-09 · Ler em inglês

Validação

Base atual

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, pin do OTP 21776803ecd1 com o oráculo OTP 29.1.1 / ERTS 17.1.

VerificaçãoResultado
CTest Debug combinado a partir do zero125/125, zero testes saltados (729 s em série; 85 s com -j 16)
CTest em modo rápido (debug-fast)122 testes, cerca de 60 s
check-qualityPassa; Lizard CCN 10, clang-tidy sobre 258 unidades de produção
Testes opcionais de auditoria ao OTP14/14
regenerate.py --corpus all --check19/19 corpora reproduzidos
Objetos O0/O2 para outros alvos7 alvos inspecionados (Linux x86/x64/ARM/AArch64, Windows x86/x64, Apple Silicon)

Executar o gate

A partir de uma shell de programador do Visual Studio x64 com C:\Program Files\LLVM\bin no PATH (a seleção automática do 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 e proveniência

Conceção dos testes

O comportamento é testado através da CLI real, dos objetos emitidos, de consumidores nativos ligados e dos goldens do OTP. Os testes unitários dedicados permanecem apenas onde o código-fonte não consegue alcançar o estado, cada um com o seu propósito indicado no teste:

Os casos de capacidades do sistema de ficheiros (ligações, aliases por maiúsculas/minúsculas) relatam testes saltados por caso; nunca substituem a aprovação de um teste completo.

Estado por plataforma e sanitizers

Histórico

Condensado a partir dos antigos registos por passo (originais no histórico do Git até ao commit 2777c98). Salvo indicação em contrário: Windows x64, LLVM 23.1.2, pin 21776803ecd1, oráculo OTP 29.1.1 / ERTS 17.1. Os números de testes são execuções completas do CTest aprovadas, com zero testes saltados.

DataMarcoTestesUnidades de qualidadeNotas
2026-09-19Phase VI do analisador sintático (macOS arm64, OTP 29.1 751f87b7, oráculo 29.0.5)46todas344/344 produções testemunhadas; corpus de 10 ficheiros
2026-09-20Projetos (macOS arm64)64todasDebug, apenas compilador, ASan+UBSan
2026-09-28Migração dos testes para fluxos de trabalho da CLI74/75—Base 78/93; stack overflow em parser_hardening corrigido depois com uma pilha de 8 MiB
2026-09-28Reparação do gate em Windows75todasLizard + clang-tidy sem avisos
2026-09-29Steps 1–46 do marco do compilador103182Apenas compilador 80, apenas runtime 16, ASan do runtime 16
2026-10-01PG1 matriz semântica e evidências104—Hashes do código-fonte fixados
2026-10-01PG2 canal de falhas108—ABI rev 2
2026-10-01PG3 átomos109189ABI rev 3
2026-10-01PG4 vinculações com âmbito11119126 casos de legalidade
2026-10-02PG5 semântica de padrões11319692 módulos de legalidade
2026-10-02PG6 correspondência de imediatos11419934 chamadas
2026-10-02PG7 guards de imediatos1192051 689 chamadas
2026-10-02PG8 fluxo de controlo dos guards1202072 075 chamadas
2026-10-02PG9 cláusulas ordenadas1212081 020 chamadas
2026-10-02PG10 correspondências no corpo1222091 666 chamadas
2026-10-02PG11 heap estável e raízes123213ABI rev 4
2026-10-02PG12 tuplos/listas/strings1252214 801 chamadas
2026-10-02PG13 inteiros arbitrários12723116 065 chamadas
2026-10-02PG14 floats12923814 436 chamadas
2026-10-02PG15 maps1312448 010 chamadas
2026-10-02PG15a goldens sem OTP11824414 corpora, 49 959 valores; auditorias opcionais
2026-10-02PG16 bitstrings1202538 826 chamadas
2026-10-03PG17 records em tuplo1212571 025 resultados, 29 casos semânticos
2026-10-03PG18 catálogo de guards12225781 linhas, 5 033 resultados
2026-10-03PG19 factos de vinculação123258822 resultados, 976 verificações de dominância
2026-10-03PG20 encerramento12425819 corpora, 67 634 valores, 1 969 resultados semeados
2026-10-03Auditoria do código-fonte do OTP125258Ficheiros copiados do OTP substituídos por fragmentos locais
2026-10-03Base do plan 11 step 1125258Ver a base atual
2026-10-03Plan 11 step 2, fixtures de programas126258Seis goldens do OTP; modo rápido 123 testes; completo -j 16 83 s
2026-10-03Plan 11 step 4, impressão de termos128 rápido2659 542 goldens de ~w/display; 154 chamadas display compiladas em todas as políticas; clang-tidy executado com um job (execuções concorrentes fizeram a ferramenta falhar em unidades inalteradas)
2026-10-04Plan 11 step 8, executor de executáveis (phase B fechada)138 (135 rápido)272Casos demo, exits sob oito combinações de política/driver; completo -j 16 235 s
2026-10-04Plan 11 step 8I, heap clássico (phase C fechada)144 (140 rápido)276Completo -j 16 370 s: 143/144, codegen_dependency excedeu o tempo de 120 s sob carga e passou sozinho em 29 s; Lizard-all 0 avisos; tidy-all passou com um job após uma saída silenciosa da ferramenta com dois jobs
2026-10-04Plan 11 step 9, case e begin146 (142 rápido)114 alteradasRápido 142/142; testes afetados 7/7 em modo completo; Lizard 0 avisos; tidy passou com um job após uma saída silenciosa com dois jobs
2026-10-05Plan 11 step 10, if147 (143 rápido)114 alteradasRápido 143/143; testes afetados 8/8 em modo completo; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 11, lançamentos no código-fonte148 (144 rápido)124 alteradasRápido 144/144; testes afetados 22/22 em modo completo; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 12, catch Expr149 (145 rápido)277Rápido 145/145; testes afetados 25/25 em modo completo; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 13, try ... of ... catch150 (146 rápido)189 alteradasRápido 146/146; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 14, try ... after153 (149 rápido)2 alteradasRápido 149/149; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 15, stack traces e raise/3154 (150 rápido)129 alteradasRápido 150/150; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 16, maybe (phase D fechada)155 (151 rápido)277Rápido 151/151; completo -j 16 155/155 em 259 s; Lizard-all 0 avisos; tidy-all passou
2026-10-05Plan 11 step 18, grafos de chamadas recursivos156 (152 rápido)91 alteradasRápido 152/152; testes afetados 13/13 em modo completo; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 19, frames explícitos e chamadas de cauda157 (153 rápido)278CTest rápido e completo passam (com o caso do step 20: 154/154, 158/158); configuração com clang-cl; Lizard 0 avisos; tidy passou
2026-10-05Plan 11 step 20, recursão profunda no corpo e orçamento da pilha158 (154 rápido)278Rápido 154/154; completo 158/158; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 21, list comprehensions159 (155 rápido)alteradasRápido 155/155; testes afetados em modo completo; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 22, binary e map comprehensions (phase E fechada)160 (156 rápido)todasRápido 156/156; completo -j 12 160/160 em 275 s; Lizard-all 0 avisos; tidy-all passou após corrigir quatro problemas em código novo
2026-10-06Plan 11 step 23, inventário de raízes, SafePoint, registos vivos160 (156 rápido)50 alteradasRápido 156/156; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 26, recolha a partir do código gerado161 (157 rápido)63 alteradasRápido 157/157; completo -j 12 161/161 em 107 s; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 27, esgotamento do heap após a recolha162 (158 rápido)50 alteradasRápido 158/158; completo -j 12 162/162 em 108 s; Lizard 0 avisos; tidy passou
2026-10-06Correção do plan 11 step 27: sem limites de memória predefinidos162 (158 rápido)50 alteradasCompleto -j 12 158/162 em 120 s, 4 codegen_failure_* corrigidos passando a esperar out_of_memory, depois 10/10 afetados; Lizard 0 avisos; tidy passou
2026-10-06Seguimento do plan 11 step 27: sem limites de binaries nem do número de processos, --max-atoms164 (160 rápido)281Rápido 160/160; completo -j 12 164/164 em 105 s; Lizard 0 avisos; tidy-all passou
2026-10-06Plan 11 step 28, cópias de grafos entre heaps, buffers partilhados fora do heap166 (162 rápido)71 alteradasRápido 162/162; completo -j 12 166/166 em 130 s; Lizard 0 avisos; tidy passou
2026-10-07Plan 11 step 29, atualizações de records167 (163 rápido)38 alteradasRápido 163/163; Lizard 0 avisos; tidy passou; o corpus de records reproduz-se com o OTP
2026-10-07Plan 11 step 30, record_info/2168 (164 rápido)42 alteradasRápido 164/164; completo -j 12 168/168 em 119 s; Lizard 0 avisos; tidy passou
2026-10-07Plan 11 step 31B, células de native records e CLAUSE_record_v1 (ABI 6)169 (165 rápido)283 alteradasRápido 165/165; completo -j 12 169/169 em 122 s; Lizard 0 avisos; tidy passou após duas correções
2026-10-07Plan 11 step 31C, native records locais170 (166 rápido)285 alteradasRápido 166/166; completo -j 12 170/170 em 146 s; Lizard e tidy passaram após correções de complexidade
2026-10-07Plan 11 step 31D, native records qualificados e importados171 (167 rápido)124 alteradasRápido 167/167; completo -j 12 171/171 em 129 s; Lizard 0 avisos; tidy passou após três correções
2026-10-07Plan 11 step 31E, native records anónimos (step 31 fechado)172 (168 rápido)33 alteradasRápido 168/168; completo -j 12 172/172 em 124 s; Lizard 0 avisos; tidy passou após uma correção
2026-10-07Plan 11 step 32, valores de função fun F/A, fun M:F/A (ABI 7)173 (169 rápido)289 alteradasRápido 169/169; completo -j 12 173/173 em 122 s; Lizard e tidy passaram após correções de complexidade
2026-10-07Plan 11 step 33, closures com variáveis capturadas175 (171 rápido)134 alteradasRápido 171/171; completo -j 12 175/175 em 126 s; Lizard e tidy passaram após correções de complexidade
2026-10-07Plan 11 step 34, funs com nome176 (172 rápido)132 alteradasRápido 172/172; completo -j 12 176/176 em 152 s; Lizard 0 avisos; tidy passou
2026-10-07Plan 11 step 35, chamadas dinâmicas M:F(Args), apply/2,3, fun M:F/A em runtime (ABI 8)177 (173 rápido)290 (configuração do analisador alterada)Rápido 173/173; completo -j 12 177/177 em 142 s; Lizard 0 avisos e tidy passou após uma correção de complexidade e três do tidy
2026-10-06Plan 11 step 27E, limite de inteiros grandes do ERTS, error:system_limit165 (161 rápido)157 alteradasRápido 161/161; completo -j 12 165/165 em 130 s; Lizard 0 avisos; tidy passou; 21 goldens de executáveis reproduzem-se com o OTP
2026-10-06Plan 11 step 27D, sem limites de tamanho de map nem de trabalho sobre chaves164 (160 rápido)13 alteradasRápido 160/160; completo -j 12 164/164 em 115 s; após uma correção do tidy em bit_order, passam 35 testes afetados; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 27C, limite de aridade de tuplos 16 777 215164 (160 rápido)51 alteradasRápido 160/160; completo -j 12 164/164 em 121 s; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 27B, sem limites de comprimento de listas nem de trabalho de comparação164 (160 rápido)4 alteradasRápido 160/160; completo -j 12 164/164 em 125 s; Lizard 0 avisos; tidy passou
2026-10-06Plan 11 step 27A, limite de memória global do runtime e --max-heap/stack/memory164 (160 rápido)49 alteradasRápido 160/160; completo -j 12 164/164 em 118 s; após uma correção do tidy em ProcessStack::grow, passam 42 testes afetados; Lizard 0 avisos; tidy passou

PG = passo do plano de padrões/guards (arquivado em .agents/00-finished.md).