Rust编程语言究竟是如何实现的?
如果您在github rust lang 编译器存储库中检查语言百分比,它会说rust lang 编译器的97.6% 是用 rust 编写的。那么这究竟是如何工作的呢?如何创建自己编写的编程语言(我认为这与编译器有关,因为它是阅读代码的人,不是吗?)。
回答
这称为自托管或引导。基本思路是这样的:
- 使用您选择的其他编程语言为一小部分 Rust 编写初始编译器。您现在拥有编译器 C0。
- 使用你有编译器的 Rust 子集,完全用 Rust 重写 C0 的源代码。使用编译器 C0 编译该程序以形成编译器 C1。
- 通过向您刚刚编写的编译器添加代码来正确解析和实现这些功能,从而向 Rust 添加功能。使用 C1 编译该 Rust 程序以形成编译器 C2。
通过根据需要多次重复步骤 (3),您可以逐渐向 Rust 语言添加越来越多的功能,而 Rust 编译器始终是用 Rust 本身编写的。
有一个名为Reflections on Trusting Trust的著名演讲,它讨论了这个过程是如何运作的,以及如何使用这个过程来做邪恶的事情。