目标平台的现状
当前编译器包含一个小型显式目标表。使用以下命令查看:
zero targets输出的 JSON 包含:
schemaVersion- 当前
host - 每个目标的
hosted标志 - 别名
- 映射的 C 目标
- 能力集
宿主能力
仅当前宿主目标暴露完整的宿主能力集:
argsenvfsmemorynetprocrandstdiotime
非宿主目标仅暴露 zero targets --json 中为该目标列出的能力。部分非宿主目标包含文件系统、参数、环境、时间或随机数支持,但目前没有任何非宿主目标暴露 net。
net 能力是当前 std.net 元数据和出站 std.http.fetch(...) 的目标门控。std.http.parseMethod(...) 是仅处理元数据的辅助函数,不需要 net。出站 HTTP 可在 Darwin arm64 和 Linux x64 宿主可执行文件路径上使用。
zero targets --json 为每个目标包含一个 httpRuntime 对象。在受支持的宿主目标上,它会报告 curl 提供者、平台或 C 库的 TLS 边界、TLS 验证状态、curl 系统库,以及 ZERO_HTTP_TEST_CA_BUNDLE 自定义 CA 覆盖。
最小的通用目标无关子集仍然是:
memorystdio
这意味着使用宿主 std.fs 的示例在声明了 fs 能力的目标上是有效的。仅使用内存的包仍然可以构建目标无关的输出。
宿主文件 I/O
以下命令在宿主目标上可以成功运行:
zero check examples/resource-cli相同的宿主文件系统接口在非宿主目标上会明确报错:
zero check --json --target linux-musl-x64 conformance/native/fail/std-fs-target-unsupported.0诊断代码为 TAR002,修复 ID 为 choose-target-with-required-capability。
网络元数据
以下命令在宿主目标上可以成功运行:
zero check conformance/native/pass/std-net-http-breadth.0该检查会测试 std.net 和 std.http 元数据。它期望 std.net.connect(...) 和 std.net.listen(...) 返回空句柄。std.http.fetch(...) 在受支持的宿主可执行文件路径上执行出站 HTTP,将响应元数据、头部和正文写入调用方拥有的存储中。std.http.headerValue(...) 可以在该缓冲区中定位指定响应头部的值。当前公共接口中没有套接字读写 API、结构化头部集合或流式正文 API。
相同的网络接口在没有 net 能力的目标上会明确报错:
zero check --json --target linux-musl-x64 conformance/check/fail/target-net-unsupported.0目标无关内存
std.mem.copy 和 std.mem.fill 不需要宿主文件系统支持:
zero build --target linux-musl-x64 examples/memory-package --out .zero/out/memory-package使用 graph 和 size JSON 来查看目标相关信息:
zero graph --json --target linux-musl-x64 examples/memory-package
zero size --json --target linux-musl-x64 examples/memory-package两个输出都包含 requiresCapabilities、targetSupport 和 stdlibHelpers。
修复命令
使用 zero explain 获取人类可读和 JSON 格式的解释:
zero explain TAR002
zero explain --json TAR002使用修复计划模式查看规范修复方案,而不会修改文件:
zero fix --plan --json --target linux-musl-x64 conformance/native/fail/std-fs-target-unsupported.0