Menu
Coddy logo textTech

Pisz, uruchamiaj i udostępniaj fragmenty kodu bez żadnej konfiguracji.

Coddymain.0
Output
Click Run to see the output here.

Wypróbuj Zero w przeglądarce

Zero to nowy język programowania systemowego od Vercel Labs, wydany po raz pierwszy w maju 2026. Na pierwszy rzut oka przypomina Rust: pub fun, let mut, ->, nawiasy dla typów generycznych, ale cel projektu jest nietypowy: każda część toolchaina ma być tak samo wygodna do czytania, edycji i naprawiania dla agentów AI jak dla ludzi. Diagnostyka ma postać ustrukturyzowanego JSON ze stałymi kodami błędów, kompilator potrafi generować typowane plany naprawy, a pliki binarne mają poniżej 10 KiB. Edytor online daje ci czyste środowisko do sprawdzania języka bez instalowania czegokolwiek.

Najbardziej charakterystyczna idea w Zero to I/O oparte na capabilities. Nie ma niejawnych zmiennych globalnych ani domyślnego stdout: funkcja, która chce pisać do terminala, musi przyjąć parametr World i wywołać world.out.write(...). Błędy propagują się przez raises i check zamiast wyjątków czy paniki, a wartości opcjonalne używają .has / .value zamiast null. Kliknij Uruchom, a edytor skompiluje kod na serwerze i pokaże wynik. Stdin nie jest jeszcze podłączone, bo Zero v0.1.3 nie ma jeszcze API do stdin. Zamiast tego użyj std.args przez panel Args.

Dlaczego Zero jest ciekawy

  • I/O oparte na capabilities: każdy efekt uboczny (stdout, pliki, sieć) przechodzi przez parametr World, więc sygnatura funkcji mówi, czego funkcja może dotknąć. Bez ukrytych zmiennych globalnych, bez niejawnego alokatora, bez niespodziewanej asynchroniczności.
  • Toolchain zaprojektowany z myślą o agentach: zero generuje stabilną diagnostykę w JSON, zero fix --plan --json tworzy typowane plany naprawy, a każde polecenie CLI przyjmuje --json, więc agenci mogą przekazywać wynik dalej zamiast parsować go wyrażeniami regularnymi.
  • Małe natywne pliki binarne, często poniżej 10 KiB. Kompilator używa bezpośrednich emiterów dla ELF, Mach-O, PE i WebAssembly, więc nie ciągnie za sobą zależności od LLVM.
  • Znajoma składnia, większe bezpieczeństwo: na ekranie wygląda jak Rust, ale nie ma paniki przy null, niejawnego GC ani ukrytego przepływu sterowania. Błędy to po prostu wartości, które propagujesz przez check.

Co wypróbować w edytorze online Zero

  • Wypisz coś przez world.out.write i zobacz, jak adnotacja raises zmusza cię do obsłużenia ścieżki błędu przez check. To cały idiom Zero na bezpieczeństwo bez wyjątków, w jednym małym przykładzie.
  • Odczytaj argument wiersza poleceń przez std.args.get(N) i rozpakuj wartość opcjonalną przez .has / .value. Edytuj wartości w panelu Args pod edytorem: trafiają do programu przy uruchomieniu, dokładnie jak prawdziwe argv.
  • Napisz małą funkcję fun, która zwraca String, wywołaj ją z main i zobacz, jak przechodzą przez nią typy. Zero wnioskuje typy generyczne śmielej niż Rust, więc w większości wywołań nie potrzeba żadnych adnotacji.

Najczęstsze pytania o Zero

Czym jest język programowania Zero?
Zero to eksperymentalny język systemowy od Vercel Labs, wydany po raz pierwszy w maju 2026. Kompiluje się do małych natywnych plików wykonywalnych (często poniżej 10 KiB) i powstał z myślą o agentach AI piszących kod: kompilator generuje ustrukturyzowaną diagnostykę w JSON, każde polecenie CLI przyjmuje --json, a osobny tryb zero fix --plan tworzy typowane plany naprawy, które agenci mogą zastosować bezpośrednio. Składniowo plasuje się gdzieś między Rustem a Zigiem. Główna idea to I/O oparte na capabilities przez parametr World.
Czy muszę instalować kompilator Zero, żeby używać tego edytora?
Nie. Coddy uruchamia toolchain zero na serwerze w odizolowanym kontenerze, więc piszesz kod w przeglądarce i klikasz Uruchom. Wersja kompilatora jest przypięta (obecnie v0.1.3), a piaskownica jest taka sama przy każdym uruchomieniu. Jeśli chcesz pracować też lokalnie, projekt Zero publikuje gotowe pliki binarne na swojej stronie wydań na GitHubie.
Dlaczego edytor online Zero nie ma pola stdin?
Bo Zero v0.1.3 nie udostępnia jeszcze API do stdin. Język komunikuje się ze światem zewnętrznym tylko przez capabilities parametru World (world.out, world.err), a do tego std.args dla argumentów wiersza poleceń i std.env dla zmiennych środowiskowych. Dopóki Vercel Labs nie wyda capability dla stdin, używaj panelu Args pod edytorem: w ten sposób przekazujesz dane do programu.
Czym jest capability World i dlaczego main je przyjmuje?
Zero nie ma niejawnej globalnej przestrzeni nazw dla I/O. Funkcja, która chce wypisać wynik, czytać pliki albo korzystać z sieci, musi otrzymać wartość World i wywoływać na niej metody (world.out.write, world.err.write i tak dalej). Dzięki temu sygnatura staje się uczciwą deklaracją efektów ubocznych: jeśli funkcja nie przyjmuje World, to w dowodliwy sposób nie może dotknąć świata zewnętrznego. main je dostaje, bo to środowisko uruchomieniowe przyznaje początkową capability.
Co oznaczają raises i check?
Zero obsługuje błędy jawnie, a nie przez wyjątki. Funkcja, która może się nie powieść, oznacza swoją sygnaturę przez raises (opcjonalnie z nazwami konkretnych błędów), a wywołujący piszą check expr, żeby przekazać błąd wyżej na stosie. To coś jak operator ? z Rusta z nazwanymi typami błędów: błędy są wartościami, a nie niespodziankami w przepływie sterowania.

Przydatne narzędzia do Zero

Darmowe narzędzia w przeglądarce, które świetnie działają razem z edytorem Zero online. Wszystkie w Coddy.