Zig 0.17 重构构建系统,将单体 Build Runner 拆分为 Maker 与 configurer 两个进程:前者负责任务调度,后者执行 build.zig 并序列化构建图。新增配置缓存与污染检测,引入 findProgramLazy、addPassthruArgs 等 API 以避免缓存失效;缓存改为二进制格式,并提供 zig cache-cat 查看工具。同时剥离编译器内嵌的网络与归档功能,推出官方 Build Server Protocol 供 IDE 使用。
Zig 0.17.0 发布,历时5个月,206位贡献者提交925次,重点调整构建系统。作者认为构建链路比新语法更值得关注,编译、测试、打包和CI稳定性才是落地痛点。底层工具链升级风险高,不建议现有项目立即切换,应先开独立流水线验证并保留回滚方案。即使不写Zig,其重视构建体验也提醒团队:构建是交付系统的一部分。
异步Rust需要运行时,这是并发编程的固有代价,调度器必须存在。Rust将运行时作为crate而非内置,以保持嵌入式和FFI能力,但导致Tokio默认化、Send约束扩散和生态分裂。作者主张调度器应像Zig那样作为参数显式传递,从而可追踪阻塞、避免函数着色并实现运行时无关。
本文剖析 Zig 0.16.0 的构建与编译管线:`zig build` 先编译生成独立的 build 运行器,执行 build.zig 构建 Step DAG,再拓扑排序并发调度;核心节点 Step.Compile 拼装 `zig build-exe` 命令并派生子进程。Zig 将 Clang 与 LLD 静态内嵌于单体二进制,通过 C ABI 桥接直接编译 C 文件,并与 Zig 目标文件统一链接。
Zig 构建系统用 build.zig 普通 Zig 程序替代 DSL,将构建建模为 Step 有向无环图,分配置期与执行期。核心是 Module 与 Artifact 解耦:Module 管理目标、优化、宏、包含路径等编译上下文,Artifact 负责链接产物,实现配置复用。LazyPath 延迟解析生成文件依赖,linkLibrary 自动注入头文件树,addTranslateC、addConfigHeader 等 API 统一整合 C/C++ 工具链。
Zig构建系统将构建脚本作为普通Zig程序,核心是声明式强类型依赖图。基础节点为Step,通过dependOn组成DAG。关键设计是Module与Artifact解耦:编译配置托管给Module,产物由Step.Compile生成,提升复用性。构建分配置期与执行期,文件流动依赖LazyPath惰性抽象。链接C库时自动注入头文件路径,配合addTranslateC实现声明与实现分离。
作者在Zigtoberfest演讲中提出Zig学习三阶段:新手应把问题视为目标系统的操作序列,而非依赖组合;中级用户应掌控构建、效率与内存等设计;高级用户应完成一个热爱的项目。掌握系统思维不仅提升依赖使用能力,也有助于驾驭LLM。
Bun creator Jarred Sumner recently announced that Bun, the JavaScript/TypeScript runtime, bundler and package manager has been rewritten from Zig to Rust. The rewrite seeks to eliminate recurrent...
本文汇总了四篇Rust相关技术文章:一篇对比从Rust转向Zig的体验,涉及IDE、内存管理等差异;一篇介绍用Rust编写的蓝牙键鼠工具Bluekey;一篇讲解Rust枚举宏库strum的用法;一篇介绍tokio_with_wasm,让异步Rust代码在浏览器和原生环境运行。
AI降低了编程学习成本,使开发者不再受限于语言熟悉度,转而追求性能与极致,因此Rust、Zig等硬核语言逆势增长。AI辅助项目如Cloudflare和Vercel也采用Zig,这抬高了程序员的下限,让他们敢于挑战底层技术,追求更高目标。
Zig 0.16.0构建系统通过build.zig生成DAG,执行zig build-exe命令。C源码经CObject队列由内嵌Clang编译,Zig源码经AST、ZIR、AIR及双后端生成目标文件。addTranslateC显式转译C头文件,全局缓存哈希管理产物,最终链接器合并.o文件为可执行文件。
Claude Code将底层运行时从Zig版Bun换成Rust版,11天完成近百万行代码迁移,启动快10%。此举引发开源社区不满,因Zig贡献者被忽视,且Rust版unsafe代码未减。背后是Anthropic收购Bun,AI重写虽高效,但供应链安全、版权模糊及稳定性问题令开发者担忧。
Roc编译器团队耗时487天,将30万行Rust代码人工重写为Zig,未使用AI辅助。重写原因包括构建速度、内存控制、生态适配及unsafe代码占比过高。重写后内存损坏bug从21个降至10个,增量编译速度提升约100倍。文章强调语言选择无绝对优劣,取决于具体工程需求。
Roc团队耗时487天将30万行Rust编译器重写为Zig,新增热加载和零分配模式匹配等特性。新编译器在增量构建速度和内存控制上表现优异,构建体积减半。选择Zig是因为其构建速度快、内存管理灵活。新版本计划于今年晚些时候发布,标志着Roc语言的成熟。
Zig创始人批评Anthropic将Bun从Zig迁移至Rust,称其为商业炒作。Claude Code的Token消耗显著高于OpenCode,显示出成本差异。赤道太平洋海表温度异常,警示全球变暖加剧极端气候风险。Grok工具上传用户敏感文件至xAI服务器,引发隐私担忧。苹果新SpeechAnalyzer API在语音转录中表现优于Whisper,成为最佳选择。洛杉矶警察局因隐私问题终止与监控公司Flock的合同。
Zig语言创始人Andrew Kelley对Bun重写Rust的回应中,回顾了与Bun创始人Jarred Sumner的五年关系,指出Bun从开源贡献者转变为追求风投的管理者,导致代码质量下降。他质疑Bun官方博客的技术论证,认为缺乏沟通和期望错位是关系破裂的根本原因,感到如释重负,认为双方终于不再绑在一起。
本文探讨了Bun项目从Zig重写为Rust的原因,分析了团队管理、代码质量和技术债务等问题。Zig创始人指出,Jarred在创业过程中忽视了团队沟通和管理,导致Bun代码质量下降,最终选择重写为Rust。文章揭示了编程语言选择背后的复杂利益关系,强调了技术与管理之间的矛盾。
Bun项目从Zig迁移到Rust,创始人Jarred Sumner详细介绍了这一过程。重写耗时11天,使用64个Claude实例生成超过100万行Rust代码,解决了内存管理问题。选择Rust是因为其安全性,避免了Zig中的内存泄漏。重写后,Bun在内存占用和性能上显著提升,并通过严格审查机制确保代码质量。
Bun项目在11天内将50万行代码从Zig重写为Rust,显著提升了稳定性和性能,内存泄漏归零,体积缩小20%。这一过程利用AI工具,节省了大量人力成本,展示了软件工程的新常态。
Zig语言创始人Andrew Kelley拒绝AI生成代码,坚守独立与高质量。他认为Zig能超越C和Rust,提供更高效的底层控制。Zig的工具链简化了构建过程,且不依赖外部资源。Kelley选择非营利模式,拒绝大额投资,以保持自由与纯粹。Zig的1.0版本尚未发布,Kelley强调要确保其完美。
完成下面两步后,将自动完成登录并继续当前操作。