Zero Playground
Dokumentation lesenCode-Snippets schreiben, ausführen und teilen — keine Einrichtung nötig.
Zero im Browser ausprobieren
Zero ist die neue Systems Programming Language von Vercel Labs, erstmals veröffentlicht im Mai 2026. Auf den ersten Blick wirkt sie Rust-ähnlich — pub fun, let mut, ->, generische Klammern — aber das Designziel ist ungewöhnlich: Die gesamte Toolchain ist darauf ausgelegt, von KI-Agents genauso bequem gelesen, bearbeitet und repariert zu werden wie von Menschen. Diagnostics kommen als strukturiertes JSON mit stabilen Error Codes raus, der Compiler kann typisierte Repair Plans erzeugen und Binaries bleiben unter 10 KiB. Der Playground gibt dir einen sauberen Editor, um an der Sprache herumzubasteln, ohne irgendetwas zu installieren.
Die markanteste Idee in Zero ist capability-basierte I/O. Es gibt keine impliziten Globals und kein ambient stdout — eine Funktion, die ins Terminal schreiben will, muss einen World-Parameter entgegennehmen und world.out.write(...) aufrufen. Fehler werden mit raises und check weitergereicht statt mit Exceptions oder Panics, und optionale Werte verwenden .has / .value statt null. Drück auf Run, der Editor kompiliert deinen Code serverseitig und zeigt die Ausgabe. Stdin ist noch nicht angeschlossen, weil Zero v0.1.3 noch keine stdin-API ausgeliefert hat — nutze stattdessen std.args über das Args-Panel.
Warum Zero spannend ist
- Capability-basierte I/O: Jeder Seiteneffekt (stdout, Dateien, Netzwerk) läuft über einen
World-Parameter, dadurch verrät dir die Signatur einer Funktion genau, was sie anfassen kann. Keine versteckten Globals, kein impliziter Allocator, kein Überraschungs-Async. - Agent-orientierte Toolchain:
zeroliefert stabile JSON-Diagnostics,zero fix --plan --jsonproduziert typisierte Repair Plans, und jedes CLI-Subcommand akzeptiert--json— Agents können die Ausgabe also pipen, statt sie per Regex zu parsen. - Winzige native Binaries, oft unter 10 KiB. Der Compiler nutzt direkte Emitter für ELF, Mach-O, PE und WebAssembly, du schleppst also keine LLVM-Abhängigkeit mit.
- Vertraute Syntax, schärfere Sicherheit: auf dem Papier Rust-artig, aber ohne panic-on-null, ohne implizites GC, ohne versteckten Kontrollfluss. Fehler sind einfach Werte, die du mit
checkweitergibst.
Was du im Zero Playground ausprobieren kannst
- Gib etwas über
world.out.writeaus und sieh, wie dieraises-Annotation dich zwingt, den Error-Pfad mitcheckzu behandeln. Das ist Zeros komplette Idee von Sicherheit ohne Exceptions, in einem winzigen Beispiel. - Lies ein Kommandozeilen-Argument mit
std.args.get(N)und entpacke das Optional mit.has/.value. Bearbeite die Werte im Args-Panel unter dem Editor — beim Run werden sie deinem Programm übergeben, genau wie ein echtes argv. - Schreib eine kleine
fun, die einenStringzurückgibt, ruf sie ausmainauf und beobachte, wie sich die Typen von selbst durchziehen. Zero inferiert Generics aggressiver als Rust, die meisten Aufrufstellen brauchen daher gar keine Annotationen.
Häufige Fragen zu Zero
Was ist die Programmiersprache Zero?
--json, und ein separater Modus zero fix --plan erzeugt typisierte Repair Plans, die Agents direkt anwenden können. Syntaktisch liegt sie irgendwo zwischen Rust und Zig. Die Kernidee ist capability-basierte I/O über einen World-Parameter.Muss ich den Zero-Compiler installieren, um diesen Playground zu nutzen?
zero-Toolchain serverseitig in einem Sandbox-Container aus, du schreibst deinen Code also im Browser und drückst Run. Die Compiler-Version ist gepinnt (aktuell v0.1.3) und die Sandbox ist bei jedem Run gleich. Wenn du zusätzlich lokal entwickeln möchtest, veröffentlicht das Zero-Projekt vorgebaute Binaries auf seiner GitHub-Releases-Seite.Warum hat der Zero Playground kein stdin-Eingabefeld?
World-Parameter (world.out, world.err), plus std.args für Kommandozeilen-Argumente und std.env für Umgebungsvariablen. Bis Vercel Labs eine stdin-Capability ausliefert, nimm das Args-Panel unter dem Editor — so fütterst du dein Programm mit Eingaben.Was ist die World-Capability und warum bekommt main eine?
World-Wert entgegennehmen und Methoden darauf aufrufen (world.out.write, world.err.write usw.). Das macht aus der Signatur eine ehrliche Deklaration der Seiteneffekte — eine Funktion ohne World kann beweisbar nicht in die Außenwelt eingreifen. main bekommt eine, weil die Runtime die initiale Capability vergibt.Was bedeuten raises und check?
raises (optional inklusive der konkreten Fehlernamen), und Aufrufer schreiben check expr, um den Fehler nach oben weiterzureichen. Stell dir das wie Rusts ?-Operator mit benannten Error-Typen vor: Fehler sind Werte, keine Kontrollfluss-Überraschungen.