← 資料一覧

Zero(zerolang)

vercel-labs/zero · ProgramGraph · .0 ソース · Apache-2.0 · v0.2.x

1 — 概要

zerolang(リポジトリ名 zero)は、エージェントが生テキストではなく意味的プログラム構造で作業するための実験的グラフファースト言語。人間がレビューする .0 ソースが正であり、コンパイラが導出する ProgramGraph がエージェント向けインターフェースになる(README より)。

.0正規ソース
Graphinspect / patch
JSON診断・契約フィールド
skillsバイナリ版と一致

設計目標はトークン効率・低メモリ・高速起動・高速ビルド・低レイテンシ・ゼロ依存。公式サイト zerolang.ai から CLI を入れ、zero graph / zero check で開発ループを回す。

安全: セキュリティ上の脆弱性は想定される。本番・機密データ・信頼インフラには未対応。隔離された使い捨て環境で扱う(README の Safety status)。
2 — ProgramGraph(エージェント向け中核)

ソーステキストだけでは、参照関係・所有権・エフェクト・import 境界を推測しがち。ProgramGraph はコンパイラが所有する checked 構造で、node ID・graph hash・型・エフェクト・モジュール辺などをスライス単位で返す。エージェントは行範囲ではなく #expr_653eeb6e のようなノードを編集対象にできる。

.0 ソース → graph dump → inspect / patch → validate → 書き戻し

ダンプ例

zero graph dump examples/hello.0

出力には zero-graph v1、モジュール名、hash "graph:…"、ノード(Function / Param / MethodCall / Literal 等)、辺(arg / body)が含まれる。hash は stale コンテキスト拒否、node ID は inspect したグラフ上の編集ハンドル。

checked graph patch

zero graph patch examples/hello.0 \
  --expect-graph-hash graph:a7f7e6899a73f3b4 \
  --op 'set node="#expr_653eeb6e" field="value" expect="hello from zero\n" value="hello graph\n"'

--expect-graph-hash と expect で、inspect 時点と異なる状態への誤パッチを拒否する。対応する canonical .0 では、検証後に lower → format → reparse → check までコンパイラが一括処理する。

flowchart LR
  SRC[".0 ソース(正)"]
  DUMP["graph dump / --json"]
  PATCH["graph patch"]
  CHK["graph check / zero check"]
  SRC --> DUMP
  DUMP --> PATCH
  PATCH --> CHK
  CHK --> SRC
3 — .0 ソースの骨格

エントリは pub fn main(world: World) -> Void raises。World はランタイム能力、check は失敗可能呼び出し、raises は関数の失敗可能性を宣言する(language スキル)。

fn answer() -> i32 {
    return 40 + 2
}

pub fn main(world: World) -> Void raises {
    if answer() == 42 {
        check world.out.write("math works\n")
    }
}

宣言と制御

  • トップレベル: use、const、type、enum、choice、fn、test
  • 束縛は原則 let、変更時のみ var
  • 条件は Bool のみ(整数・文字列の真偽値は使わない)
  • match は網羅的。フォールバックは _ 臂

パッケージ

zero.json で exe / lib パッケージを定義。use helpers のようなパッケージローカル import は src/ から解決する(packages スキル)。

{
  "package": { "name": "hello", "version": "0.1.0" },
  "targets": { "cli": { "kind": "exe", "main": "src/main.0" } }
}
4 — リポジトリ構成
flowchart TB
  subgraph core["コンパイラと検証"]
    NC[native/zero-c]
    CONF[conformance]
    EVAL[evals]
  end
  subgraph surface["開発者向け"]
    EX[examples]
    DOC[docs 公式サイト]
    VS[extensions/vscode]
    SK[skills + skill-data]
  end
  CLI[bin/zero] --> NC
  EX --> CLI
  DOC --> CLI
パス役割
native/zero-c/ネイティブコンパイラ(make -C native/zero-c)
examples/実行可能サンプル(hello.0、パッケージ、agent-repair-demo 等)
conformance/言語・CLI・ProgramGraph のフィクスチャ
docs/公式ドキュメント(Next.js / pnpm workspace)
skill-data/CLI が配布する版一致スキル本文
skills/zero/エージェント向け発見スタブ(SKILL.md)
std/標準ライブラリ .0 ソース
evals/エージェント向け評価ハーネス
5 — CLI(inspect / repair / build)

エージェント向け inspect / repair はコンパイラ CLI に集約される。安定フィールドは --json で取得する(README の Compiler-Native Contracts)。

コマンド契約
zero skills get languageバイナリ同梱の言語ルール
zero check --json診断コード・span・repair メタ・ターゲット readiness
zero parse --json宣言・シグネチャ・body ノード種別の安定サマリ
zero graph --jsonモジュール・import・capabilities・effects・ownership
zero graph dump決定的 ProgramGraph テキスト(hash / node ID / edge)
zero graph patchgraph-hash と field expect 付き checked 編集
zero fix --plan --jsonファイルを書き換えない修復プラン
zero size --jsonretained helpers・サイズ理由・artifact budget
zero run / zero build実行・--emit exe|obj|wasm 直接生成
zero doctor --jsonツールチェーン健全性

診断 → 修復デモ

zero check --json conformance/check/fail/unknown-name.0
zero explain --json TYP009
zero fix --plan --json examples/agent-repair-demo/broken.0
pnpm run agent:demo

インストールと最初の実行

curl -fsSL https://zerolang.ai/install.sh | bash
export PATH="$HOME/.zero/bin:$PATH"
zero --version
zero check examples/hello.0
zero run examples/add.0

examples/add.0 の期待出力は math works。リポジトリ checkout ではグローバルではなく bin/zero を優先する。

互換: 実験段階のため破壊的変更を許容。旧 syntax 互換レイヤは置かない(README の Compatibility Policy)。
6 — バージョン一致スキル

skills/zero/SKILL.md は発見用スタブ。実ワークフローは、プロジェクトを走らせるのと同じ zero バイナリが返す版一致コンテンツを使う。

zero skills list
zero skills get zero
zero skills get zero --full
zero skills get language
zero skills get graph
内蔵スキル(例)用途
graphProgramGraph inspect / patch / reconcile
language.0 構文・意味のコンパクトガイド
diagnostics診断コードと修復の読み方
packageszero.json と import
buildsrun / build / ターゲット
testingテスト実行の慣習
stdlib標準ライブラリモジュール
agentエージェント修復デモ向け
7 — リポジトリ内の検証

ルート package.json(pnpm workspace)から conformance・ネイティブテスト・ドキュメントテストなどを実行する。

pnpm run docs:test
pnpm run conformance
pnpm run native:test
pnpm run command-contracts
pnpm run bench
pnpm run agent:demo

ローカルコンパイラは make -C native/zero-c。公式ドキュメントサイトは pnpm run docs:dev で起動(docs/ パッケージ)。

学習順: 公式 docs/articles/getting-started.md → learn-zero.md → language-reference.md → examples/README.md。
  • GitHub: vercel-labs/zero — 本体リポジトリ(Apache-2.0)
  • zerolang.ai — インストーラと公式ドキュメント入口
  • リポジトリ内 README.md — Why Graph、Quick Start、Common Commands
  • リポジトリ内 skills/zero/SKILL.md — スキル発見スタブ
  • リポジトリ内 skill-data/ — CLI 配布用スキル(graph.md、language.md 等)
  • リポジトリ内 docs/articles/ — 言語リファレンスとチュートリアル
  • リポジトリ内 CHANGELOG.md — v0.2.x の ProgramGraph / 直接 emit 変更履歴