本文承接《Zig 中间表示》的内容,继续讨论 Zig 程序编译的下一步:从 ZIR 指令序列,经过语义分析的过程,生成 AIR 指令序列。 本文翻译自 Mitchell Hashimoto 关于 Zig 的系列博客第四篇: Zig Sema: ZIR => AIR (https://mitchellh.com/zig/sema) 语义分析是 Zig 程序编译的核心环节,且它包括了 Zig 语言独特的设计:编译时求值。不同于其他语言常常需要使用额外的语法来定义和计算类型(泛型...| 夜天之书
本文承接《Zig 词法分析和语法解析》的内容,继续讨论 Zig 程序编译的下一步:从抽象语法树(AST)中生成中间表示(IR)。 本文翻译自 Mitchell Hashimoto 关于 Zig 的系列博客第三篇: Zig AstGen: AST => ZIR (https://mitchellh.com/zig/astgen) 翻译本文的过程中,我越来越回想起自己使用 Perl 6 做编译实习作业的时候。通过 Perl 6 内嵌的 Grammar 语法,我基本把词法分析和语法分析的内容给快速...| 夜天之书
Zig 语言是近几年来逐渐声名鹊起的一个新编程语言,也是数目稀少的系统编程语言家族中的一个新成员。它由 Andrew Kelley 于 2015 年开始创造,至今已经开发了八个年头,但是仍然还未发布 1.0 版本。 不过,已经有不少新锐项目选择使用 Zig 开发,例如 JavaScript 运行时和完整开发套件 bun 和分布式金融数据库 tigerbeetle 等。 Hashicorp 的创始人 Mitchell Hashimoto 也在前年卸任 CEO 成为 I...| 夜天之书
昨天的文章里,我介绍了 Async Rust 当前的实现以及一个实现 Async Runtime 需要了解的概念和现有的一些实践。 文章发出后,有评论称 Async Rust 创造性工作,没有可借鉴的经验。诚然,Rust 系统编程语言的定位就决定了它与其他有运行时的语言在设计时存在巨大的不同,同类语言 C 和 C++ 在异步编程方面,受限于语言的历史包袱,相关的支持往往以三方库而不是语言级的支持出现...| 夜天之书
译序 我在此前的多篇文章中讨论了商业开源的话题: 《企业开源的软件协议模型实践》 《企业实践开源的动机》 《商业源码协议为何得到 HashiCorp 等企业的垂青?》 《企业如何实践开源协同》 《中国不缺好的开源开发者》“商业探索与可持续”一节 《开源不是商业模式》 《诱导转向的伪开源战略》 《免费增值的商业模式》 这些讨论当中观点的源头,除了我在商业开源...| 夜天之书