Linux 核心第四版補丁,支援 Rust 語言

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

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

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

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

  • 已經過渡到使用 Rust 1.58.0 的穩定版本作為參考編譯器。 該項目所需的更改尚未包含在 Rust 主工具包中,其中包括“-Zsymbol-mangling-version=v0”標誌(預計在 Rust 1.59.0 中)和“maybe_uninit_extra”模式(預計在 Rust 1.60.0 中) . XNUMX) 已註明。
  • 新增了對合適 Rust 工具可用性的自動檢查,並擴展了測試系統中 Rust 支援的能力。
  • 已提出新的抽像用於從 Rust 程式碼存取裝置識別碼表(「IdArray」和「IdTable」)。
  • 新增了用於存取定時器相關功能(時鐘框架)的圖層。
  • 平台驅動程式現在透過特徵實現來定義。
  • 新增了一個新的巨集來簡化平台驅動程式的註冊,並提出了一個新的通用驅動程式範本。
  • 新增了“dev_*”結構的巨集。
  • 為 IoMem 類型新增了「{read,write}*_relaxed」方法。
  • 刪除了 FileOpener 屬性以簡化檔案操作。
  • “ThisModule”參數已新增至註冊驅動程式時傳遞的參數。
  • 提出了一種用 Rust 語言創建內核模組的標準模板。

來源: opennet.ru

添加評論