Rust 项目目前正致力于实现 26 个项目目标,其中 3 个被设计为 旗舰目标。本文提供了我们在实现这些目标方面(或在某些情况下,未能实现)的精选更新。任何特定目标的完整详细信息都可以在其关联的 rust-project-goals 存储库上的跟踪 issue 中找到。
旗舰目标
异步闭包稳定化已获得批准,尽管稳定化尚未完成!lang 团队最终选择稳定 trait 名称 AsyncFn
,而不是最初提出的基于关键字的 async Fn
语法。此决定是在对 Flavors RFC 进行讨论后做出的,该讨论清楚地表明,我们并未就 async Trait
关键字是否会更普遍地使用达成共识。鉴于此,团队认为 AsyncFn
语法是一个很好的“下一步”。如果我们最终采用某种形式的 async Trait
关键字语法,那么 AsyncFn
可以成为一个 trait 别名。
关于返回类型符号,返回类型符号的扩展以覆盖 Self::foo(..): Send 已合并,我们合并了 #132047,它修复了一个已知的 ICE。稳定化 PR 现在已解除阻塞。
在异步 drop 审查或团队重组方面没有重大进展。
本月我们在清单上取得了稳步进展。dingxiangfei2009 的 PR 将 derive(SmartPointer)
重命名为 derive(CoercePointee)
已合并,他开始将 RFL 代码库移植到使用新名称。Alice Ryhl 打开了 RFC #3716,提出了一种管理更改 ABI 的编译器标志的方法,并且已经进行了讨论(以及一些实现工作)。最后,我们合并了 PR #119364,默认使 asm-goto 中的目标块安全;这是直接基于 RFL 的经验,该经验表明[安全会更有用]。我们仍在努力完成对来自 RFL 要求的 asm-goto 的另一个扩展,允许 const
支持嵌入指针。最后,我们准备了 参考 PR #1610,描述了允许 常量中的静态指针 的更改,该更改于上个月稳定化。
Rust 2024 现在已进入 nightly beta 版,预计将于 2025-02-20 作为 Rust 1.85 的一部分稳定化。它有很多改进,使该语言更加一致和符合人体工程学,进一步巩固了我们对安全的不懈承诺,并将为期待已久的功能(如 gen blocks、let chains 和 never 类型 !
)打开大门。有关更改的更多信息,请参阅 nightly Edition 指南。征集测试的博客文章包含更多信息和有关如何亲自尝试的说明。
已更新的目标
min_generic_const_args
现在作为一个特性门存在,但没有任何功能,只有一些门控重构,但应该不久就会有其背后的实际功能。- 删除了
ty::Const
上所有eval_x
方法的重构已完成,从而可以正确实现常量的规范化。
- 发布了 10 月更新。
- 创建了更自动化的基础设施来准备 10 月更新,利用 LLM 将更新总结成一两个句子,以形成简洁的表格。
- 对 cargo 清单进行 lint 的支持现已合并,从而可以捕获由清单(
Cargo.toml
)更改而不是仅由源代码更改引起的损坏。此类损坏的一个示例是删除了包功能:任何启用了已删除功能的 crate 都将不再构建。 - 部分模式设计和 lint 中类型信息的实现,支持创建破坏性更改 lint 并提高类型相关破坏性更改子集的诊断质量。
- 解决了阻止跨 crate 检查的多团队问题,编译器团队 MCP 已合并,并讨论并同意了 rustdoc 的改进。
- 常量 trait 的 desugar 方式已完全重组,使设计更易于理解并且对当前单元测试更健壮。
- 该特性的重要开发和清理工作已经完成,合并了多个 pull request,并且仍有两个 pull request 处于打开状态,这使该特性更接近能够在标准库上进行自我测试并更接近稳定化。
- @joshtriplett 打开了 https://github.com/rust-lang/rfcs/pull/3680。@rust-lang/lang 团队尚未真正讨论或就该 RFC 达成决定。
- @spastorino 开始了原型实现工作。
- 沙盒构建脚本的探索已完成。我们不太可能在明年继续这项工作,但该研究可能在其他领域很有用,例如可能向 WASI 添加 POSIX 进程支持,或在 Cargo 中添加声明性系统依赖项配置。
- 自动微分中间/后端的设计已重新实现,将要上游的剩余 LoC 从 2.5k 减少到 1.1k,分为两个 PR(1 和 2),它们收到了初步反馈,预计将在 12 月初合并。
- 使用
std::autodiff
的第一篇论文的预印本 可在 Arxiv 上获得,代码可在 ChemAI-Lab/molpipx 上获得,这表明与 JAX 相比,Rust 中的编译时间明显更快。
- PubGrub 的核心数据结构已作为单独的
version-ranges
crate 发布,使多个项目可以共享此核心抽象,并从改进中受益,而无需等待项目的其余部分。 - 这是发布 PubGrub crate 的新
0.3.0
版本所需的许多步骤之一。
- Rustdoc 现在将在搜索结果页面中显示类型签名,并且 boxing 转换的行为更像 Hoogle 的行为。
- 已对匹配行为进行了改进,以适应用户期望。
- 我们在 https://github.com/rust-lang/rust/pull/130654 中再次稳定了
-Znext-solver=coherence
。看起来这次稳定化实际上将会通过。 - 我们目前正在重构跟踪当前“类型模式”的方式,努力修复 trait-system-refactoring#106。已经开始了一个 FCP,以清理我们在证明 trait 目标时合并候选项的方式。
- rust-lang/rust#125116 已合并,标志着该目标的一半正式完成。
- 关于 在 CI 上使用
cargo cache
的讨论开始成形。 - rust-lang/rust#125116 的结果可能会受到质疑。影响可能没有预期的那么大,即使在 Clippy 上也是如此。
- 我们一直在尝试使用
rustc_driver
作为静态库而不是动态链接来使用 Clippy。这将使我们既可以检查rustc_driver
作为共享库的性能影响,**又**可以对 Clippy 进行分析,而无需在dl_*
调用之间进行过滤。
- 发布了never patterns RFC。
- 关于 RFC 的反馈表明,“可以省略哪些分支”的问题并不像希望的那样正交,因此重点将转移到该问题上。
- PR https://github.com/rust-lang/crates.io/pull/9423 已合并。
- 前端功能的工作正在进行中。
- Amanda 上个月在 EuroRust 上关于 polonius 的演讲现在也 可在 YouTube 上观看。
- 实现工作仍在继续,主要在一个分支上进行。主要进展包括一个新的调试器,它加快了进度。还有大约 70 个测试失败需要分析。
- rust-lang/cargo#14670 和 rust-lang/cargo#14749 已发布并合并。
- rust-lang/cargo#14792 已发布。
- 仍在通过本地测试和编译器代码分析来确定死锁的原因。
- 需要帮助:尝试重现 issue 列表 中描述的死锁。
- Rust 基金会与 AWS 之间的一个 新的合作伙伴关系 将有助于资助这项工作。验证挑战在 verify-rust-std fork 中现在为完成这些挑战的人提供经济奖励。
- 需要帮助:需要帮助来编写更多合同、集成新工具、审查 pull requests 或参与 存储库讨论。
- 我们决定关闭此目标,因为我们没有取得稳步进展。我们正在评估 2025h1 轮目标中提出的内容。
未更新的目标
以下目标在过去一个月中没有收到更新