WG-学习小组的更新

2019年12月20日 · mark-i-m 代表 Rustc 开发指南工作组

WG-学习小组的更新

在我们十月份的上一篇文章中,我们概述了学习 WG 是什么以及我们在做什么。自那篇文章以来,我们取得了很大进展,并且我们还举行了一次会议,以决定下一步的工作。那么,让我们深入了解一下...

已完成的工作

我们之前提到过,我们正在从“编译器讲座系列”视频中制作 rustc-dev-guide 章节。目标是尝试制作对初学者来说平易近人的指南章节,并为探索和修改编译器奠定良好的基础。

最近,我们合并了 @Karrq 撰写的关于 salsa章节salsa 是一个使增量计算更容易的 crate。虽然它本身没有在 rustc 中使用,但它受到了 rustc 的很大启发,并且被 rust-analyzer 使用。

我们还集体致力于一个关于 ty::Ty 以及 rustc 内部表示类型的方式的章节。您可以在 这里 找到该 PR。这几个月以来,我们为此付出了巨大的努力,我们很高兴在指南中加入这个新章节。

下一步是什么?

我们刚刚举行了一次计划会议,讨论下一步的工作。该指南存在一些长期存在的漏洞和缺点,我们希望解决这些问题。

具体来说,学习 WG 决定接下来要追求以下目标

  • 编写概述章节
  • 收集关于单态化和 LLVM 章节的源材料

概述章节

大型软件系统面临的挑战之一是理解所有内容如何组合在一起。我们在 rustc-dev-guide 中看到了这个问题;这些章节深入探讨了编译器的单个部分,但是很难很好地了解在词法分析和链接之间,一段代码发生了什么。

我们希望通过创建一个概述章节来解决这个问题,该章节将从编译器的开头到编译器的结尾,以高级别的形式介绍一些示例。我们计划将本章放在指南(第 2 部分)的开头,以便引导读者了解他们在后续章节中阅读的编译部分。

单态化、代码生成、LLVM

该指南目前最大的差距之一是在 MIR 生成后代码会发生什么。我们有关于之前发生的所有事情的章节(尽管其中许多章节非常简短),但是在 MIR 生成、借用检查和优化之后,我们几乎没有任何内容。

特别是,在 MIR 优化之后,我们需要单态化它,从中生成 LLVM IR,调用 LLVM 以生成可执行代码,然后将所有内容链接以形成最终的二进制对象。

学习 WG 将致力于收集信息以编写关于这些主题的章节。

参与进来

这些内容中是否有任何内容让您感兴趣?我们很乐意您加入我们!您可以在 Zulip 的 t-compiler/wg-rustc-dev-guide 流中找到学习 WG。欢迎随时加入并 ping 我们。