我为什么要用 C 编写 Rust 编译器?

主要观点:

  • 作者近期活动减少,原因包括生活事件、工作责任增加和失去开源热情,同时正在进行一个占用大量时间的项目。
  • 作者正在用纯 C 编写一个 Rust 编译器 Dozer,旨在实现从 C 开始引导 Rust 编译器,解决 Rust 编译器自身的引导问题。
  • 介绍了引导构建项目,从简单的二进制种子逐步编译出复杂的系统,Rust 在其中出现较晚,作者希望有一个从 C 引导的 Rust 编译器。
  • 作者正在为 Dozer 工作两个月,已完成词法分析器和部分解析器,计划逐步使其能编译基本的libclibcorerustc等,并创建cargo等效物等。

关键信息:

  • Rust 编译器rustc自身需用编译器编译,最初由 OCaml 编写,OCaml 编译器又由 Guile(Scheme 变体)编写,最终归结到 C 语言。
  • Dozer 用纯 C 编写,目前已完成部分工作,计划逐步实现编译libc等并创建相关工具。
  • 引导构建项目从 512 字节二进制种子逐步编译出 Linux 和 GCC 等。

重要细节:

  • 作者提到rustc代码质量高,类似于 Linux 内核和 Quake III 源代码。
  • Dozer 不使用 C++、flexyaccMakefile等,使用 QBE 作为后端。
  • 作者计划编译rustcCranelift后端,因不具备 C++,不能编译 LLVM。
  • 要找出rustc中自动生成的源代码并去除,以符合引导项目规则。
阅读 20
0 条评论