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