Android 平台支援以 Rust 開發原生 OS 元件。Rust 是一種現代系統程式設計語言,可提供記憶體安全保證,效能與 C/C++ 相當。Rust 會結合編譯時間檢查,強制執行物件生命週期和擁有權,以及執行階段檢查,確保記憶體存取有效,因此不需要垃圾收集器。
Rust 提供多項現代語言功能,可協助開發人員提高工作效率,並對程式碼更有信心:
- 安全並行程式設計 - 使用者可以輕鬆編寫有效率的執行緒安全程式碼,因此 Rust 的口號是「無畏的並行」。
- 具表現力的型別系統 - Rust 允許使用具高度表現力的型別 (例如 Newtype 包裝函式,以及含有內容的列舉變數),有助於避免邏輯程式設計錯誤。
- 更嚴格的編譯時間檢查 - 在編譯時間發現更多錯誤,可讓開發人員更有信心,只要程式碼編譯成功,就能如預期運作。
- 內建測試架構 - Rust 提供內建測試架構,單元測試可與測試的實作項目並列,方便納入單元測試。
- 強制執行錯誤處理 - 發生可復原的失敗時,函式可以傳回 Result 型別,該型別可以是成功變體或錯誤變體。編譯器會要求呼叫端檢查並處理函式呼叫傳回的
Result
列舉錯誤變體。這樣可減少因未處理的失敗而導致錯誤的可能性。 - 初始化 - Rust 要求每個變數都必須先初始化為其型別的合法成員,才能使用,避免無意間初始化為不安全的值。
- 更安全的整數處理方式 - 所有整數型別轉換都是明確的轉換。 開發人員在指派給變數時,或嘗試使用其他型別進行算術運算時,不會在函式呼叫期間意外轉換型別。在 Android 版 Rust 中,溢位檢查預設為開啟,因此溢位作業必須明確。
如要進一步瞭解 Android Rust 支援,請參閱一系列網誌文章:
- Android 平台中的 Rust
概要說明 Android 團隊為何導入 Rust 做為新的平台語言。 - 將 Rust 整合至 Android 開放原始碼計畫
說明如何在建構系統中導入 Rust 支援,以及為何做出特定設計決策。 - Android 平台中的 Rust/C++ 互通性
討論 Android 內 Rust/C++ 互通性的方法。