背景
什麼是 Rust 的 #![feature(...)]
?
使用 Rust 的 nightly
管道或透過適當標記手動編譯 Rust
時,您可以使用不穩定的功能。包括語言新增、程式庫新增、編譯器功能,以及其他不受 Rust 一般穩定性保證影響的功能。在這類測試中,大多數是暫時性不穩定的新增功能,會在一段時間後測試、討論和進一步設計完成後,再逐漸穩定成長。不過,某些功能是刻意針對內部編譯器用於永久不穩定的功能。如果找到更好的解決方案,或判定該功能的缺點大於優點時,其他功能可能會完全移除。每項功能在 rust-lang/rust
GitHub 存放區中都有相關聯的追蹤問題。
我們的 Rust 版本管理流程
Fuchsia 目前使用上游 Rust 主要分支版本的固定修訂版本進行建構。我們會將 Rust 鏡像到這個存放區中。用於編譯 Fuuchsia 的版本可在 prebuilts
資訊清單中設定。可在 prebuilts
中設定的最新 Rust 修訂版本,是最近完成的建構作業。我們目前會經常更新 Rust 版本,以掌握上游的新變更,例如標準程式庫使用的 syscall 變更。
目標
我們希望能向前或向後復原其他版本的 Rust,以接收錯誤修正或復原造成問題的變更。視太多不穩定的功能而定,這個過程可能會極為痛苦。
我們也希望提供簡單易懂的程式碼,如果使用不穩定或經常變動的功能,可能會導致程式碼更難以理解或修改。不穩定的功能通常記錄錯誤,以及內容通常過時。
儘管如此,還有一些專為 Fuchsia 用途所設計的功能。這些功能在可讀性或效能方面大有助益,而使用這些功能有助於證明其效能,並將這些功能逐步移往穩定。
程序
不穩定的功能要求應傳送至 rust-users@fuchsia.dev 郵寄清單。這些項目應託管於 docs.google.com,以便允許在文件本身加註和建議。提案應包含以下資訊:
- 功能簡短摘要
- 功能在 Fuchsia 中使用
- 功能穩定前的剩餘功能摘要
- 負責特定功能的人員負責追蹤追蹤問題、參與討論如何修改或穩定功能,以及管理因功能破壞/移除功能而造成的 Fuchsia 程式碼相關必要更新。
結束這封電子郵件的期限為一週,在此期間應針對某項功能,在文件中針對某項功能提供任何引數。此期限結束後,會有一群審查員會達成並做出的決定,決定是否允許使用該功能。這項決定將以先前在文件上討論的引數為依據,且不包含評論委員會成員提供的新引數。如果新的引數途徑,系統會將這些引數加入文件,並給予其他人回應的時間。
如果功能通過核准,功能摘要、使用情形、穩定性報告和文件中列出的擁有者就會新增至下方的「最近使用的功能」部分。您必須先檢查這份文件,才能使用這項功能。
評論會由 Rust 工作團隊負責執行。
目前使用的功能
系統會透過 Rust>unstable
元件回報的問題追蹤不穩定的功能。