不稳定的 Rust 功能

背景

Rust 的 #![feature(...)] 是什么?

使用 Rust 的 nightly 渠道或使用适当标志手动编译 Rust 时,您可以使用不稳定的功能。这些功能包括语言增强项、库增强项、编译器功能以及不受 Rust 通常稳定性保证的其他功能。其中大多数功能都是暂时不稳定的新增功能,在测试、讨论和进一步设计完成一段时间后才会变为稳定版。不过,有些功能是故意设计为永久不稳定的,仅供内部编译器使用。如果找到了更好的解决方案,或者确定某项功能的缺点大于优点,我们可能会彻底移除该功能。每个功能都有一个rust-lang/rust GitHub 代码库中关联的跟踪问题

Rust 版本控制流程

Fuchsia 目前使用上游 Rust 主分支的固定修订版本进行构建。我们将 Rust 镜像到此代码库。用于编译 Fuchsia 的版本在 prebuilts 清单中设置。可以在 prebuilts 中设置的最新 Rust 修订版本是此处最近完成的 build。我们目前会非常频繁地更新 Rust 版本,以获取上游的最新更改,例如标准库使用的系统调用的更改。

目标

我们希望能够向前或向后滚动到其他版本的 Rust,以获取 bug 修复或回滚导致问题的更改。如果依赖太多不稳定的每夜功能,可能会使此过程变得非常痛苦。

我们还希望代码清晰易用,而使用不稳定或快速变化的功能可能会使代码更难理解或修改。不稳定的功能通常文档不足,现有文档也往往已过时。

不过,也有一些功能是专门为 Fuchsia 的用例设计的。这些功能可显著提高可读性或性能,我们使用这些功能有助于验证它们,并进一步推动它们走向稳定。

流程

不稳定功能请求应发送至 rust-users@fuchsia.dev 邮寄名单。这些文档应托管在 docs.google.com 上,以便对文档本身添加评论和建议。提案应包含以下信息:

  • 该功能的简要摘要
  • 该功能在 Fuchsia 中的用途
  • 关于该功能在稳定之前还需要完成哪些工作的信息摘要
  • 负责拥有特定功能的人员,负责跟踪跟踪问题、参与有关如何修改或稳定该功能的讨论,以及管理因破坏功能更改或移除功能而导致的 Fuchsia 代码的任何必要更新。

收到这封电子邮件后,您将有 1 周的时间发表意见,在此期间,您应在文档中阐明支持或反对该功能的所有论据。此期限结束后,一组审核员将会开会,就是否允许使用该功能达成一致决定。此决定将基于文档中之前讨论的论点,不会纳入审核委员会成员提出的新论点。如果出现新论点,我们会将其添加到文档中,并为其他人留出更多时间来回复。

如果功能获得批准,文档中列出的功能摘要、使用情况、稳定性报告和所有者会添加到下方的“当前使用的功能”部分。必须先签入此文档,然后才能使用此功能。

审核由 Rust 工作组执行。

目前使用的功能

不稳定的功能通过在 Rust>unstable 组件下提交的问题进行跟踪。