Menu
Coddy logo textTech

Zero プレイグラウンド

ドキュメントを読む

コードスニペットを書いて、実行して、共有できます — セットアップ不要。

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

ブラウザで Zero を試す

Zero は Vercel Labs の新しいシステムプログラミング言語で、2026年5月に初めてリリースされました。見た目は Rust っぽい — pub funlet mut->、ジェネリックの角括弧 — のですが、設計目標が少し変わっています。toolchain のすべての部分が、人間と同じくらい AI エージェントにとっても読みやすく、編集しやすく、修復しやすいように作られているのです。診断は安定したエラーコード付きの構造化 JSON として出力され、コンパイラは型付きの repair plan を生成でき、バイナリは 10 KiB 未満に収まります。このプレイグラウンドでは、何もインストールせずに言語をいじれる、すっきりしたエディタが使えます。

Zero でいちばん特徴的なのは capability ベースの I/O です。暗黙的なグローバルもアンビエントな stdout もありません — ターミナルに書き込みたい関数は World パラメータを受け取り、world.out.write(...) を呼ばなければなりません。エラーは例外や panic ではなく raisescheck で伝搬し、オプショナル値は null ではなく .has / .value を使います。Run を押せば、エディタがサーバー側でコードをコンパイルして出力を表示します。stdin はまだ繋がっていません。Zero v0.1.3 が stdin API を出荷していないためです — 代わりに Args パネルから std.args を使ってください。

Zero が面白い理由

  • Capability ベースの I/O:あらゆる副作用(stdout、ファイル、ネットワーク)が World パラメータを通るので、関数のシグネチャを見るだけで何に触れるかが分かります。隠れたグローバルなし、暗黙のアロケータなし、サプライズな async もなし。
  • エージェントを最優先にした toolchain:zero は安定した JSON 診断を出力し、zero fix --plan --json は型付きの repair plan を生成し、CLI のすべての subcommand が --json を受け付けます。エージェントは regex でパースする代わりに出力をそのまま pipe できます。
  • 極小ネイティブバイナリ、しばしば 10 KiB 未満。コンパイラは ELF、Mach-O、PE、WebAssembly 向けにダイレクトエミッタを使うので、LLVM 依存を引きずる必要がありません。
  • 馴染みのある構文、より鋭い安全性:紙面上は Rust 風ですが、panic-on-null なし、暗黙の GC なし、隠れた制御フローもなし。エラーは check で伝搬させるただの値です。

Zero プレイグラウンドで試したいこと

  • world.out.write で何かを出力し、raises アノテーションがどのようにエラー経路を check で扱うことを強制するか見てみましょう。例外なしで安全性を確保する Zero のイディオムが、この小さな例に丸ごと詰まっています。
  • std.args.get(N) でコマンドライン引数を読み、.has / .value でオプショナルを取り出します。エディタの下の Args パネルで値を編集すれば、Run のときに本物の argv と同じようにプログラムに渡されます。
  • String を返す小さな fun を書き、main から呼び出して、型が自然に通っていく様子を見てみましょう。Zero は Rust よりも積極的にジェネリックを推論するので、ほとんどの呼び出し箇所でアノテーションが要りません。

Zero に関するよくある質問

Zero プログラミング言語とは何ですか?
Zero は Vercel Labs が開発した実験的な systems language で、2026年5月に初めてリリースされました。小さなネイティブ実行ファイル(多くの場合 10 KiB 未満)にコンパイルされ、AI コーディングエージェントを意識して作られています。コンパイラは構造化された JSON 診断を出力し、CLI のすべての subcommand が --json を受け付け、別モードの zero fix --plan はエージェントがそのまま適用できる型付き repair plan を生成します。構文的には Rust と Zig の中間くらいに位置します。中心となるアイデアは、World パラメータを介した capability ベースの I/O です。
このプレイグラウンドを使うのに Zero コンパイラのインストールは必要ですか?
いいえ。Coddy はサンドボックスされたコンテナの中で zero toolchain をサーバー側で実行するので、コードはブラウザで書いて Run を押すだけです。コンパイラのバージョンは固定されており(現在は v0.1.3)、サンドボックスは実行ごとに同じです。ローカルでも開発したい場合は、Zero プロジェクトが GitHub releases ページにプリビルドのバイナリを公開しています。
なぜ Zero プレイグラウンドには stdin の入力欄がないのですか?
Zero v0.1.3 がまだ stdin API を公開していないからです。この言語が外の世界に触れられるのは、World パラメータ上の capability(world.outworld.err)と、コマンドライン引数用の std.args、環境変数用の std.env を介してだけです。Vercel Labs が stdin capability を出荷するまでは、エディタの下の Args パネルを使ってください — それがプログラムに入力を与える方法です。
World capability とは何ですか?なぜ main がそれを受け取るのですか?
Zero には I/O のための暗黙的なグローバル名前空間がありません。出力を書き込んだり、ファイルを読んだり、ネットワークにアクセスしたい関数は、World 値を受け取って、その上のメソッド(world.out.writeworld.err.write など)を呼ぶ必要があります。これによってシグネチャが副作用の正直な宣言になります — World を受け取らない関数は、外の世界に触れられないことを証明できます。main がそれを受け取るのは、最初の capability を授けるのが runtime だからです。
raisescheck は何を意味しますか?
Zero は例外ではなく、明示的なエラー処理を採用しています。失敗する可能性のある関数はシグネチャに raises を付け(任意で具体的なエラー名を列挙し)、呼び出し側は check expr を書いて失敗をスタックの上に伝搬させます。名前付きエラー型を持つ Rust の ? 演算子のようなものだと思ってください。失敗は値であって、制御フローのサプライズではありません。