在过去的一周里,许多新的 Rust “gccrs” 代码被合并到 GCC 15 编译器代码库中,这是这个开源 Rust 前端向前迈出的一大步。另一大批补丁已经与 for 循环合并,现在与其他功能一起工作。
Embecosm 的 Arthur Cohen 合并了计划中的最后一批 gccrs 补丁,用于将 gccrs 开发代码与上游 GCC Git 状态同步。展望未来,补丁流失率有望会更小,并且每周一次。
在最新一批的 100+ 补丁中,有类型系统修复、特征求解器的增强以及对 for 循环的支持。是的,对于 gccrs 来说,在 GNU 编译器集合范围内实现 for 循环支持是一个令人惊讶的挑战,但现在它正在工作。还有其他代码生成改进等。
Cohen 昨天在 GCC 邮件列表上发表了评论:
“这是我们的最后一批拆分补丁集,旨在将上游与我们的开发存储库同步。两个存储库现在是相同的,今天推送的最新补丁对应于我们这边本周末合并的最新拉取请求。今后,我将每周一将这些补丁集上行,以保持两个存储库的同步。再次感谢您花时间测试我们的提交并审查代码。
这一系列的提交侧重于类型系统修复和添加多个内置 derive 宏,所有这些都是编译 Linux 内核中存在的 ‘core’ crate 和 Rust 代码所必需的。我们的 trait 求解器也变得更好了,Philip Herron 在过去几周里修复了我们在“核心”中遇到的大量复杂代码问题。
我们现在还可以处理 for 循环,这需要对 AST、类型系统和扩展过程进行大量修改。我们的网站上有博客文章,详细介绍了 for 循环中的一些复杂性,以及为什么花了这么长时间才将它们放入编译器中。
我们还改进了枚举的代码生成,以便更紧密地匹配 rustc 生成的代码,并开始添加对不透明类型的处理,这是 ‘core’ 和 Rust-for-Linux 的另一个必需功能。
最后,我们添加了对问号运算符的支持,这也需要对我们的 AST 和类型系统进行多次更改,并公布了它有趣的特征求解器错误。
接下来几周的工作将集中在推进我们的里程碑上,以便为 15.1 准备好尽可能多的功能,但最重要的是,我们将专注于将组件所需的最低 Rust 版本降低到 Rust 1.49。这将有助于让 gccrs 在所有尝试编译的系统上进行编译,并且还将使 gccrs 在变得更加成熟时能够编译自己的依赖项。
这些最新的 Rust 前端改进在 GCC 15 (GCC 15.1) 稳定版本发布之前就在几周后发布。
转自 Latest Batch Of Rust Compiler Updates For GCC 15.1 Lands Support For… For Loops – Phoronix