Documentazione Zero
Guida di riferimento a Zero concisa e ricca di esempi. Leggi il concetto, guarda il codice e poi mettilo in pratica in un percorso Coddy.
Getting Started
- Cos'è ZeroZero è un linguaggio sperimentale di programmazione di sistema di Vercel Labs, pensato perché gli agenti AI siano utenti di prima classe, non solo le persone. Ecco cos'è e perché esiste.
- Installare ZeroInstalla il compilatore e la toolchain di Zero con un solo comando curl. Ecco come installarlo, aggiungerlo al PATH e verificare l'installazione con `zero --version`.
- Hello, WorldIl tuo primo programma in Zero: cosa significa ogni pezzo del classico hello world, come eseguirlo con `zero run` e perché anche un programma di cinque righe usa già `World`, `raises` e `check`.
- CLI di ZeroUna panoramica dello strumento a riga di comando `zero`: i sottocomandi che userai ogni giorno, cosa produce ciascuno e come il flag `--json` trasforma ogni comando in un flusso di dati leggibile dagli agenti.
- Pacchetti ZeroCom'è organizzato un pacchetto Zero: il manifest `zero.json`, la cartella `src/` e il sistema dei target, che permette a un solo pacchetto di produrre eseguibili, librerie e test dallo stesso albero di sorgenti.
Language Basics
- Binding letCome funziona `let` in Zero: dichiarare binding locali, inferenza dei tipi e annotazioni esplicite, e perché Zero usa un'unica forma di binding invece di più parole chiave.
- Tipi primitiviI tipi integrati che Zero ti offre fin da subito: interi con e senza segno di ogni ampiezza, float, booleani, caratteri, stringhe e il tipo vuoto Void.
- FunzioniCome funzionano le funzioni in Zero: la parola chiave `fun`, i parametri tipizzati, i tipi di ritorno, il modificatore di visibilità `pub` e il ruolo di `raises` nella firma della funzione.
- If/elseCome funzionano `if` ed `else` in Zero: condizioni booleane, corpi dei rami, l'assenza di coercizione truthy e come le condizioni si affiancano a `match` per scelte più ricche.
- Cicli whileCome funzionano oggi i cicli `while` in Zero: la condizione, il corpo del ciclo, l'assenza di `for` e `do-while` nella prima versione del linguaggio e il legame tra cicli ed effetti espliciti.
Data Modeling
- Shape (struct)Le shape sono i tipi prodotto di Zero, simili alle struct. Ecco come dichiararle, costruire valori, leggere i campi e passarle alle funzioni, con esempi tratti dai campioni ufficiali.
- GenericsCome funzionano i generics in Zero: dichiarare parametri di tipo su funzioni e shape, chiamare funzioni generiche e usare gli alias di tipo per trasformare parametrizzazioni lunghe in nomi puliti.
- EnumCome funziona `enum` in Zero: dichiarare un insieme fisso di varianti con nome, confrontare i valori e il confine tra `enum` (semplici etichette) e `choice` (unioni etichettate).
- Choice e matchCome `choice` dichiara un'unione etichettata in Zero e come `match` gestisce in modo esaustivo le sue varianti: la versione di Zero dei tipi somma e del pattern matching.
Effects & Errors
- Capability WorldZero non ha uno stdout globale, né un filesystem sempre disponibile, né una rete implicita. Tutto ciò che tocca il mondo esterno passa da una capability `World` consegnata a `main`. Ecco perché e come.
- Raises e checkLe funzioni di Zero dichiarano i loro modi di fallire con `raises` e chi le chiama ne prende atto con `check`. Ecco come funziona il sistema, perché non esistono eccezioni silenziose e come interagisce con la capability `World`.
Agent Tooling
- Diagnostica JSONIl compilatore di Zero emette diagnostica JSON leggibile dalle macchine, con codici di errore stabili e piani di correzione strutturati. Ecco il formato, perché esiste e come lo usa un agente.
- Design agent-firstZero nasce attorno a una sola domanda: come dovrebbe essere un linguaggio di programmazione se gli agenti AI sono utenti di prima classe fin dal primo giorno? Ecco i principi e i compromessi.