用途
该技能面向使用 Zig 语言的各类任务:编写新代码、理解语言概念、排查编译错误、构建跨版本应用,以及查阅 Zig 标准库与构建系统资料。它强调 Zig 的显式错误处理、显式分配器、编译期执行(comptime)与无隐式控制流等特性。
主要能力
版本感知文档:按版本提供参考资料(0.2.0 至 master),默认使用当前稳定版 0.15.2。references/latest/ 是指向当前稳定版的符号链接。文档按渐进加载组织,包括核心语言、控制流、函数与错误、内存管理、数组与切片、结构体方法、枚举与联合、指针与引用、编译期、C 互操作、构建系统、标准库内置、测试与质量、以及共享的 references/version-differences.md 迁移指南。
配方手册:包含 223 条来自 Zig BBQ Cookbook 的经测试配方,按主题分类,涵盖 fundamentals(19 条)、data-structures(20 条)、strings-text(14 条)、memory-allocators(6 条)、comptime-metaprogramming(24 条)、structs-objects(22 条)、functions(11 条)、files-io(19 条)、networking(18 条)、concurrency(8 条)、build-system(18 条)、testing-debugging(14 条)、c-interop(7 条)、data-encoding(9 条)、iterators(8 条)、webassembly(6 条)。每条包含 Problem、Solution、Discussion 部分及完整可编译代码,针对 Zig 0.15.2 验证。
模板与示例:assets/templates/ 提供基础程序、build.zig、测试文件、CLI 应用、库模块、C 互操作模块等起点;examples/ 提供完整可运行示例,包括字符串处理、内存管理、错误处理、C FFI、comptime 编程与多文件项目。
自动化脚本:Python 工具包括 get_references.py(检测版本并返回正确参考路径)、detect_version.py(独立版本检测)、query_recipes.py(按主题、标签、难度或关键字检索配方)、code_generator.py(从 JSON 规格生成 Zig 代码)。
使用方式
编写新代码:从模板开始,默认 Zig 0.15.2,显式处理错误(try/catch/errdefer),传递分配器而非使用全局状态,同时编写 test 块,为公开 API 添加 /// 文档注释。
调试编译错误:针对 comptime 类型解析可用 @TypeOf() 检查或显式转换;分配器生命周期问题检查 defer 清理顺序与 errdefer;可选值解包优先用 orelse 或 if,仅在确定时用 .?。可使用 std.debug.print()、-Doptimize=Debug 和 zig test。
版本检测流程:先检查用户显式说明、CLAUDE.md、build.zig.zon 的 minimum_zig_version;推荐运行 python scripts/get_references.py --json 自动检测;也可手动扫描 build.zig 的 API 特征或 .zig 语法标记;不明确时询问用户;最终默认 0.15.2。
加载版本参考:
REF_PATH=$(python scripts/get_references.py)
cat $REF_PATH/core-language.md
cat references/version-differences.md
查询配方:
python scripts/query_recipes.py --list-topics
python scripts/query_recipes.py --topic memory-allocators
python scripts/query_recipes.py --tag hashmap
python scripts/query_recipes.py --search "error handling"
python scripts/query_recipes.py --recipe 1.1
适用场景
- 学习 Zig 基础(按顺序阅读 core-language、control-flow、functions-errors、quick-reference)
- 解决具体问题(错误处理、内存分配器、数据结构、标准库查询、C 互操作、构建系统)
- 进阶主题(comptime、高级内存与编译期模式、测试与质量)
- 版本迁移(参考 version-differences.md 的迁移指南)
- 排查编译错误与解释 Zig 概念
限制与注意事项
需注意主要版本破坏性变更:0.11+ 移除 async/await 并改用新 build.zig API(std.Build、b.path());0.13+ 使用现代 for 循环语法 for (items, 0..) |item, i|;0.12 及更早使用不同 for 循环语法;0.11 之前使用旧 build API(std.build.Builder)与不同错误集。跨版本代码建议使用特性检测(如 @hasDecl(std, "Build"))而非版本判断,并在注释中标注目标版本。当指定版本不可用时,脚本会回退到最接近版本并给出警告。官方文本、定价与具体平台支持信息暂未提供。