Menu
CoddyTech

Zero 在线编辑器

编写、运行和分享代码片段,无需任何配置。

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

在浏览器中试试 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 编程语言是什么?
Zero 是 Vercel Labs 推出的一门实验性系统语言,于 2026 年 5 月首次发布。它编译成很小的原生可执行文件(通常不到 10 KiB),并且是为 AI 编程智能体设计的:编译器输出结构化的 JSON 诊断信息,每个 CLI 子命令都支持 --json,单独的 zero fix --plan 模式会生成智能体可以直接应用的带类型修复方案。语法上它介于 Rust 和 Zig 之间。它的核心理念是通过 World 参数实现基于能力的 I/O。
使用这个在线编辑器需要安装 Zero 编译器吗?
不需要。Coddy 在服务器端的沙盒容器中运行 zero 工具链,你在浏览器里写代码,点击运行就行。编译器版本是固定的(目前是 v0.1.3),每次运行的沙盒环境都相同。如果你也想在本地开发,Zero 项目在其 GitHub 发布页面上提供了预编译的二进制文件。
为什么 Zero 在线编辑器没有标准输入框?
因为 Zero v0.1.3 还没有提供标准输入 API。这门语言只能通过 World 参数上的能力(world.out、world.err)与外界交互,另外还有用于命令行参数的 std.args 和用于环境变量的 std.env。在 Vercel Labs 推出标准输入能力之前,请使用编辑器下方的参数面板,这就是给程序传入输入的方式。
World 能力是什么?为什么 main 要接收一个?
Zero 没有用于 I/O 的隐式全局命名空间。一个函数想输出内容、读取文件或访问网络,就必须接收一个 World 值并调用它的方法(world.out.write、world.err.write 等)。这样函数签名就如实声明了它的副作用:如果一个函数不接收 World,就可以确定它无法触及外部世界。main 之所以接收一个,是因为最初的能力由运行时授予。
raises 和 check 是什么意思?
Zero 显式地处理错误,而不是通过异常。可能失败的函数会在签名中标注 raises(可以列出具体的错误名称),调用方用 check expr 把失败向上传播。可以把它看作带命名错误类型的 Rust ? 运算符:失败是值,而不是出人意料的控制流。

适合 Zero 的实用工具

与 Zero 在线编辑器搭配使用的免费浏览器工具,全部来自 Coddy。