编译器团队于 2019-11-14 举行了每周的分类会议。您可以在 compiler-team 仓库中找到会议记录。每周,我们都会有团队的总体公告,以及来自两个编译器团队工作组的签到。
公告
-
请求协助:“Rustc 崩溃 (NoSolution):无法证明 Binder(投影汤)” #65581
-
请求协助:“Rust 1.38 回归未完全分类” #65577
-
请求协助:“在 Windows + LLVM 9 上使用 target-cpu=znver1 (AMD Ryzen 1000/2000 系列) 出现误编译。” #63959
-
基础设施团队已经完成了对 GitHub Actions 的评估,我们正在切换!
- 这将对 CI 构建时间产生重大而积极的影响。
工作组同步
本周我们听取了三个工作组的报告,因为我们在上次会议中超时了。
wg-polonius
-
在完整性目标方面取得了很大进展,移动/初始化错误和子集错误都接近完成。
-
修复了 rustc 测试套件中的最后一个失败。
- 仍然和上次一样有 2 个 OOM,我们还没有太多时间去研究它们。
-
使诊断输出在更多情况下与 NLL 匹配。
-
通过为我们的原子选择更好的名称,在我们的术语中进行了一些清理,希望使该过程更清晰,并且计划在这里进行更多工作。
- “origin” 而不是 “region”
- “path” 而不是 “MovePath”
-
现在有一本 polonius 书了!目前它很稀疏,但更多的文档工作正在进行中,并且已经规划好了。
-
关于为分析提供更多流敏感精度的规则的探索和原型也取得了很大进展。
-
还进行了一些重构,以及相当多的性能工作。由于后者可能会干扰其他工作,反之亦然,因此我们决定首先专注于完整性,然后在实现完整性之后,重新适应并进行优化工作。
-
@nikomatsakis 在 RustBelt Rust 上做了关于 Polonius 的演示。幻灯片
-
我们希望在 11 月底举办一个“polonius 工作周”,以共同将正在进行的工作推向完成。
wg-self-profile
-
我们几乎完成了我们长期以来的 MVP 目标!
- @simulacrum 做了一些出色的工作来完善与 perf.rlo 的集成
- 我们已经为我们知道的所有应该被跟踪的事件添加了跟踪,除了 trait 选择。
- 我们真的需要一些关于什么对跟踪有帮助的意见!
-
@mw 一直在研究我们记录事件的二进制格式的一些更改。
- 新格式更紧凑,因此会生成更小的跟踪文件,并有望减少运行时开销。
- 新格式也更适合记录查询键,这是一个高度要求的功能。
-
@wesleywiser 添加了一些 crate 级别的文档,以便更容易地进入代码。
-
@wesleywiser 还添加了代码来记录进程 ID、启动时间和跟踪文件的参数,我们已经开始使用它了。
-
@andjo403 一直在努力提交大量优秀的 PR!
- 我们现在有一个专门用于直接生成火焰图的工具,因此您不必再使用 Perl 脚本了。
- 一些内部重构使得添加新工具更容易。
- 在 Chromium 开发工具导出器上做了大量工作
- 新选项可以折叠不相交的线程,因此它更易于管理
- 新选项可以过滤掉可配置阈值下的小事件(对于非常大的编译是必需的)
- 您现在可以在同一个导出文件中进行多次 crate 编译。这类似于 cargo build -Z timings 可以做的事情,但更加详细。
wg-rls-2.0
-
正在进行将 rust-analyzer 的核心拆分为 crate 的工作。
-
已实现查找用法。
-
宏扩展现在可以将源范围映射到扩展范围,因此跳转到定义可以正确地进入宏调用内部。
-
更多关于 chalk 和类型推断的工作,特别是对闭包的支持。
-
正在进行关于 rustc、rls 和 rust-analyzer 的总体规划的讨论。