什么是稳定过程?阅读发行说明我看到了许多不同的标准库API甚至语言功能(例如下划线生命周期)。 API如何变得稳定?
答案 0 :(得分:9)
稳定是将新功能添加到Rust的方式。与许多语言不同,在添加内容的时候,它会在下一个版本中发布,Rust有一个多阶段的过程,这样我们就可以在它们被包含在稳定的Rust之前试用它们。
只需发送拉取请求即可添加小功能,尤其是新库API。较大的功能会经过the RFC process,因此在设计实施之前可以就设计达成一些共识。如果接受RFC,则可以通过PR发送实现。每当添加新功能时,它都会在“功能门”后面,即一个特殊属性#![feature]
,让您选择尝试使用该功能。
每一个(好的,有时不是每一个,但几乎每一个)夜晚,每晚都会制作一个Rust。每晚构建用于测试,因此,您可以使用#![feature]
属性选择新的不稳定功能。然后,用户可以对这些功能进行调整,报告错误,并评论API或功能在现实世界中的使用方式。
#![feature]
,因此,不要让你使用实验性功能。六个星期后,一个新的夜晚成为测试版,测试版发布成为一个新的“稳定”版本。这是大多数人在谈论Rust时的意思,以及大多数Rust用户使用的内容。 Stable Rust也不允许您使用#![feature]
,因为这些功能不稳定。
无论如何,经过一段时间(至少是一个完整的发布周期),如果一个功能是好的,团队会讨论是否应该保持稳定。如果他们决定是,那么#![feature]
要求将被删除,并且该功能将“乘坐火车”到最终的稳定版本。如果他们决定不,它将被弃用并最终删除。
答案 1 :(得分:2)
Rust赞成采用敏捷的方法来引入功能和API,以便根据反馈 1 进行迭代。
然而,迭代功能或API的设计与Rust对向后兼容性(即稳定性)的强烈承诺不一致。因此,稳定过程旨在解决这一明显的难题:
#![feature]
选择加入,通过这种方式,爱好者可以每晚使用该功能进行试验,并提供反馈以对其进行润色,而任何其他用户都可以使用任何可用功能,并确信他们不会意外使用不稳定的功能。
一旦某个功能被判断为准备好,最后一步就是让团队负责批准它;然后移除特征门,并且所有通道上的特征都可用(当然,从夜间传播到稳定需要一些时间)。
1 规范失败的一个着名例子是C ++ 98的“导出模板”功能;它只在EDG前端实现,这个唯一的功能花了一年多的时间。从那时起,C ++委员会通常需要原型实现。