Playground de Zero
Leer documentaciónEscribe, ejecuta y comparte fragmentos de código, sin instalaciones.
Prueba Zero en el navegador
Zero es el nuevo lenguaje de programación de sistemas de Vercel Labs, publicado por primera vez en mayo de 2026. Por fuera tiene aire de Rust — pub fun, let mut, ->, corchetes genéricos — pero su objetivo de diseño es distinto: todo el toolchain está pensado para que los agentes de IA puedan leerlo, editarlo y repararlo con la misma soltura que un humano. Los diagnósticos salen como JSON estructurado con códigos de error estables, el compilador puede emitir planes de reparación tipados y los binarios pesan menos de 10 KiB. El playground te da un editor limpio para trastear con el lenguaje sin instalar nada.
La idea más distintiva de Zero es la I/O basada en capabilities. No hay globales implícitos ni stdout ambiente — una función que quiera escribir en la terminal tiene que aceptar un parámetro World y llamar a world.out.write(...). Los errores se propagan con raises y check en lugar de excepciones o panics, y los valores opcionales usan .has / .value en vez de null. Pulsa Run y el editor compila tu código en el servidor y te muestra la salida. Stdin todavía no está conectado porque Zero v0.1.3 aún no ha publicado una API de stdin — usa std.args desde el panel de Args.
Por qué Zero es interesante
- I/O basada en capabilities: cada efecto secundario (stdout, ficheros, red) pasa por un parámetro
World, así la firma de una función te dice exactamente qué puede tocar. Sin globales ocultos, sin allocator implícito, sin asincronía sorpresa. - Toolchain pensado para agentes:
zeroemite diagnósticos JSON estables,zero fix --plan --jsongenera planes de reparación tipados y todos los subcomandos del CLI aceptan--jsonpara que los agentes redirijan la salida en lugar de parsearla con regex. - Binarios nativos diminutos, a menudo por debajo de 10 KiB. El compilador usa emitters directos para ELF, Mach-O, PE y WebAssembly, así que no arrastra una dependencia de LLVM.
- Sintaxis familiar, seguridad más afilada: parece Rust sobre el papel, pero sin panic-on-null, sin GC implícito y sin flujo de control oculto. Los errores son simplemente valores que propagas con
check.
Cosas que probar en el playground de Zero
- Imprime algo con
world.out.writey observa cómo la anotaciónraiseste obliga a manejar el camino de error concheck. Es todo el idioma de Zero para conseguir seguridad sin excepciones, en un ejemplo minúsculo. - Lee un argumento de línea de comandos con
std.args.get(N)y desempaqueta el opcional con.has/.value. Edita los valores en el panel de Args debajo del editor — se pasan a tu programa al pulsar Run, igual que un argv real. - Escribe una pequeña
funque devuelva unString, llámala desdemainy mira cómo los tipos se enhebran solos. Zero infiere los genéricos de forma más agresiva que Rust, así que la mayoría de llamadas no necesita anotaciones.
Preguntas frecuentes sobre Zero
¿Qué es el lenguaje de programación Zero?
--json y un modo separado zero fix --plan produce planes de reparación tipados que los agentes pueden aplicar directamente. En sintaxis se sitúa entre Rust y Zig. La idea principal es la I/O basada en capabilities a través de un parámetro World.¿Necesito instalar el compilador de Zero para usar este playground?
zero del lado del servidor en un contenedor aislado, así que tú escribes el código en el navegador y pulsas Run. La versión del compilador está fijada (actualmente v0.1.3) y la sandbox es la misma para cada ejecución. Si además quieres desarrollar en local, el proyecto Zero publica binarios precompilados en su página de releases de GitHub.¿Por qué el playground de Zero no tiene un cuadro de stdin?
World (world.out, world.err), más std.args para argumentos de línea de comandos y std.env para variables de entorno. Hasta que Vercel Labs publique una capability de stdin, usa el panel de Args debajo del editor — así es como le pasas entrada a tu programa.¿Qué es la capability World y por qué main recibe una?
World y llamar a métodos sobre él (world.out.write, world.err.write, etc.). Eso convierte la firma en una declaración honesta de los efectos secundarios — si una función no recibe World, demostrablemente no puede tocar el mundo exterior. main recibe uno porque el runtime es quien concede la capability inicial.¿Qué significan raises y check?
raises (opcionalmente listando los nombres de error concretos) y quien la llama escribe check expr para propagar el fallo hacia arriba. Piénsalo como el operador ? de Rust con tipos de error con nombre: los fallos son valores, no sorpresas de flujo de control.