什么是稳定过程?

时间:2018-04-05 13:03:21

标签: rust

什么是稳定过程?阅读发行说明我看到了许多不同的标准库API甚至语言功能(例如下划线生命周期)。 API如何变得稳定?

2 个答案:

答案 0 :(得分:9)

稳定是将新功能添加到Rust的方式。与许多语言不同,在添加内容的时候,它会在下一个版本中发布,Rust有一个多阶段的过程,这样我们就可以在它们被包含在稳定的Rust之前试用它们。

只需发送拉取请求即可添加小功能,尤其是新库API。较大的功能会经过the RFC process,因此在设计实施之前可以就设计达成一些共识。如果接受RFC,则可以通过PR发送实现。每当添加新功能时,它都会在“功能门”后面,即一个特殊属性#![feature],让您选择尝试使用该功能。

每一个(好的,有时不是每一个,但几乎每一个)夜晚,每晚都会制作一个Rust。每晚构建用于测试,因此,您可以使用#![feature]属性选择新的不稳定功能。然后,用户可以对这些功能进行调整,报告错误,并评论API或功能在现实世界中的使用方式。

每隔六个星期,一个夜晚变成一个“beta”版本。 Betas就像发布候选者,所以他们不允许你使用#![feature],因此,不要让你使用实验性功能。六个星期后,一个新的夜晚成为测试版,测试版发布成为一个新的“稳定”版本。这是大多数人在谈论Rust时的意思,以及大多数Rust用户使用的内容。 Stable Rust也不允许您使用#![feature],因为这些功能不稳定。

无论如何,经过一段时间(至少是一个完整的发布周期),如果一个功能是好的,团队会讨论是否应该保持稳定。如果他们决定是,那么#![feature]要求将被删除,并且该功能将“乘坐火车”到最终的稳定版本。如果他们决定不,它将被弃用并最终删除。

答案 1 :(得分:2)

Rust赞成采用敏捷的方法来引入功能和API,以便根据反馈 1 进行迭代。

然而,迭代功能或API的设计与Rust对向后兼容性(即稳定性)的强烈承诺不一致。因此,稳定过程旨在解决这一明显的难题:

  • 任何非平凡的功能或API添加首先是不稳定的,并隐藏在功能门后面,
  • 要使用此类功能,用户必须在其包中使用#![feature]选择加入,
  • 只能在 nightly 版本频道上选择加入,而 beta 稳定版本频道无法选择。

通过这种方式,爱好者可以每晚使用该功能进行试验,并提供反馈以对其进行润色,而任何其他用户都可以使用任何可用功能,并确信他们不会意外使用不稳定的功能。

一旦某个功能被判断为准备好,最后一步就是让团队负责批准它;然后移除特征门,并且所有通道上的特征都可用(当然,从夜间传播到稳定需要一些时间)。

1 规范失败的一个着名例子是C ++ 98的“导出模板”功能;它只在EDG前端实现,这个唯一的功能花了一年多的时间。从那时起,C ++委员会通常需要原型实现。