Rust 2018 年路线图

2018 年 3 月 12 日 · Rust 核心团队

每年,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 示例也将在今年进行大修。此外,还有许多第三方书籍,如Rust 编程,也正在出版。

语言改进

管道中最突出的语言工作源于2017 年的人体工程学倡议。该倡议中几乎所有已接受的 RFC 今天都可以在 nightly 上使用,并将经过打磨并在未来几个月内稳定下来。在这些生产力改进中,有一些“头条新闻”将构成发布的基础

  • 所有权系统改进,包括通过“非词法生命周期”使借用更加灵活,改进模式匹配集成等等。
  • 特征系统改进,包括期待已久的impl Trait语法,用于抽象地处理类型。
  • 模块系统改进,重点在于提高清晰度和降低复杂性。
  • 生成器/异步/等待:一流的异步编程支持正在快速发展。

此外,我们预计在 Rust 2018 版本发布之前,还将稳定一些主要功能,包括SIMD自定义分配器宏 2.0

编译器改进

Rust 1.24开始,增量重新编译已在稳定编译器上可用并默认启用。此功能已经使重建速度明显快于全新构建,但我们预计在今年内,全新构建和重新构建的速度都会持续提高。在 Rust 2018 中,编译器性能不应成为生产力的障碍。

工具改进

Rust 2018 将见证Rust 语言服务器(“RLS”,它构成了我们大多数 IDE 集成故事的基础)和rustfmt(Rust 代码的标准格式化工具)的高质量 1.0 版本。我们将继续通过稳定自定义注册表、公共依赖项和修订后的配置文件系统来改进 Cargo。我们还期待在Cargo 构建系统集成Xargo 集成自定义测试框架方面进行进一步的工作,尽管目前尚不清楚其中有多少将在 Rust 2018 之前完成。

库改进

基于我们去年的工作,我们将发布Rust API 指南书籍的 1.0 版本,继续推动重要库达到 1.0 状态,通过改进的食谱工作来提高可发现性,并在特定领域对库进行大量投资,正如我们将在下面看到的那样。

网站改进

作为 Rust 2018 的一部分,我们将彻底改造 Rust 网站,使其对 CTO 和工程师都很有用。它应该更容易找到信息来帮助您评估 Rust 是否适合您的用例,并及时了解最新的工具和生态系统改进。

四个目标领域

我们对 Rust 2018 的目标之一是展示 Rust 在特定使用领域的生产力。我们选择了四个这样的领域,将在今年进行投资并重点介绍

  • 网络服务。Rust 的可靠性和低占用空间使其非常适合网络服务和基础设施,尤其是在大规模情况下。
  • 命令行应用程序(CLI)。Rust 的可移植性、可靠性、人体工程学和生成静态二进制文件的能力共同为编写 CLI 应用程序带来了极大的效果。
  • WebAssembly。“wasm” Web 标准允许将类似本机的二进制文件交付给所有主要浏览器,但 GC 支持还需要几年时间。Rust非常适合此领域,并为来自 JS 的程序员提供了一个合理的入门途径。
  • 嵌入式设备。Rust 有可能使资源受限设备的编程更加高效,也更加有趣!我们希望嵌入式编程在今年达到一流地位。

每个领域都有一个专门的工作组负责今年的工作。这些工作组将以交叉的方式工作,与语言、工具、库和文档工作进行交互。

跨版本兼容性

TL;DR:Rust 将继续其无忧无虑地更新到新版本的稳定性保证.

版本对于编译器来说将具有意义。您将能够编写

edition = "2018"

在您的 Cargo.toml 中,以选择加入新版本的方式为您的板条箱使用新版本。这样做可能会引入新的关键字或以其他方式需要对代码进行调整。但是

  • 您可以在编译器上无限期地使用版本;版本是选择加入的
  • 版本是在每个板条箱的基础上设置的,可以混合搭配;您可以使用与依赖项不同的版本
  • 在一个版本中没有警告的代码必须在下一个版本中编译,并且具有相同的行为。
  • 与版本相关的警告,例如标识符将在下一个版本中成为关键字,必须通过自动迁移工具(rustfix)轻松修复。只有极少数板条箱需要任何手动工作才能选择加入新版本,并且这些手动工作必须最少。
  • 大多数新功能与版本无关,即使选择旧版本,也可以在新编译器上使用。

换句话说,新编译器版本的演进与版本无关;您可以随时迁移,并且不必担心生态系统兼容性;版本迁移通常是微不足道的。

2018 年的其他目标

虽然 Rust 2018 版本是今年的主要重点,但我们还有一些持续关注的问题,我们希望给予关注。

更好地服务于中级 Rustaceans

我们从生产用户那里听到的最强烈的消息之一,以及2017 年的调查表明,人们需要更多资源来帮助他们从理解 Rust 的概念到了解如何有效地使用它们。路线图没有明确规定这些资源应该是什么样子——可能应该有几种类型——但它承诺我们作为一个社区将在这一领域投入大量工作,并在年底之前提供一些可靠的新材料。

社区

连接和赋能 Rust 的全球社区。我们将把国际化作为首要任务,并积极努力建立目前因语言、地理位置或文化而分离的 Rust 子社区之间的联系。我们将启动并支持全球范围内的 Rust 活动,包括进一步发展 RustBridge 计划。

壮大 Rust 的团队并在其中培养新的领导者。我们将重构 Rust 团队结构,以支持更大的规模、敏捷性和领导力发展。我们将系统地投资于指导,包括创建更多入门资源和通过直接指导关系进行指导。

行动号召

正如 Rust 世界中一贯的做法,这里列出的目标最终将是社区共同努力的结果——也许其中就包括你!以下是一些我们最需要帮助的团队。请注意,所有 IRC 频道都指 irc.mozilla.org 网络。

  • WebAssembly 工作组。将 Rust 编译为 WebAssembly 应该是 Web 上快速代码的最佳选择。查看 rust-lang-nursery/rust-wasm 以了解更多信息并参与其中!
  • CLI 工作组。在 Rust 中编写 CLI 应用程序应该是一种无缝的体验——从找到合适的库和编写简洁的集成测试到跨平台分发。加入我们 rust-lang-nursery/cli-wg 并帮助我们实现这一目标!
  • 嵌入式设备工作组。质量、生产力、可访问性:Rust 可以更好地改变嵌入式行业。让我们在 2018 年开始这个过程!加入我们 https://github.com/rust-lang-nursery/embedded-wg
  • 生态系统工作组。我们将为整个生态系统中重要的板条箱提供指导和支持。加入 WG-ecosystem 房间,我们将引导你到需要帮助的地方!
  • 开发工具团队。开发工具(IDE、Cargo、rustdoc、Clippy、Rustfmt、自定义测试框架等)总是有有趣的事情需要处理。加入 #rust-dev-tools 并与团队聊聊!
  • Rustdoc 团队。有了你的帮助,我们可以让文档对每个人都更好。加入我们 IRC 上的 #rustdoc,我们可以帮助你入门!
  • 发布团队。加入 IRC 上的 #rust-release,参与回归测试和发布制作!
  • 社区团队。我们在社区团队中启动了几个新的团队,并渴望添加新成员:活动、内容、交换机、RustBridge、调查和本地化!查看我们的团队仓库 或者访问我们的 IRC 频道 #rust-community,了解更多信息并参与其中!