学习工作组(WG-Learning)的更新
在我们十月份的上一篇文章中,我们概述了学习工作组是什么以及我们在做什么。自那篇文章以来,我们取得了很大的进展,并且还召开了一次会议来决定下一步的工作。所以让我们深入了解...
已完成的工作
我们之前提到过,我们正在根据“编译器讲座系列”视频制作rustc-dev-guide 的章节。目标是努力制作对初学者友好的指南章节,并为探索和修改编译器奠定良好的基础。
最近,我们合并了 @Karrq
撰写的关于 salsa
的章节。salsa
是一个使增量计算更容易的 crate。虽然它本身并未在 rustc
中使用,但其灵感很大程度上来源于 rustc
,并且它被 rust-analyzer
使用。
我们还共同编写了一章关于 ty::Ty
以及 rustc 内部表示类型的方式。您可以在此处找到该 PR。几个月来,这项工作一直是一个巨大的努力,我们很高兴能将这一新章节纳入指南中。
下一步是什么?
我们刚刚举行了一次规划会议,讨论下一步的工作。指南存在一些长期存在的空白和不足之处,我们希望加以解决。
具体来说,学习工作组决定接下来要实现以下目标
- 撰写概述章节
- 收集关于单态化(monomorphization)和 LLVM 章节的原始资料
概述章节
大型软件系统面临的挑战之一是理解各个部分如何协同工作。我们在 rustc-dev-guide 中也遇到了这个问题;章节深入探讨了编译器的某个部分,但很难全面了解从词法分析到链接期间对代码所做的所有工作。
我们希望通过创建一个概述章节来弥补这个问题,该章节将从宏观层面逐步讲解从编译器开始到结束的一些示例。我们计划将此章节放在指南的开头(第二部分),以便引导读者了解他们在后续章节中阅读的是编译过程的哪个部分。
单态化(Monomorphization)、代码生成(Codegen)、LLVM
指南目前最大的空白之一是 MIR 生成后对代码所做的处理。我们有关于此之前几乎所有事情的章节(尽管许多章节相当简略),但 MIR 生成、借用检查和优化之后的内容几乎没有。
特别是,在 MIR 优化之后,我们需要对其进行单态化(monomorphize),从中生成 LLVM IR,调用 LLVM 生成可执行代码,然后将所有内容链接起来形成最终的二进制对象。
学习工作组将致力于收集信息,以便撰写关于这些主题的章节。
参与其中
您觉得其中任何内容有趣吗?我们非常欢迎您的加入!您可以在 Zulip 的 t-compiler/wg-rustc-dev-guide
流中找到学习工作组。请随时前来与我们联系。