Playground Zero
Scrivi, esegui e condividi snippet di codice, senza configurare nulla.
Prova Zero nel browser
Zero è il nuovo linguaggio di programmazione di sistema di Vercel Labs, rilasciato per la prima volta a maggio 2026. In superficie somiglia a Rust, con pub fun, let mut, -> e parentesi per i generics, ma l'obiettivo del progetto è insolito: ogni parte della toolchain è pensata per essere letta, modificata e riparata dagli agenti AI con la stessa facilità con cui lo fanno le persone. La diagnostica arriva come JSON strutturato con codici di errore stabili, il compilatore può generare piani di correzione tipizzati e i binari pesano meno di 10 KiB. Il playground ti offre un editor pulito per esplorare il linguaggio senza installare nulla.
L'idea più caratteristica di Zero è l'I/O basato sulle capability. Non ci sono variabili globali implicite né uno stdout sempre disponibile: una funzione che vuole scrivere nel terminale deve ricevere un parametro World e chiamare world.out.write(...). Gli errori si propagano con raises e check invece che con eccezioni o panic, e i valori opzionali usano .has / .value al posto di null. Premi Esegui e l'editor compila il sorgente sul server e mostra l'output. Lo stdin non è ancora collegato perché Zero v0.1.3 non ha ancora un'API per lo stdin: usa invece std.args tramite il pannello Args.
Perché Zero è interessante
- I/O basato sulle capability: ogni effetto collaterale (stdout, file, rete) passa per un parametro
World, quindi la firma di una funzione ti dice cosa può toccare. Niente variabili globali nascoste, nessun allocatore implicito, niente async a sorpresa. - Toolchain pensata prima di tutto per gli agenti:
zerogenera diagnostica JSON stabile,zero fix --plan --jsonproduce piani di correzione tipizzati e ogni sottocomando della CLI accetta--json, così gli agenti possono passarsi l'output invece di analizzarlo con le regex. - Binari nativi minuscoli, spesso sotto i 10 KiB. Il compilatore usa generatori diretti per ELF, Mach-O, PE e WebAssembly, quindi non c'è nessuna dipendenza da LLVM da portarsi dietro.
- Sintassi familiare, sicurezza più rigorosa: sulla pagina somiglia a Rust, ma niente panic su null, nessun GC implicito e nessun flusso di controllo nascosto. Gli errori sono semplici valori che propaghi con
check.
Cosa provare nel playground Zero
- Stampa qualcosa con
world.out.writee guarda come l'annotazioneraisesti obbliga a gestire il percorso di errore concheck. È l'intero idioma di Zero per la sicurezza senza eccezioni, in un esempio minuscolo. - Leggi un argomento da riga di comando con
std.args.get(N)ed estrai il valore opzionale con.has/.value. Modifica i valori nel pannello Args sotto l'editor: vengono passati al programma quando premi Esegui, esattamente come un vero argv. - Scrivi una piccola
funche restituisce unaString, chiamala damaine guarda i tipi propagarsi. Zero deduce i generics in modo più aggressivo di Rust, quindi la maggior parte delle chiamate non ha bisogno di alcuna annotazione.
Domande frequenti su Zero
Cos'è il linguaggio di programmazione Zero?
--json e una modalità separata zero fix --plan produce piani di correzione tipizzati che gli agenti possono applicare direttamente. Dal punto di vista della sintassi si colloca tra Rust e Zig. L'idea principale è l'I/O basato sulle capability tramite un parametro World.Devo installare il compilatore Zero per usare questo playground?
zero sul server in un container isolato, quindi scrivi il codice nel browser e premi Esegui. La versione del compilatore è fissata (attualmente v0.1.3) e la sandbox è la stessa per ogni esecuzione. Se vuoi sviluppare anche in locale, il progetto Zero pubblica binari precompilati nella pagina delle release su GitHub.Perché il playground Zero non ha una casella di input per lo stdin?
World (world.out, world.err), più std.args per gli argomenti da riga di comando e std.env per le variabili d'ambiente. Finché Vercel Labs non rilascerà una capability per lo stdin, usa il pannello Args sotto l'editor: è così che passi input al tuo programma.Cos'è la capability World e perché main ne riceve una?
World e chiamarne i metodi (world.out.write, world.err.write e così via). In questo modo la firma diventa una dichiarazione onesta degli effetti collaterali: se una funzione non riceve World, è dimostrabile che non può toccare il mondo esterno. main ne riceve una perché è il runtime a concedere la capability iniziale.Cosa significano raises e check?
raises (elencando facoltativamente i nomi degli errori specifici), e chi la chiama scrive check expr per propagare il fallimento verso l'alto nello stack. Pensalo come l'operatore ? di Rust con tipi di errore con nome: i fallimenti sono valori, non sorprese nel flusso di controllo.Strumenti utili per Zero
Strumenti gratuiti nel browser che si abbinano bene al playground Zero, tutti parte di Coddy.