九月项目目标更新

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

Rust 项目目前正致力于实现 26 个项目目标,其中 3 个被指定为 旗舰目标。本文精选了这些目标进展的更新(或在某些情况下,缺乏进展)。任何特定目标的完整详细信息都可以在其相关的 rust-project-goals 仓库中的跟踪 issue 中找到。

旗舰目标

准备 Rust 2024 版本(跟踪于 #117

Rust 2024 版本预计将于 11 月 28 日在 Nightly 版本中稳定化,并于 2025 年 2 月 20 日作为 Rust v1.85 的一部分进入稳定版。

过去一个月,所有“lang 团队优先项”都已落地,并已完全准备好发布,包括迁移和 Nightly 版本版本指南 中的章节。

总体而言

请记住,有些目前为该版本跟踪的项目将无法及时完成。这没关系,我们仍计划按时发布该版本,不包含这些项目。

Async Rust 对等(跟踪于 #105

我们在关键特性方面总体上按计划进行。

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

此外,异步函数的动态分发实验性异步 Drop 工作都取得了实现进展。Async WG 的重组尚未取得进展。

在跟踪 issue 中阅读完整详情。

稳定化 Rust for Linux 所需的特性(跟踪于 #116

我们已稳定化扩展的 offset_of 语法同意在常量中稳定化指向静态项的指针。感谢 @dingxiangfei2009 推动这些工作向前发展。💜

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

RFL 在 Rust CI 上的集成已实现,但仍在等待文档化的策略。首次中断已在 #129416 中检测到(并修复)。这是机制按预期工作,但更好地定义发生中断时应如何处理也很有用。

精选更新

开始解决阻碍 cargo-semver-checks 合并到 cargo 的阻塞项(跟踪于 #104

@obi1kenobi 一直在为实现在其项目中的 manifest lint 检查奠定基础。他们已建立测试 CLI 调用内部如何解释的能力,现在可以快照给定工作区上任何 CLI 调用的输出。他们还设计了 CLI 的扩展和必要的 Trustfall schema 更改以支持 manifest lint 检查。截至最新更新,他们有一个可工作的 manifest 查询原型,这使得 SemVer lint 检查成为可能,例如检测版本之间意外移除的特性。这项工作没有任何阻塞项,虽然目前没有立即的贡献机会,但他们表示在未来的更新中会有一些。

暴露用于自动微分和 GPU 卸载的实验性 LLVM 特性(跟踪于 #109

@ZuseZ4 一直专注于 Rust 中的自动微分,其前两个关于 rustc 前端和后端的上游 PR 已合并,第三个涵盖 rustc_codegen_llvm 更改的 PR 目前正在审查中。他们特别自豪能从一位 Rust 开发者那里为一个 Enzyme 核心问题获得详细的 LLVM-IR 重现器,这将有助于调试。在 GPU 方面,@ZuseZ4 正在利用最近 rustc 中对 LLVM 的更新,这些更新使得更多的 GPU/卸载工作成为可能。@ZuseZ4 还有一篇关于“当 unsafe 代码变慢时 - Rust 中的自动微分”的演讲被即将召开的 LLVM 开发者会议接受,他们将在会上展示 Rust-Enzyme 与 C++ Enzyme 前端的基准测试和分析。

扩展 pubgrub 以匹配 cargo 的依赖解析(跟踪于 #110

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

优化 Clippy 和 lint 检查

@blyxyas 一直致力于改进 Rust 的 lint 检查工具 Clippy,重点关注性能。他们已完成一项中等规模的目标,即在更多地方使用 ControlFlow,并将一个与性能相关的 issue 集成到其项目中。一个性能相关的 PR 也已合并,他们正在重做基准测试工具 (benchv2) 以帮助正在进行的努力。主要重点一直在解决 rust-lang/rust#125116,经过一些工作,现在该 issue 所有状态都为绿色。展望未来,他们正致力于将 declare_clippy_lint 宏迁移到 macro_rules 实现,并且有一个带有性能项目标签的开放提案级别 issue。目前他们的工作没有阻塞项。

已完成目标

以下目标已完成

停滞或无人负责的目标

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

有一个目标仍在等待负责人

结论

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

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