随着 RFC #3672 的合并,Rust 项目为 2024 年下半年(2024H2)选定了 **26 个项目目标**。这是我们首次尝试运行 实验性新路线图流程;顺利的话,预计今后大约每六个月会运行一次该流程。在这些目标中,我们指定了三个作为我们的 **旗舰目标**,代表了我们最宏大且最具影响力的工作:(1)完成 Rust 2024 Edition 的准备工作;(2)使异步 Rust 的体验更接近于与同步 Rust 持平;以及(3)解决阻碍 Linux 内核基于稳定版 Rust 构建的最大障碍。随着时间推移,我们将定期发布关于这 3 个旗舰目标以及其他 23 个目标的进展更新。
Rust 的使命
所有选定的目标最终都是为了推动 Rust 的使命:**赋能每个人构建可靠、高效的软件**。Rust 针对那些优先考虑
- 可靠性和健壮性;
- 性能、内存使用和资源消耗;以及
- 长期维护和可扩展性。
我们认为,“三者中任意两点” 是衡量 Rust 作为有力竞争者或可能是最佳选择项目的合适启发式方法,我们选择部分目标也是为了帮助确保这一点。
为何选择这些特定的旗舰目标?
2024 Edition。 2024 年将是继 2015、2018 和 2021 年 Edition 之后的第四个 Rust Edition。与 2021 年 Edition 类似,2024 年 Edition 不是一次“重大的市场推广”,而是纠正 Rust 中一些小的人机工程学问题,使其总体上更容易使用。为 2024 年 Edition 计划的变更 包括 (1) 通过调整捕获行为来支持 trait 中的 -> impl Trait
和 async fn
;(2) 通过保留 gen
关键字,允许将来添加(async)生成器;以及 (3) 修改 !
类型的回退行为。该 计划 是在今年完成 2024 年特性开发;Edition 本身计划在 Rust v1.85 中发布(将于 2025 年 1 月 3 日发布到 beta,于 2025 年 2 月 20 日发布到 stable)。
异步。 2024 年,我们计划交付几个关键的异步 Rust 构建模块特性,最值得注意的是对 *异步闭包(async closures)* 和 *Send
界限(Send bounds)* 的支持。这是一个多年计划的一部分,旨在将“异步 Rust”的编写体验提升到与“同步 Rust”相同的质量水平。异步 Rust 应用广泛,2023 年 Rust 调查 中 52% 的受访者表示他们使用 Rust 构建服务器端或后端应用程序。
Rust for Linux。 Linux 内核中对 Rust 开发的实验性支持 是 Rust 的一个分水岭时刻,向世界表明 Rust 确实能够胜任各种低级系统应用程序。然而,目前的支持依赖于 一些不稳定特性,这阻碍了该努力超越实验状态。对于 2024H2,我们将努力弥合 阻碍支持的最大差距。
其他目标亮点
除了旗舰目标,路线图还定义了 其他 23 个目标。以下是其中一部分,供您大致了解:
- 稳定化 cargo-script,允许使用嵌入依赖项的单文件 Rust 脚本;负责人:Ed Page。
- 在 nightly 版本上实现可扩展的 Polonius 支持,改进 Rust 的借用检查器,使其 支持条件返回及其他模式;负责人:Rémy Rakic。
- 推动并行前端更接近稳定,将 Rust 编译时间提高多达 20%;负责人:Sparrow Li。
- 人机工程学的引用计数,减少处理引用计数数据的语法开销;负责人:Jonathan Kelley。
- 实现“合并 doctests”,将 doctest 文件合并到一个测试中以节省测试时间;负责人:Guillaume Gomez。
请查看 完整列表!(去看吧,我们会等您,看完再回来!)
如何跟踪进展
随着时间推移,我们将定期发布博客文章总结各项目标的进展。如果您想了解更多详情,rust-lang/rust-project-goals 仓库中的 2024h2 milestone 有每个目标的跟踪 issue。每个 issue 都分配给该特定目标的 负责人。您可以订阅 issue 以接收定期更新,或者监控 rust-lang Zulip 上的 #project-goals 频道。随着时间推移,我们可能会创建其他方式供大家关注,例如在 rust-lang.org 上创建一个页面来可视化进展(如果您想在这方面提供帮助,请联系 @nikomatsakis,谢谢!)。
需要事先说明的是:**我们并不期望所有这些目标都能完成**。其中许多目标是由志愿者提出并负责的,事情并非总是按计划进行,这是正常且预料之中的。如果某个目标停滞不前,我们可以寻找新的负责人,或者在下一轮目标规划中再次考虑该目标。
我们如何选择项目目标
每个项目目标最初都是针对 rust-lang/rust-project-goals 仓库的一个 PR。随着每个 PR 的提交,目标会与各团队进行讨论。这个过程有时会导致对目标的编辑,或将较大的目标分解成较小的块(例如,一个关于 “更高级别的 Rust” 的深远目标被分解为两个具体的交付成果:一个 用户范围的构建缓存 和 人机工程学的引用计数)。最后,这些目标被整理到 RFC #3672 中,其中列出了每个目标以及团队的所有要求。该 RFC 已获得所有被请求支持或其他事项的团队批准。
结论:项目目标作为 Rust 的“前门”
对我来说,项目目标计划最令人兴奋的是看到目标 来自于 现有 Rust 维护者 之外的 人士。我希望项目目标流程可以补充 RFC,成为项目一个有效的“前门”,为那些有资源和技能推动变革的人提供一种方式,让他们在开始工作 *之前* 先提出想法并获得 Rust 团队的反馈。
项目目标还有助于确保 Rust 开源社区的可持续性。过去,很难判断一个项目开始工作后是否会受到 Rust 维护者的欢迎。这对那些希望资助 Rust 改进工作的人来说是一个障碍,因为人们不愿意在没有合理成功信心的前提下资助工作。项目目标是项目维护者“认可”特定项目并表明他们认为该项目将对 Rust 有益的一种方式。例如,Rust 基金会在考虑 资助申请 时,就将项目目标作为其标准之一,我预计随着时间推移,其他资助项目也会这样做。但项目目标对其他人也很有用:获得批准的项目目标可以帮助某人说服他们的雇主给予时间参与 Rust 开源工作,或者给承包商信心,确保他们的客户相信他们能够完成工作。
下一轮目标规划将针对 2025 年上半年(2025H1),预计将于 10 月开始。我们期待看到哪些优秀的想法被提出!