Playground de Zero
Ler documentaçãoEscreva, execute e compartilhe trechos de código — sem instalação.
Experimente Zero no navegador
Zero é a nova linguagem de programação de sistemas da Vercel Labs, lançada pela primeira vez em maio de 2026. Na superfície tem cara de Rust — pub fun, let mut, ->, colchetes genéricos — mas o objetivo de design é diferente: todo o toolchain foi pensado para ser lido, editado e consertado por agentes de IA com a mesma naturalidade que por humanos. Os diagnósticos saem como JSON estruturado com códigos de erro estáveis, o compilador consegue emitir planos de reparo tipados e os binários ficam abaixo de 10 KiB. O playground te dá um editor limpo para mexer na linguagem sem instalar nada.
A ideia mais distintiva de Zero é a I/O baseada em capabilities. Não existem globais implícitos nem stdout ambiente — uma função que quer escrever no terminal precisa aceitar um parâmetro World e chamar world.out.write(...). Os erros se propagam com raises e check, em vez de exceptions ou panics, e os valores opcionais usam .has / .value no lugar de null. Aperte Run e o editor compila seu código no servidor e mostra a saída. O stdin ainda não está ligado porque Zero v0.1.3 não publicou uma API de stdin — use std.args pelo painel de Args.
Por que Zero é interessante
- I/O baseada em capabilities: cada efeito colateral (stdout, arquivos, rede) passa por um parâmetro
World, então a assinatura da função já te diz no que ela pode mexer. Sem globais escondidos, sem allocator implícito, sem async surpresa. - Toolchain pensado para agentes:
zeroemite diagnósticos JSON estáveis,zero fix --plan --jsongera planos de reparo tipados e todo subcomando do CLI aceita--jsonpara que agentes encaminhem a saída em vez de parsear com regex. - Binários nativos minúsculos, frequentemente abaixo de 10 KiB. O compilador usa emitters diretos para ELF, Mach-O, PE e WebAssembly, então não arrasta dependência do LLVM.
- Sintaxe familiar, segurança mais afiada: parece Rust no papel, mas sem panic-on-null, sem GC implícito e sem fluxo de controle escondido. Erros são apenas valores que você propaga com
check.
Coisas para experimentar no playground de Zero
- Imprima algo com
world.out.writee veja como a anotaçãoraiseste força a tratar o caminho de erro comcheck. É todo o idioma de Zero para conseguir segurança sem exceções, em um exemplo minúsculo. - Leia um argumento de linha de comando com
std.args.get(N)e desempacote o opcional com.has/.value. Edite os valores no painel de Args abaixo do editor — eles são passados para o seu programa ao apertar Run, igual a um argv de verdade. - Escreva uma pequena
funque retorna umaString, chame-a a partir demaine veja os tipos se encaixarem sozinhos. Zero infere genéricos de forma mais agressiva que Rust, então a maioria das chamadas dispensa anotação.
Perguntas frequentes sobre Zero
O que é a linguagem de programação Zero?
--json e um modo separado zero fix --plan produz planos de reparo tipados que agentes aplicam direto. Em sintaxe fica entre Rust e Zig. A ideia principal é a I/O baseada em capabilities via um parâmetro World.Preciso instalar o compilador de Zero para usar este playground?
zero no servidor, dentro de um container isolado, então você escreve o código no navegador e aperta Run. A versão do compilador é fixada (atualmente v0.1.3) e a sandbox é a mesma a cada execução. Se você também quer desenvolver localmente, o projeto Zero publica binários pré-compilados na página de releases do GitHub.Por que o playground de Zero não tem um campo de stdin?
World (world.out, world.err), mais std.args para argumentos de linha de comando e std.env para variáveis de ambiente. Até a Vercel Labs lançar uma capability de stdin, use o painel de Args abaixo do editor — é assim que você passa entrada para o seu programa.O que é a capability World e por que main recebe uma?
World e chamar métodos nele (world.out.write, world.err.write etc.). Isso transforma a assinatura em uma declaração honesta dos efeitos colaterais — se uma função não recebe World, ela comprovadamente não consegue tocar no mundo externo. main recebe uma porque o runtime é quem concede a capability inicial.O que raises e check significam?
raises (opcionalmente listando os nomes de erro) e quem chama escreve check expr para propagar a falha. Pense nisso como o operador ? de Rust com tipos de erro nomeados: falhas são valores, não surpresas de controle de fluxo.