近日以來,Rust 逐步擴展到一些系統底層,比如 Microsoft 正在將 Win32 GDI 以 Rust 進行重寫(出處),Linux Kernel 6.1 也開始引入 Rust 的支援。能被著名的 C++ 反對者 Linus 接受成為 Linux 第二開發語言(僅用於 Module),Rust有什麼優勢呢?
在 [PATCH 00/13] [RFC] Rust support 中說明了在 Linux 中引入 Rust 希望達成以下目標
- 以 Rust 撰寫有助於減少 memory safety bugs,data races 與邏輯錯誤
- 維護者能更有信心去重構或接受模組相關的 patch
- 得益於抽象化,現代語言特性與詳細的文件,模組撰寫更加容易
- 使用現代語言更有助於吸引更多人加入
- 透過 Rust 工具,持續執行至今的文件指南
也說明了在 Linux 開發中,Rust 比 C 好的部份
- 無未定義行為, 包括 memory safety 與 data races
- 更嚴格的型別系統減少了邏輯錯誤
- 安全的 Code 與 "unsafe" code 更容易區別出來
- 豐富的語言特性
- 廣泛的獨立 Library
- 整合了以編譯器為基底的文件產生,formatter 與 linter
在 Google Security Blog 中, Rust in the Android platform 中則說明了幾件事情
- 即使付出了很多努力,在高危險漏洞中 memory safety 仍長佔據約 70% 的比例。
- 記憶體安全的語言有很多,但不適合用於需要精確控制與可預期行的底層系統開發。
- Rust 透過了編譯時檢查與執行時檢查達到了與 C/C++ 同等的性能。
在微軟的安全回應中心的 Blog,Why Rust for safe systems programming 當中提出了當下 Rust 是 C/C++ 的最合適替代品。
- 想達成記憶體安全又可進行底層系統開發
- 與 C/C++ 效能相當且能進行細緻控制
- 在高危險漏洞中,70% 是記憶體安全問題。使用 Rust 可以避免
- 編譯期與執行期皆能處理
- 不安全的記憶體操作需明確標示,大幅減少人工檢查的範圍
- 除此之外
- Rust 只要編譯通過,就能工作
- 除了記憶體安全,也避免 Null Pointer 與 data races
- 豐富的型別系統有助於撰寫有表達力的程式,在 enum 與 trait 可以進一步幫助盡可能沒有 Bug 的程式
- 有強大的社群
總結來看,記憶體安全,執行效率與細緻控制是該語言的強項。
日後可能會不定時更新一些學習的內容。