九月项目目标更新

2024年9月23日 · Niko Matsakis 代表 领导委员会

Rust 项目目前正在努力实现 26 个项目目标,其中 3 个被设计为 旗舰目标。这篇文章提供了我们朝着这些目标(或者在某些情况下,缺乏进展)取得的进展的精选更新。任何特定目标的完整详细信息都可以在其相关的 rust-project-goals 仓库的跟踪问题中找到。

旗舰目标

准备 Rust 2024 版本(在 #117 中跟踪)

Rust 2024 版本计划于 11 月 28 日在 Nightly 版本中稳定,并作为 Rust v1.85 的一部分于 2025 年 2 月 20 日发布。

在过去的一个月里,所有“语言团队优先事项”都已完成并完全准备好发布,包括迁移和 版本指南的 Nightly 版本中的章节

总体

请记住,目前正在为该版本跟踪的项目中会有一些最终无法实现。这没关系,我们仍然计划按时发布该版本,即使没有这些项目。

Async Rust 对等性(在 #105 中跟踪)

我们的主要功能总体上进展顺利

  1. 异步闭包的支持已在 Nightly 版本中提供,语言团队已达成初步共识,保留现有语法(书面理由和正式决定正在进行中)。我们还发布了 征求测试,到目前为止没有发现任何问题。
  2. 返回类型表示法的部分支持已在 Nightly 版本中提供,其余部分正在审查中。

此外,异步函数的动态调度实验性异步 drop 工作都取得了实现进展。Async WG 重组没有取得进展。

请阅读跟踪问题中的完整详细信息。

稳定 Rust for Linux 所需的功能(在 #116 中跟踪)

我们已经稳定了 扩展的 offset_of 语法,并且 同意稳定常量中的静态指针。感谢 @dingxiangfei2009 推动这些进展。💜

对于 任意 self 类型 v2派生智能 指针清理器支持的实现工作正在进行中。

Rust CI 上的 RFL 已实现,但仍在等待文档化的策略。第一个中断在 #129416 中被检测到(并已修复)。这是机制按预期工作,但更好地定义中断发生时该怎么做也很有用。

精选更新

开始解决 cargo-semver-checks 合并到 cargo 的障碍(在 #104 中跟踪)

@obi1kenobi 一直在为在其项目中启用清单检查奠定基础。他们已经设置了测试 CLI 调用如何在内部解释的能力,并且现在可以快照给定工作区上的任何 CLI 调用的输出。他们还设计了 CLI 的扩展和必要的 Trustfall 模式更改,以支持清单检查。截至最新的更新,他们有一个清单查询的工作原型,该原型可以启用 SemVer 检查,例如检测版本之间意外删除的功能。这项工作没有被任何事情阻止,虽然没有立即贡献的机会,但他们表示在未来的更新中会有一些机会。

公开用于自动微分和 GPU 卸载的实验性 LLVM 功能(在 #109 中跟踪)

@ZuseZ4 一直专注于 Rust 中的自动微分,他们用于 rustc 前端和后端的最初两个上游 PR 已合并,第三个 PR 涵盖了目前正在审查中的对 rustc_codegen_llvm 的更改。他们特别自豪于从 Rust 开发人员那里获得 Enzyme 核心问题的详细 LLVM-IR 复现器,这将有助于调试。在 GPU 方面,@ZuseZ4 正在利用最近对 rustc 的 LLVM 更新,这些更新支持更多的 GPU/卸载工作。@ZuseZ4 还接受了即将在 LLVM 开发会议上发表的题为“当不安全的代码很慢时 - Rust 中的自动微分”的演讲,他们将在会上展示基准测试和分析,比较 Rust-Enzyme 和 C++ Enzyme 前端。

扩展 pubgrub 以匹配 cargo 的依赖项解析(在 #110 中跟踪)

@Eh2406 实现了新的 PubGrub 解析器和现有的 Cargo 解析器接受 crates.io 上所有 crate 版本的解决方案的里程碑,其中涉及修复许多与可选依赖项相关的错误。在加速解析过程方面也取得了重大进展,新解析器的平均性能提高了 30% 以上,并且对现有 Cargo 解析器进行了重要更改以允许并行运行。他们还解决了一些现有解析器不接受某些记录的极端情况,并添加了循环依赖项的检查。最新的更新侧重于进一步的性能改进,新解析器现在需要大约 3 个小时来处理所有的 crates.io,而之前是 4.3 个小时,并且在验证非病态情况的锁文件方面提高了 27%。

优化 Clippy & 代码检查

@blyxyas 一直致力于改进 Rust 代码检查工具 Clippy,重点是性能。他们完成了一个中等规模的目标,在更多地方使用 ControlFlow,并将一个与性能相关的问题集成到他们的项目中。一个专注于性能的 PR 也已合并,并且他们正在重新制作他们的基准测试工具 (benchv2) 以帮助进行正在进行的工作。主要重点是解决 rust-lang/rust#125116,经过一些工作后,现在一切都正常了。展望未来,他们正在努力将 declare_clippy_lint 宏移动到 macro_rules 实现,并且有一个带有性能项目标签的开放提案级问题。目前他们的工作没有任何障碍。

已完成的目标

以下目标已完成

停滞或孤立的目标

有几个目标似乎停滞不前或未收到更新

一个目标仍在等待所有者

结论

这是我们 2024 年项目目标子集进展情况的简要总结。在 网站上有更多信息,包括每个目标的动机以及详细的状态更新。如果您想了解更多详细信息,请务必查看!您还可以订阅单个跟踪问题(或整个 rust-project-goals 存储库)以获取定期更新。

当前的目标集针对 2024 年下半年 (2024H2)。下个月,我们还预计将开始征求 2025 年上半年 (2025H1) 的目标。