今年XNUMX月在linux-next分支 當時他們為 Linux 5.13 內核工作, 包括一組用於開發設備驅動程序的初始組件 語言 Rust,現在請願書已包含第二版 為 Linux 內核添加 Rust 支持的補丁。
向 Linux 開發者發送請求的人是 Miguel Ojeda,Rust-for-Linux 項目的作者,我們前幾天也談到過他,因為他被聘請負責“Prossimo”項目,該項目基本上專注於協調工作,將關鍵軟件基礎設施轉移到安全代碼,以使用 Rust 保護 Linux 內核內存(如果您想了解有關該項目的更多信息,可以諮詢 以下鏈接中的出版物。)
相關文章:
Prossimo,一個使用 Rust 保護 Linux 內核內存的 ISRG 項目
米格爾·奧赫達發送的請願書是第二次更新版本 用於使用 Rust 語言開發設備驅動程序的組件,其中刪除了在討論第一版補丁時所做的評論,並且 Linus Torvalds 已經加入了討論並建議更改邏輯以處理一些位操作。
裡面的好處 提到的是 Rust 保證了安全的內存管理 在編譯時通過引用檢查、跟踪對象所有權和對像生命週期以及在運行時評估內存訪問的正確性。
Rust 還提供 整數溢出保護,要求在使用前強制初始化變量值,在標準庫中更好地處理錯誤,默認採用不可變引用和變量的概念,並提供強大的靜態類型以最小化邏輯錯誤。
在突出的變化中 提到了這個新版本的補丁:
- 內存分配代碼可防止發生錯誤(例如內存不足)時生成緊急狀態的可能性。
- 已經包括了 Rust alloc 庫的一個變體,其中處理鎖的代碼已被重新設計,但最終目標是將內核所需的所有功能帶到 alloc 主版本中(更改已經準備好並推送到 Rust 標準庫)。
- 現在可以使用測試版和穩定版,而不是每晚構建 rustc 編譯器編譯支持 Rust 的內核。 Rustc 1.54-beta1 目前被用作參考編譯器,但在月底發布 1.54 後,將支持它作為參考編譯器。
- 添加了對使用標準 Rust 屬性“# [test]”編寫測試的支持,以及使用 doctests 將文檔中的示例代碼用作測試的能力。
- 除了之前支持的 x32_86 和 ARM64 之外,還添加了對 ARM64 和 RISCV 架構的支持。
改進了 GCC Rust(Rust 的 GCC 前端)和 rustc_codegen_gcc(GCC 的 rustc 後端)的實現,現已通過所有基準測試。 - A已輸入 新的抽像水平 讓 Rust 程序使用用 C 編寫的內核機制,例如樹、對象引用計數、文件描述符創建、任務、文件和 I/O 向量。
- 驅動程序開發組件改進了對“file_operations”模塊、“module!”宏、宏註冊表和基本驅動程序(探測和刪除)的支持。
- Binder 支持傳遞文件描述符和 LSM 綁定。
- 為 Raspberry Pi 板的硬件隨機數生成器提出了一個功能更強大的 Rust 驅動程序示例 bcm2835-rng。
最後,如果您有興趣了解更多信息,可以查閱詳細信息。 在下面的鏈接中。