Rust 1.0:列车时刻表

2014年12月12日 · Aaron Turon

随着2014年接近尾声,是时候开始 Rust 1.0 的发布周期了!

TL;DR: 我们将于2015年1月9日过渡到六周发布周期,并在至少两个周期后发布 Rust 1.0.0 最终版:

  • Rust 1.0.0-alpha -- 2015年1月9日,星期五
  • Rust 1.0.0-beta1 -- 2015年2月16日所在周
  • Rust 1.0.0 -- 一个或多个六周周期后

我们之前讨论过为什么 Rust 正在走向 1.0,以及关于六周列车模型(包括 Nightly、Beta 和 Stable 通道),这将使我们能够在不停滞的情况下实现稳定性。本文通过阐述向这种新发布模型的过渡及其提供的稳定性保证,从而完善了故事。

Alpha 发布

达到 alpha 意味着三件事

  • 语言功能完备。所有我们预计随 1.0 版本发布的功能都已移除功能门控。

  • 标准库功能接近完备。绝大多数将在 1.0 stable 版本发布的 API 都已标记为 #[stable]

  • 默认开启 #[unstable] 功能的警告。(请注意 #[experimental] 稳定性级别将取消。)

换句话说,1.0.0-alpha 相当准确地描绘了 1.0 会是什么样子,但尚未建立发布通道。通过开启对不稳定 API 的警告,而不是完全排除它们,我们可以获得社区反馈,了解哪些重要 API 仍然需要稳定,而不会让这些 API 一夜之间消失。

虽然我们预计达到功能完备状态后破坏性变更的步伐会显著放缓,但1.0.0-alpha 仍然是一个预发布版本

A pre-release version indicates that the version is unstable and might not
satisfy the intended compatibility requirements as denoted by its associated
normal version.

也就是说,在整个 alpha 周期内,我们将保留对语言和库(包括 #[stable] API)进行轻微破坏性变更的权利。但我们预计此类变更将是相对较小的调整,而对 #[stable] API 的更改将非常罕见。

Beta 发布(或多个)

六周后,我们将开始 beta 周期

  • 语言和库都已功能完备。所有计划随 Rust 1.0 发布的 API 都已标记为 #[stable]

  • 发布通道生效:功能门控和 #[unstable] API 在 nightly 构建中可用,但在 beta 中不可用。这一改变是我们对稳定性的承诺的一部分。

与 alpha 周期(我们仍然预计会有一些轻微的破坏性变更)不同,除非发现非常重大的问题,否则 beta 周期不应涉及破坏性变更。理想情况下,beta 周期将专注于测试、错误修复和完善

我们计划在最终发布前至少运行一个 beta 周期。

最终发布

最后,在一个或多个 beta 周期后,我们将产生一个面向世界的发布候选版本

  • 我们准备承诺在 1.X 系列的整个生命周期内保持稳定——无忧升级

  • 核心文档(指南/多份指南)与语言和库完全同步。

我们非常激动 Rust 达到这一阶段。

这对生态系统意味着什么

随着 Cargo 的发布crates.io 的推出,Rust 的生态系统已经显著扩展,但跟踪 Rust 的 nightly 发布仍然需要大量工作。从 alpha 发布开始,尤其是在接近 beta1 时,这将发生巨大变化;在 beta1 上可以工作的代码在 1.0 最终版上应该无需任何改动即可工作

这种向稳定性的迁移应该对库作者是一个福音,我们希望到 1.0 最终版时,将有大量 crates 可在 stable 通道上使用——并为第一次尝试 Rust 的大批用户做好准备。

让我们开始吧!