Repository navigation
Doc conformance README
Copia di
conformance/README.md— torna a Documenti · Home
Questa directory è la specifica eseguibile usata per verificare qualunque implementazione di Triad: il seed in codice macchina, l'implementazione in Triad-Core e il futuro compilatore nativo.
cases/<nome>/
program.td # programma Triad, eseguito come script
args.txt # opzionale: un argomento per riga (ARGS)
expected.out # stdout atteso (byte esatti, fine riga LF)
expected.code # exit code atteso
Regole:
- il caso passa se stdout è byte per byte uguale a
expected.oute l'exit code è quello atteso; - stderr non è confrontato (i messaggi d'errore sono diagnostici);
- niente input interattivo, niente stdin: la suite deve essere deterministica;
- i golden sono dati statici committati: non richiedono Julia per essere verificati.
-
Triad-Full —
cases/(12 casi; oggi passa soloerrore, il resto di Triad-Full non è implementato): tutto il linguaggio diSPEC.md. -
Triad-Core —
core/cases/(37 casi, tutti verdi): solo il sottoinsieme normativo diSPEC-CORE.md, condiviso con Triad-Full; i primitivi di bootstrap non sono coperti da questa suite.
- Definitivo (dalla milestone M4):
triad --conformance DIR, implementato in Triad, eseguito dall'implementazione sotto test. - Temporaneo (fase 0):
run.mjs, runner Node (nessuna dipendenza da Julia):
node conformance/run.mjs # verifica (profilo Core, default)
node conformance/run.mjs --update # rigenera expected.out/expected.golden/expected.code
# profilo Full
node conformance/run.mjs --cases conformance/cases
node conformance/run.mjs --cases conformance/cases --updateOpzioni: --cases DIR (default conformance/core/cases), --update, --skip a,b
(default liste; la CI passa --skip liste, ma oggi liste passa anche lui).
Runtime usato, in ordine: TRIAD_SEED se impostato; su Linux/macOS l'interprete di
riferimento seed/dev/triad_core.cjs (il seed ELF è ancora E0); su Windows
bin/triad-native.exe, poi seed/windows-x86_64/seed.exe.
Golden: il runner legge expected.out e, se manca, expected.golden (copia identica).
Se mancano entrambi il caso fallisce con golden mancante: di solito il checkout non ha i
file (git pull), perché .gitignore esclude *.out con l'eccezione
!conformance/**/expected.out.
run.jl (Julia) è stato rimosso: la suite gira senza Julia né altri linguaggi.
| Caso | Copre |
|---|---|
assaggio |
struct, dispatch, logica, macro, contratti |
famiglia |
fatti/regole, ricorsione, liste Prolog, negazione per fallimento |
macro |
codice come dato, quote/eval, macro, gensym |
tour |
tutti i paradigmi in un programma unico |
hello_shebang |
shebang, ARGS, effetti dichiarati |
valori |
valori, aritmetica, stringhe, liste, comprehension |
dispatch |
struct, operatori-funzione, dispatch, errori come dati |
prolog |
regole ricorsive, liste stile Prolog, solve
|
destruttura |
(a, b) = ..., for (k, v) in ..., errore di arità |
garanzie_core |
contratti, budget, tracce, effetti |
macro_eval |
quote, sexpr, parse/unparse, macro |
errore |
errore non gestito: stdout vuoto, exit code 1 |
I golden Full sono stati generati dallo stage0 (Julia) il 2026-10-20 e sono congelati: da qui in poi sono loro il contratto.
Parte prima
Parte seconda 4. Le parole del linguaggio 5. Valori e tipi 6. Espressioni, operatori e variabili 7. Decidere e ripetere 8. Funzioni e ricorsione 9. Lambda, chiusure e visibilità dei nomi 10. Liste e dati strutturati 11. Stringhe, simboli e byte 12. Quando le cose vanno storte 13. Progetto: un piccolo interprete
Parte terza 14. Tipi, struct e multiple dispatch 15. Programmazione logica 16. Codice come dato e macro 17. Garanzie, costrutti Full e interfaccia
Parte quarta 18. Anatomia del progetto e contratto di conformità 19. L'interprete di riferimento 20. Il seed in codice macchina 21. Verso il self-hosting 22. Gli strumenti di sviluppo
Appendici
- Riferimento dei builtin Core
- Catalogo conformance Core
- Catalogo conformance Full
- Sorgenti degli esempi
- Sorgenti self-hosted
- Documenti di riferimento
- Indice analitico
Manuale di consultazione