背景
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 代码的所有必要更新。
本邮件之后是一个为期一周的评论期,在此期间,您应当在文档上列出支持或反对某项功能的任何论据。此阶段结束后,一组审核者将召开会议,就是否允许使用该功能达成共识。此决定将基于之前在该文档中讨论的参数,而不包含审核委员会成员提出的新参数。如果出现新参数,系统会将这些参数添加到文档中,并留出更多时间供其他人回复。
如果功能获得批准,文档中列出的功能摘要、使用情况、稳定性报告和所有者会添加到下面列出的“当前使用的功能”部分。您必须先签入此文档,然后才能使用该功能。
审核由 Rust 工作组执行。
当前使用的功能
不稳定的功能按在 Rust>unstable
组件下提交的问题进行跟踪。