在许多方面, Rust 编程语言 都是一个雄心勃勃的项目。随着 5 月 15 日 Rust 1.0 的发布,人们可能会问:“接下来是什么?” 关于 Rust 语言如何在没有垃圾回收的情况下实现内存安全目标的许多技术方面已被撰写,但关于项目本身及其结构的讨论却较少。开源项目不仅仅是代码,Rust 也不例外。
彻底的变革
从历史上看,Rust 的发展历程就是一个彻底变革的故事。如果你回顾 Rust 的历史,你会发现一些奇特之处:Rust 自诞生以来就有一个相同的使命:一种并发、安全的系统编程语言。但是,自八年前 Rust 诞生以来,Rust 实现这一目标的方式发生了重大变化。
为了适应这些变化,该语言的语法和语义也在快速变化。这使得 Rust 难以学习,因为人们需要跟上高速项目中的许多变化。随着 Rust 接近目前的形式,团队不得不解决一个问题:“Rust 何时会稳定?” 以及一个相关的且重要的问题:“稳定意味着什么?”
虽然稳定性对于编程语言的用户来说是一件有用的事情,但静态的语言也没有用。任何 1.0 版本都不是完美的,因为没有软件是完美的。与此同时,之前的状态也不是很好,因为完全的改变太混乱了。
像发条装置和 Web
与任何工程决策一样,重要的是不仅要考虑你的需求,还要研究其他人在面对同样问题时所做的事情。Web 是另一个平台,它具有非常强大的向后兼容性保证,但同时也在不断发展和变化。为了在这些约束条件下工作,常青 Web 浏览器每六周发布新版本,其中包含新功能和错误修复,但仍与现有的 Web 兼容。许多网站本身都遵循持续集成或类似的工程原则,旨在使更改更容易。虽然 Web 应用程序可能每天部署数十次,但桌面软件更新的频率要低得多,通常最多每年一到两次。
因此,Rust 正在遵循类似的路径:1.0 于 5 月 15 日发布,1.1 beta 版本同时发布,并且 master 开发分支已推进到 1.2。六周后,即 6 月 26 日,Rust 1.1 将脱离 beta 阶段并成为稳定版本,1.2 将晋升为 1.2-beta 版本,而 master 分支将成为最终的 1.3 版本。
像发条装置一样,这些更新将每六周发布一次。这三个版本称为通道,Rust 有三个通道:nightly、beta 和 stable。每 24 小时从 master 分支生成一个新的 nightly 构建,而 beta 和 stable 版本仅在将内容向后移植到其分支时才更新。Rust 遵循语义版本控制原则,这意味着 1.x 系列中的这些次要版本将向后兼容以前的版本。它们将包含新功能和错误修复,但你为 1.0 编写的任何代码都应该可以在 1.1 上开箱即用或经过简单的修改。
这种安排不仅可以让 Rust 用户快速访问新功能和错误修复,而且还有望产生次要影响,从而带来更高质量的版本。例如,考虑一个每年发布一次的项目。在给定的一年中,该项目看到了两个新功能 A 和 B。 A 出现在周期的第二个月,B 出现在周期结束前的第二个月。在这样的周期中,即使功能 B 比平时有更多错误,也有强烈的动机去发布功能 B。虽然它的测试时间比功能 A 少八个月,但开发人员喜欢新功能,如果功能 B 错过了发布,那么它将整整一年才能被使用。
通过更短的周期,这种压力得到缓解:如果某个功能尚未完全准备好用于即将发布的版本,那么只需等待短短的六周即可迎来下一个版本。这可以防止未完全成熟的功能进入稳定通道。
3 条评论