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,以及6周列车模型(带有 Nightly、Beta 和 Stable 渠道),这将使我们能够在不牺牲稳定性的情况下交付稳定版本。这篇文章通过阐述向这种新的发布模型过渡以及它提供的稳定性保证来结束这个故事。

Alpha 版本

达到 alpha 意味着三件事

  • 语言功能已完成。我们期望随 1.0 一起发布的所有功能的门控都已移除。

  • 标准库几乎已完成。将在 1.0 稳定版中发布的大部分 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 系列的整个生命周期内提供稳定性 - 无忧升级

  • 核心文档(The Guide/Guides)与语言和库完全同步。

我们非常期待 Rust 达到这一点。

这对生态系统意味着什么

随着 Cargo 和 crates.io发布,Rust 的生态系统已经看到了显著的扩展,但跟踪 Rust 的 nightly 版本仍然需要大量工作。从 alpha 版本开始,尤其是接近 beta1 时,这种情况将发生巨大变化;**与 beta1 兼容的代码应该与 1.0 最终版兼容,而无需进行任何更改**。

这种向稳定性的迁移应该会给库的编写者带来好处,我们希望到 1.0 最终版时,将会有大量的 crate 集合可以在稳定渠道上使用 - 并为首次尝试 Rust 的大量人员做好准备。

让我们开始吧!