Menu

Zero CLI: check, run, build, test, fix ve explain

zero komut satırı aracının kısa turu: günlük kullanacağınız subcommand'lar, her birinin ne ürettiği ve --json bayrağının her komutu ajanlar için makine tarafından okunabilir bir feed'e nasıl dönüştürdüğü.

CLI Size Ne Sunuyor

zero binary'si tek başına geliştirme toolchain'inin tamamı. Ayrı bir paket yöneticisi, formatter, linter ya da test runner yok — hepsi zero'nun subcommand'ları. Bu, yüzeyi küçük ve öngörülebilir tutmak için.

En sık kullanacağınız komutların kısa menüsü:

KomutNe yapar
zero checkExecutable üretmeden kaynak kodu type-check eder.
zero runTek adımda derler ve çalıştırır.
zero buildNative executable'a derler.
zero testBir paketin test target'larını çalıştırır.
zero fixYapılandırılmış onarım planlarını uygular veya gösterir.
zero explainBir diagnostic kodu için düz metin açıklamayı getirir.
zero newYeni bir paket iskeleti oluşturur.
zero --versionToolchain sürümünü yazdırır.

Hepsi, insan tarafından biçimlendirilmiş metin yerine makine tarafından okunabilir çıktı üretmek için --json kabul eder.

zero check

Yük taşıyıcı. zero check compiler'ın statik denetimlerini — parsing, type-checking, capability ve effect inference, eksik import tespiti — çalıştırır ve code generation'dan önce durur. Hızlıdır, ki bu önemli çünkü ajanlar ve editörler onu sürekli çağırır.

zero check hello.0

Temiz çıktı (hiçbir şey basılmaz, exit 0) dosyanın düzgün olduğu anlamına gelir. Hatalar varsayılan olarak insan tarafından okunabilir metin biçiminde gelir. --json ekleyin ve ajanların tükettiği yapılandırılmış formu alın:

zero check hello.0 --json
{
    "ok": false,
    "diagnostics": [
        {
            "code": "NAM003",
            "message": "unknown identifier",
            "line": 3,
            "repair": { "id": "declare-missing-symbol" }
        }
    ]
}

Diagnostic şekli tamamıyla JSON Diagnostics sayfasında belgelenmiş. Kararlı code alanına dikkat edin — NAM003 compiler sürümünden bağımsız olarak hep "unknown identifier" demektir.

check'i tek bir dosya yerine bir paket dizinine de doğrultabilirsiniz:

zero check ./my-package

zero.json'ı okur, kaynak ağacını dolaşır ve her target'taki her sorunu raporlar.

zero run

run tek adımda derleyip çalıştırır. Küçük bir program üzerinde gezinirken ve diskte bir binary üretmek istemediğinizde uygundur.

zero run hello.0

zero build çalıştırıp üretilen binary'yi invoke etmenin eşdeğeri, sadece artifact atılır. Programınızın stdout'u terminalinizin stdout'una yönlendirilir — programınızın world.out.write çağrıları ekranınıza düşer.

Programınız argüman istiyorsa, -- sonrasında geçirin:

zero run greet.0 -- Alice

Runtime, bu argümanlara I/O'yu da sergileyen aynı World capability üzerinden erişim verir.

zero build

Bir artifact istediğinizde build kullanın:

zero build hello.0

Compiler, kaynak dosyanızın yanına (ya da bir paket içinde çalışıyorsanız paketin build dizinine) bir native executable üretir. Başka herhangi bir program gibi çalıştırabilirsiniz — Zero binary'leri self-contained olduğu için ayrı bir runtime gerekmez.

Zero binary'leri küçüktür. Projenin tasarım hedefi, LLVM toolchain'ini atlayıp doğrudan kompakt kod yolları üreterek basit programlar için 10KB altı executable'lar.

zero test

Bir paketin test target'larını çalıştırır:

zero test

Testler src/ altında kaynak kodun yanında yaşar ve paketin zero.json'ında test target olarak bildirilir. Runner onları keşfeder, her birini çalıştırır ve pass/fail üretir. --json ile çıktı her test için yapılandırılmıştır — isim, status, süre, yakalanan diagnostic'ler — ajanlar ve CI tooling için.

Zero Paketleri test target'larının zero.json'da nasıl bildirileceğini anlatıyor.

zero fix

fix, check --json'ın ürettiği repair metadata'sını tüketir. İki modu var:

zero fix --plan --json   # yapılandırılmış planı göster, uygulama
zero fix                 # planı yerinde uygula

Plan kabaca şöyle görünür (şekil illüstratiftir):

{
    "diagnostic": { "code": "NAM003", "line": 3 },
    "plan": {
        "id": "declare-missing-symbol",
        "edits": [
            { "kind": "insert", "line": 1, "text": "fun answer() -> i32 { return 42 }\n" }
        ]
    }
}

Fikir şu: bir ajan planı alır, ona güvenip güvenmemeye karar verir ve ya doğrudan uygular ya da daha üst düzey bir muhakeme adımına geçirir. Planlar veridir; ajanların harekete geçmek için düz metin yorumlaması gerekmez.

zero explain

explain, diagnostic sisteminin düz metin tarafıdır:

zero explain NAM003

Hata kodunun insan tarafından okunabilir açıklamasını basar — ne anlama geldiğini, compiler'ın neden ürettiğini ve tipik düzeltmelerin neye benzediğini. Şu durumlarda işe yarar:

  • Bir insan debug yapıyor ve satır içi mesajdan daha uzun bir cevap istiyor.
  • Bir ajan, training verisinde olmayan bir diagnostic koduyla karşılaşıyor ve daha fazla context istiyor.

Kodun kendisi compiler sürümleri arasında kararlı kalır, bu yüzden cache'lenmiş açıklamalar geçerliliğini korur.

zero new

Sıfırdan bir paket iskeleti oluşturur:

zero new cli hello

Bu, zero.json manifest'i ve başlangıç src/main.0'sı olan bir hello/ dizini yaratır. İlk argüman (burada cli) bir template seçer — bu durumda executable bir komut satırı uygulaması. Zero Paketleri düzeni ayrıntılı olarak anlatıyor.

--json Alışkanlığı

Hemen hemen her komut --json destekliyor. Zero etrafında tooling, bir agent harness ya da CI pipeline kuruyorsanız varsayılan olarak JSON formunu kullanın. Çünkü:

  • Kararlı. Şema sürümlü ve ekip onu bir kontrat gibi ele alıyor.
  • Eksiksiz. İnsan çıktısında olmayan alanları da alırsınız (kesin span'ler, repair plan id'leri, dependency graph verisi).
  • Parse edilebilir. Bir satır numarasını çıkarmak için İngilizce metin üzerinde regex çalıştırmak yok.

İnsanlar için ise terminalde --json kapalı bırakın — biçimlendirilmiş metin, terminalde isteyeceğiniz şey.

Diğer Faydalı Komutlar

Daha seyrek dokunulan ama bilmekte fayda olan birkaç komut:

  • zero graph --json — bir paketin dependency graph'ını yapılandırılmış veri olarak üretir. Neyin neye bağlı olduğunu anlamak ve çağrı yerleri hakkında muhakeme yapmak isteyen ajanlar için faydalı.
  • zero size --json — derlenmiş artifact'lerin disk üzerindeki boyutunu target bazında raporlar. Binary footprint'i (ki Zero için bir tasarım hedefi) önemsediğinizde işe yarar.
  • zero --version — toolchain sürümünü basar. Bir takım içinde çalışıyorsanız bunu bir yere sabitleyin — Zero pre-1.0 ve breaking change'ler geliyor.

Sırada: Zero Paketleri

Tek bir .0 dosyası hello-world için yeterli. Gerçek projeler zero.json manifest'i ve src/ dizini olan paketler kullanır. Zero Paketleri bir paketi nasıl iskeletleyeceğinizi gösterir ve her alanı açıklar.

Sıkça Sorulan Sorular

Temel Zero CLI komutları nelerdir?

Çekirdek komutlar şunlar: zero check (bir dosyayı ya da paketi type-check eder), zero run (derler ve çalıştırır), zero build (executable'a derler), zero test (testleri çalıştırır), zero fix (önerilen onarımları uygular) ve zero explain (bir diagnostic kodunu açıklar). Her biri makine tarafından okunabilir çıktı için --json bayrağı kabul eder.

zero check ne yapar?

zero check <dosya-ya-da-paket> compiler'ın statik denetimlerini — parsing, type-checking, capability ve effect analizi — bir executable üretmeden çalıştırır. Kodunuzun düzgün olup olmadığını anlamanın en hızlı yolu. --json ile birlikte ajanların tüketebileceği yapılandırılmış diagnostic'ler üretir.

zero run ile zero build arasındaki fark nedir?

zero run <dosya> programı go run veya cargo run gibi tek adımda derler ve çalıştırır. zero build ise programı derler ve durur; gönderebileceğiniz ya da sonra çağırabileceğiniz bir native binary bırakır. Geliştirme sırasında run, bir artifact istediğinizde ise build kullanın.

zero fix --plan nasıl çalışır?

zero check --json, repair alanı içeren bir diagnostic ürettiğinde, zero fix --plan --json ajanın uygulayabileceği yapılandırılmış planı geri verir. Plan veri olarak gelir — kaynak üzerinde edit operasyonları, İngilizce talimatlar değil. Bir ajan onu programatik olarak uygulamayı ya da reddetmeyi seçebilir.

zero explain ne işe yarar?

zero explain <kod>, NAM003 gibi kararlı bir diagnostic kodu için insan tarafından okunabilir açıklamayı getirir. JSON diagnostic'in düz metin karşılığı — bir insan debug yaparken işine yarar, bir ajan da training verisinde olmayan bir kodla karşılaştığında context almak için kullanabilir.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA