从源码构建
当你想从代码仓库检出试用 Zero 或参与编译器开发时,请使用此路径。
pnpm install
make -C native/zero-c
bin/zero --versionmake 将本地编译器构建到 .zero/bin/zero。仓库包装脚本
bin/zero 使用该本地构建。
快速命令循环
bin/zero check examples/hello.0
bin/zero build --emit exe --target linux-musl-x64 examples/add.0 --out .zero/out/add
./.zero/out/add检查代码
检查包/模块结构:
bin/zero graph --json examples/systems-package检查产物大小元数据:
bin/zero size --json examples/point.0列出已知目标平台:
bin/zero targets解释诊断信息并在不编辑文件的情况下检查修复计划:
bin/zero explain TAR002
bin/zero fix --plan --json conformance/native/fail/mem-copy-immutable-dst.0原生目标平台
编译器目前支持以下文档中记录的原生目标平台名称的直接可执行文件输出:
darwin-arm64darwin-x64linux-arm64linux-musl-arm64linux-musl-x64linux-x64win32-arm64.exewin32-x64.exe
bin/zero build --emit exe --target linux-musl-x64 examples/add.0 --out .zero/out/add-linux-musl
bin/zero build --emit exe --target win32-x64.exe examples/hello.0 --out .zero/out/hello-win32不支持的目标平台或功能请求会报告诊断信息,而不是静默选择其他后端。
直接目标文件
为外部原生目标平台构建小型目标文件产物:
bin/zero build --emit obj --target darwin-arm64 examples/direct-call-add.0 --out .zero/out/direct-call-add.o当代理需要结构化的就绪数据而不需要写入产物时,请在构建之前使用
bin/zero check --json --emit obj --target <target> <input>。
当前语言子集
编译器支持示例中所使用的命令行语言子集:
- 多文件清单包
- 函数和类型化参数
- 类型化的
let和mut - 固定数组字面量、重复字面量和赋值
defermatchcheck、ret、if、else和while- 调用和成员调用
- 字符串、数字、布尔值和二元运算符
type和extern type- 类型字面量和直接字段访问
enum- 带载荷和不带载荷的
choice标签 owned<T>、Span<T>、ref<T>和mutref<T>对文档中描述子集的检查- 早期的
std.mem、std.codec、std.parse、std.fs及平台辅助接口
验证代码仓库
pnpm run docs:test
pnpm run conformance
pnpm run native:test
pnpm run command-contracts运行本地基准测试冒烟覆盖:
pnpm run bench本仓库中的 TypeScript 代码是用于文档、测试、基准测试和编辑器集成的辅助工具。 它不是一个独立的 TypeScript 编译器实现。