Zero Playground
Dokümanları OkuKod parçacıklarını yazın, çalıştırın ve paylaşın — kurulum gerekmez.
Zero'yu tarayıcıda deneyin
Zero, Vercel Labs'in yeni systems programming language'ı; ilk sürümü Mayıs 2026'da çıktı. Dışarıdan Rust'a benziyor — pub fun, let mut, ->, generic parantezler — ama tasarım hedefi sıra dışı: tüm toolchain, AI agent'larının insan kadar rahat okuyup düzenleyip onarabilmesi için kurgulanmış. Diagnostic'ler sabit hata kodlarıyla yapılandırılmış JSON olarak çıkıyor, derleyici typed repair plan üretebiliyor ve binary'ler 10 KiB'ın altında kalıyor. Playground, dili tek satır kurulum yapmadan kurcalayabileceğin temiz bir editör sunar.
Zero'nun en ayırt edici fikri capability tabanlı I/O. İmplicit global yok, ambient stdout yok — terminale yazmak isteyen bir fonksiyonun World parametresi alması ve world.out.write(...) çağırması gerekiyor. Hatalar exception veya panic yerine raises ve check ile yayılıyor, optional değerler null yerine .has / .value kullanıyor. Run'a basınca editör kodunu sunucu tarafında derleyip çıktıyı gösterir. Stdin henüz bağlı değil çünkü Zero v0.1.3 stdin API'sini henüz yayınlamadı — onun yerine Args paneli üzerinden std.args kullan.
Zero neden ilginç
- Capability tabanlı I/O: her yan etki (stdout, dosya, ağ)
Worldparametresi üzerinden akar, yani fonksiyonun imzası neye dokunabildiğini açıkça söyler. Gizli global yok, implicit allocator yok, sürpriz async yok. - Agent öncelikli toolchain:
zerosabit JSON diagnostic'ler üretir,zero fix --plan --jsontyped repair plan döker, ve her CLI subcommand'ı--jsonkabul eder — böylece agent'lar çıktıyı regex'le ayrıştırmak yerine doğrudan pipe'layabilir. - Çoğu zaman 10 KiB'ın altında native binary'ler. Derleyici ELF, Mach-O, PE ve WebAssembly için doğrudan emitter kullanıyor, yani peşinden sürüklenecek bir LLVM bağımlılığı yok.
- Tanıdık syntax, daha keskin güvenlik: kağıt üstünde Rust gibi, ama panic-on-null yok, implicit GC yok, gizli control flow yok. Hatalar
checkile yaydığın sıradan değerler.
Zero playground'da denenecek şeyler
world.out.writeile bir şey bastır veraisesanotasyonunun seni hata yolunucheckile ele almaya nasıl zorladığını izle. Zero'nun exception'sız güvenlik idiom'unun tamamı bu küçücük örnekte.std.args.get(N)ile bir komut satırı argümanını oku, optional'ı.has/.valueile aç. Değerleri editörün altındaki Args panelinden düzenle — Run'a bastığında programına gerçek argv gibi geçiriliyorlar.Stringdöndüren küçük birfunyaz,mainiçinden çağır ve type sisteminin nasıl kendi kendine örüldüğünü gör. Zero, generic'leri Rust'tan daha agresif şekilde infer eder, çoğu çağrıda hiçbir anotasyona gerek kalmaz.
Zero hakkında sık sorulan sorular
Zero programlama dili nedir?
--json kabul eder ve ayrı bir zero fix --plan modu agent'ların doğrudan uygulayabileceği typed repair plan'lar üretir. Syntax olarak Rust ile Zig arasında bir yerde duruyor. Ana fikir, World parametresi üzerinden capability tabanlı I/O.Bu playground'u kullanmak için Zero derleyicisini kurmam gerekir mi?
zero toolchain'ini sandbox'lı bir container'da sunucu tarafında çalıştırır; sen kodu tarayıcıda yazar ve Run'a basarsın. Derleyici sürümü sabittir (şu anda v0.1.3) ve sandbox her çalıştırmada aynıdır. Yerelde de geliştirmek istersen Zero projesi, GitHub releases sayfasında önceden derlenmiş binary'ler yayınlıyor.Zero playground'unda neden bir stdin kutusu yok?
World parametresi üzerindeki capability'ler (world.out, world.err) ile, ayrıca komut satırı argümanları için std.args ve ortam değişkenleri için std.env üzerinden ulaşıyor. Vercel Labs bir stdin capability'si yayınlayana kadar editörün altındaki Args panelini kullan — programına girdiyi böyle veriyorsun.World capability'si nedir ve main neden bunu alır?
World değeri alıp üzerindeki metotları çağırması gerekiyor (world.out.write, world.err.write vb.). Bu, imzayı yan etkilerin dürüst bir bildirimine dönüştürür — World almayan bir fonksiyon, dış dünyaya kanıtlanabilir biçimde dokunamaz. main bunu alır çünkü ilk capability'yi veren runtime'dır.raises ve check ne anlama geliyor?
raises ekler (isteğe bağlı olarak hata isimlerini de listeler), çağıran taraf ise hatayı yukarı taşımak için check expr yazar. Bunu, isimlendirilmiş hata türleri olan Rust'ın ? operatörü gibi düşün: hatalar değer, control-flow sürprizi değil.