Linux 核心的新版本補丁支援 Rust 語言

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

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

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

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

  • 該工具包已更新至發布 Rust 1.59.0。 alloc 函式庫的變體也與新版本的 Rust 同步,消除了發生錯誤(例如記憶體不足)時可能產生的「恐慌」狀態。 使用彙編器插入(“feature(global_asm)”)的能力已經穩定。
  • 新增了在 Rust 中建立內核編譯期間使用的主機程式的支援。
  • 它們不是提供預先產生的目標平台規格文件,而是根據核心配置動態產生。
  • 新增了 HAVE_RUST 核心參數以啟用支援 Rust 的架構。
  • 建議在硬體偽隨機數產生器的 Rust 程式碼中使用抽象。
  • 允許使用不含“Error::”前綴的錯誤代碼(例如“return Err(EINVAL)”)以近似 C 中錯誤代碼的處理。
  • 為自訂 C 字串新增了“CString”類型。 Formatter 和 Buffer 類型已合併。
  • 新增了 Bool 和 LockInfo 類型。
  • 自旋鎖的實現已被簡化。

來源: opennet.ru

添加評論