Zero 在线编辑器
编写、运行和分享代码片段,无需任何配置。
在浏览器中试试 Zero
Zero 是 Vercel Labs 推出的新系统编程语言,于 2026 年 5 月首次发布。表面上它很像 Rust:pub fun、let mut、->、泛型尖括号,但它的设计目标与众不同:工具链的每个部分都要让 AI 智能体和人类一样轻松地阅读、编辑和修复。诊断信息以结构化 JSON 输出,带有稳定的错误码,编译器可以生成带类型的修复方案,二进制文件不到 10 KiB。这个在线编辑器提供一个干净的编辑环境,让你不用安装任何东西就能摸索这门语言。
Zero 最独特的理念是基于能力(capability)的 I/O。没有隐式的全局变量,也没有默认可用的标准输出:一个函数想往终端写内容,就必须接收一个 World 参数并调用 world.out.write(...)。错误通过 raises 和 check 传播,而不是异常或 panic;可选值用 .has / .value 表示,而不是 null。点击运行,编辑器会在服务器端编译你的源代码并显示输出。标准输入还没有接入,因为 Zero v0.1.3 还没有提供标准输入 API,请改用参数面板配合 std.args。
Zero 为什么值得一试
- 基于能力的 I/O:每个副作用(标准输出、文件、网络)都要经过
World参数,所以看函数签名就知道它能访问什么。没有隐藏的全局变量,没有隐式的分配器,也没有出人意料的异步。 - 为智能体优先设计的工具链:
zero输出稳定的 JSON 诊断信息,zero fix --plan --json生成带类型的修复方案,每个 CLI 子命令都支持--json,智能体可以直接用管道传递输出,而不用靠正则表达式解析。 - 极小的原生二进制文件,通常不到 10 KiB。编译器直接生成 ELF、Mach-O、PE 和 WebAssembly,不依赖 LLVM。
- 熟悉的语法,更严格的安全性:写起来像 Rust,但不会因 null 而 panic,没有隐式 GC,也没有隐藏的控制流。错误只是用
check传播的普通值。
可以在 Zero 在线编辑器里试试什么
- 通过
world.out.write输出一些内容,看看raises注解如何迫使你用check处理错误路径。这一个小例子就体现了 Zero 不靠异常实现安全的整套写法。 - 用
std.args.get(N)读取一个命令行参数,再用.has/.value取出可选值。在编辑器下方的参数面板中修改值,点击运行时它们会传给你的程序,和真正的 argv 一样。 - 写一个返回
String的小fun,在main中调用它,看类型如何一路传递。Zero 的泛型推断比 Rust 更积极,所以大多数调用处根本不需要类型注解。
Zero 常见问题
Zero 编程语言是什么?
--json,单独的 zero fix --plan 模式会生成智能体可以直接应用的带类型修复方案。语法上它介于 Rust 和 Zig 之间。它的核心理念是通过 World 参数实现基于能力的 I/O。使用这个在线编辑器需要安装 Zero 编译器吗?
zero 工具链,你在浏览器里写代码,点击运行就行。编译器版本是固定的(目前是 v0.1.3),每次运行的沙盒环境都相同。如果你也想在本地开发,Zero 项目在其 GitHub 发布页面上提供了预编译的二进制文件。为什么 Zero 在线编辑器没有标准输入框?
World 参数上的能力(world.out、world.err)与外界交互,另外还有用于命令行参数的 std.args 和用于环境变量的 std.env。在 Vercel Labs 推出标准输入能力之前,请使用编辑器下方的参数面板,这就是给程序传入输入的方式。World 能力是什么?为什么 main 要接收一个?
World 值并调用它的方法(world.out.write、world.err.write 等)。这样函数签名就如实声明了它的副作用:如果一个函数不接收 World,就可以确定它无法触及外部世界。main 之所以接收一个,是因为最初的能力由运行时授予。raises 和 check 是什么意思?
raises(可以列出具体的错误名称),调用方用 check expr 把失败向上传播。可以把它看作带命名错误类型的 Rust ? 运算符:失败是值,而不是出人意料的控制流。适合 Zero 的实用工具
与 Zero 在线编辑器搭配使用的免费浏览器工具,全部来自 Coddy。