支援 Rust 語言的 Linux 核心第五版補丁

Rust-for-Linux 專案的作者 Miguel Ojeda 提出了第五個版本的元件,用於使用 Rust 語言開發裝置驅動程序,供 Linux 核心開發人員考慮。 Rust 支援被認為是實驗性的,但已經包含在 linux-next 分支中,並且已經充分開發,可以開始在核心子系統上建立抽象層以及編寫驅動程式和模組。 該開發由 Google 和 ISRG(網路安全研究小組)資助,ISRG 是 Let's Encrypt 專案的創始人,致力於推動 HTTPS 以及提高網路安全性的技術開發。

回想一下,提議的更改使得可以使用 Rust 作為開發驅動程式和核心模組的第二語言。 Rust 支援作為一個選項提供,預設不啟用,並且不會導致 Rust 被包含為核心所需的建置依賴項。 使用 Rust 進行驅動程式開發將允許您以最小的努力創建更安全、更好的驅動程序,並且不會出現釋放後記憶體存取、空指標取消引用和緩衝區溢位等問題。

Rust 在編譯時通過引用檢查、跟踪對象所有權和對像生命週期(範圍)以及在代碼執行期間評估內存訪問的正確性來提供內存安全。 Rust 還提供防止整數溢出的保護,要求在使用前強制初始化變量值,更好地處理標準庫中的錯誤,默認應用不可變引用和變量的概念,提供強靜態類型以最小化邏輯錯誤。

新版本的補丁繼續消除了第一版、第二版、第三版和第四版補丁討論期間所做的評論。 在新版本中:

  • 基於Intel支援的0DAY/LKP機器人的持續整合系統中增加了對Rust支援的元件測試,並已開始發布測試報告。 我們正準備將 Rust 支援整合到 KernelCI 自動化測試系統中。 基於GitHub CI的測試已轉移到容器的使用。
  • Rust 核心模組不再需要定義 crate 屬性「#![no_std]」和「#![feature(…)]」。
  • 新增了對單一程序集目標(.o、.s、.ll 和 .i)的支援。
  • 代碼指南定義了分隔註解(“//”)和記錄代碼(“///”)的規則。
  • is_rust_module.sh 腳本已重新設計。
  • 新增了基於「CONFIG_CONSTRUCTORS」實現的靜態(全域共享變數)同步原語的支援。
  • 鎖管理得到簡化:Guard 和 GuardMut 組合在一起,成為一種參數化類型。
  • 註冊設備時可以定義附加參數。
  • 添加了“RwSemaphore”抽象,它充當 rw_semaphore C 結構的包裝器。
  • 為了使用 mmap,新增了新的 mm 模組和 VMA 抽象化(vm_area_struct 結構的包裝器)。
  • GPIO PL061 驅動程式已切換為使用「dev_*!」巨集。
  • 對程式碼進行了總體清理。

來源: opennet.ru

添加評論