每年,Rust 社区都会齐聚一堂,制定路线图。今年,除了调查之外,我们还在 12 月发布了博客征集,在几周内诞生了 100 篇博客。最终结果是最近合并的 2018 年路线图 RFC。
Rust:2018 版本
今年,我们将交付 Rust 2018,标志着自 1.0 (也称为 Rust 2015) 以来 Rust 的第一个主要新版本。
我们将像往常一样每六周发布一个版本。但是,我们将在今年后三分之一(Rust 1.29 - 1.31)的版本指定为 Rust 2018。这个新的 Rust “版本” 将是全年功能稳定的顶峰,并将附带完善的文档、工具和库,这些都与这些功能相关联。
版本的想法是标志着 Rust 发展的重大步骤,其中一系列新功能或惯用语作为一个整体,改变了使用 Rust 的体验。它们是每隔几年回顾我们在六周内交付的工作的机会。讲述一个关于 Rust 未来发展方向的更宏大的故事。并将整个堆栈作为一个完善的产品交付。
我们预计每个版本都会有一个核心主题或重点。将 1.0 视为 “Rust 2015”,我们有
- Rust 2015:稳定性
- Rust 2018:生产力
Rust 2018 将包含什么?
路线图并没有明确说明 Rust 2018 中将发布什么,但我们有一个相当好的想法,我们将在下面介绍主要的嫌疑。
文档改进
Rust 2018 版本的目标之一是为全套新的和改进的功能以及它们所产生的惯用语提供高质量的文档。《Rust 程序设计语言》在过去 18 个月中已被完全重写,并且将随着功能的稳定编译器的发布,在全年进行更新。Rust By Example 也将在今年进行改版。此外,还有许多第三方书籍,如 《Programming Rust》,也将付梓出版。
语言改进
管道中最突出的语言工作源于 2017 年的人体工程学计划。该计划中几乎所有被接受的 RFC 今天都可以在 nightly 版本上使用,并且将在接下来的几个月中进行润色和稳定。在这些生产力改进中,有一些“头条”将构成该版本的主干
- 所有权系统改进,包括通过“非词法生命周期”使借用更灵活、改进的模式匹配集成等等。
- Trait 系统改进,包括期待已久的用于抽象处理类型的
impl Trait
语法。 - 模块系统改进,专注于提高清晰度并降低复杂性。
- 生成器/异步/等待: 一流的异步编程支持工作正在快速进展中。
此外,我们预计在 Rust 2018 版本发布之前还会稳定一些更重要的功能,包括 SIMD、自定义分配器和 macros 2.0。
编译器改进
截至 Rust 1.24,增量重新编译可用,并且在稳定编译器上默认启用。此功能已经使重新构建比全新构建快得多,但在这一年中,我们希望全新构建和重新构建都会有持续的改进。编译器性能不应成为 Rust 2018 中生产力的障碍。
工具改进
Rust 2018 将发布高质量的 1.0 版本,包括 Rust Language Server(“RLS”,它是我们 IDE 集成故事的基础)和 rustfmt
(Rust 代码的标准格式化工具)。我们将通过稳定自定义注册表、公共依赖项和修改后的配置文件系统来继续改进 Cargo。我们还期望在 Cargo 构建系统集成、Xargo 集成 和 自定义测试框架方面进行进一步工作,尽管目前尚不清楚其中有多少会在 Rust 2018 之前完成。
库改进
基于 我们去年的工作,我们将发布 Rust API 指南书的 1.0 版本,继续将重要的库推向 1.0 状态,通过改进的 cookbook 工作来提高可发现性,并在特定领域的库中进行大量投资,我们将在下面看到。
网站改进
作为 Rust 2018 的一部分,我们将全面改革 Rust 网站,使其对首席技术官和工程师都很有用。应该更容易找到信息来帮助评估 Rust 的用例,并及时了解最新的工具和生态系统改进。
四个目标领域
我们使用 Rust 2018 的目标之一是展示 Rust 在特定使用领域的生产力。我们选择了四个这样的领域,在今年进行投资和突出显示
- 网络服务。Rust 的可靠性和低占用使其非常适合网络服务和基础设施,尤其是在大规模的情况下。
- 命令行应用程序 (CLI)。Rust 的可移植性、可靠性、人体工程学和生成静态二进制文件的能力相结合,在编写 CLI 应用程序方面效果显著。
- WebAssembly。“wasm” Web 标准允许将类似原生的二进制文件发布到所有主要浏览器,但 GC 支持仍需数年才能实现。Rust 非常适合 定位此领域,并为来自 JS 的程序员提供了一个合理的入口。
- 嵌入式设备。Rust 有潜力使编程资源受限的设备更高效且更有趣!我们希望嵌入式编程在今年达到一流的地位。
这些领域中的每一个都在今年都有一个专门的工作组。这些 WG 将以交叉的方式工作,与语言、工具、库和文档工作进行交互。
跨版本的兼容性
简而言之:Rust 将继续其 无忧更新到新版本的稳定性保证.
版本对于编译器具有意义。您将能够编写
edition = "2018"
在您的 Cargo.toml 中选择为您的 crate 选择新版本。这样做可能会引入新的关键字或以其他方式需要调整代码。但是
- 您可以在新编译器上无限期地使用旧版本;版本是可选择的。
- 版本是按每个 crate 设置的,可以混合和匹配;您可以与依赖项使用不同的版本。
- 一个版本中无警告的代码必须在下一个版本中编译,并且具有相同的行为。
- 版本相关的警告,例如,标识符将在下一个版本中成为关键字,必须通过自动化迁移工具(rustfix)轻松修复。只有少数 crate 应该需要任何手动工作来选择新版本,并且手动工作必须最少。
- 大多数新功能与版本无关,即使选择了较旧的版本,也可以在新编译器上使用。
换句话说,新编译器版本的进展与版本无关;您可以随时迁移,而不必担心生态系统兼容性;版本迁移通常很简单。
其他 2018 年目标
虽然 Rust 2018 版本是我们今年的主要关注点,但我们希望关注一些其他正在进行的问题。
更好地服务于中级 Rustacean
我们从生产用户和 2017 年调查中听到的最强烈的消息之一是,人们需要更多资源来引导他们从理解 Rust 的概念到知道如何有效地使用它们。路线图没有明确规定这些资源应该是什么样的—— 可能应该有几种—— 但作为社区,我们致力于在这方面投入大量工作,并在年底推出一些扎实的新材料。
社区
连接并赋能 Rust 的全球社区。我们将把国际化作为首要关注的问题,并积极努力在目前因语言、地理或文化而分隔的 Rust 子社区之间建立联系。我们将在全球范围内开展并支持 Rust 活动,包括进一步发展 RustBridge 项目。
发展 Rust 团队和其中的新领导者。我们将重构 Rust 团队结构,以支持更多的规模、敏捷性和领导力成长。我们将通过创建更多入门资源和直接指导关系,系统地投资于指导。
行动号召
与 Rust 世界一样,这里提出的目标最终将是社区范围内的努力的结果——可能包括您!以下是一些我们需要最多帮助的团队。请注意,所有 IRC 频道都指向 irc.mozilla.org 网络。
- WebAssembly WG。将 Rust 编译为 WebAssembly 应该是 Web 上快速代码的最佳选择。查看 rust-lang-nursery/rust-wasm 以了解更多信息并参与其中!
- CLI WG。用 Rust 编写 CLI 应用程序应该是一种无摩擦的体验——从找到正确的库和编写简洁的集成测试到跨平台分发。加入我们的 rust-lang-nursery/cli-wg,帮助我们实现这个目标!
- 嵌入式设备 WG。质量、生产力、可访问性:Rust 可以让嵌入式行业变得更好。让我们在 2018 年开始这个过程!加入我们的 https://github.com/rust-lang-nursery/embedded-wg
- 生态系统 WG。我们将为整个生态系统中的重要 crate 提供指导和支持。进入 WG-ecosystem 房间,我们将引导您到需要帮助的地方!
- 开发工具团队。开发人员工具(IDE、Cargo、rustdoc、Clippy、Rustfmt、自定义测试框架等)总有一些有趣的事情要处理。加入 #rust-dev-tools 并与团队聊天!
- Rustdoc 团队。在您的帮助下,我们可以让每个人的文档都更好。来加入我们在 IRC 上的 #rustdoc,我们可以帮助您入门!
- 发布团队。请在 IRC 上访问 #rust-release 频道,参与回归分类和发布制作!
- 社区团队。我们在社区团队内启动了几个新团队,并渴望加入新成员:活动、内容、交换机、RustBridge、调查和本地化!查看我们的团队仓库 或访问我们的 IRC 频道 #rust-community,了解更多信息并参与其中!