米格爾·奧赫達,Rust-for-Linux 項目的作者, 最近發布了第四個提案 設備驅動組件 Rust 供 Linux 內核開發人員考慮。
Rust 支持被認為是實驗性的, 但它已經被同意包含在 linux-next 分支中,並且已經足夠成熟,可以開始在內核子系統之上的抽象層上工作,以及編寫驅動程序和模塊。 該開發由 Google 和 ISRG(互聯網安全研究小組)資助,ISRG 是 Let's Encrypt 項目的創始人,致力於推動 HTTPS 以及提高互聯網安全性的技術開發。
對於那些仍然不知道擬議變更的人,他們應該知道它們使之成為可能 使用 Rust 作為開發控制器和模塊的第二語言 內核的。 Rust 支持作為一個選項提供,默認情況下不啟用,並且不會導致 Rust 包含在內核所需的構建依賴項中。
使用 Rust 開發驅動程序 將使您能夠以最小的努力創建更好、更安全的控制器,不會出現釋放內存區域後訪問內存區域、取消引用空指針和緩衝區溢出等問題。
Rust 在編譯時通過檢查引用、跟踪對象所有權和對像生存期(範圍)以及在代碼執行期間評估內存訪問的正確性來提供內存安全。
Rust 還提供整數溢出保護,要求變量在使用前初始化,在標準庫中更好地處理錯誤,默認強制執行不可變引用和變量的概念,並提供強大的靜態類型以最大限度地減少邏輯錯誤。
第四部有哪些變化呢?
在所提供的這個新版本的補丁中,提到繼續消除在討論第一版、第二版和第三版補丁時所做的評論。
我們將不斷更新,直到不再依賴任何不穩定的功能;
此時我們可能想要開始聲明 Rust 的最小版本
支持,例如 GCC 和 Clang。同樣,我們也遷移到了 2021 版 Rust 語言。
關於本次新版本的其他變更,公告中提到如下:
- 進行了過渡,以便能夠使用 Rust 1.58.0 的穩定版本作為參考編譯器。
- 該項目所需的更改尚未包含在主Rust 工具包中,包括“-Zsymbol-mangling-version=v0”標誌(預計在Rust 1.59.0 中)和“maybe_uninit_extra”模式。(預計在Rust 1.60.0 中) )。
- 添加了對 Rust 工具可用性和適用性的自動檢查,並擴展了測試系統上 Rust 支持的能力。
- 建議使用新的抽象來從 Rust 代碼訪問設備標識符表(“IdArray”和“IdTable”)。
- 添加了用於調用與計時器(時鐘幀)相關的函數的層。
- 平台控制器現在通過特徵實現來定義。
- 添加了一個新的宏,以簡化平台驅動程序的註冊,並提出了一個新的通用驅動程序模板。
- 為“dev_*”結構添加了新的宏。
- 為 IoMem 類型添加了新方法“{read,write}*_relaxed” 。
- 刪除了 FileOpener 屬性以簡化文件操作。
- 將“ThisModule”參數添加到控制器註冊期間傳遞的參數數量。
- 提出了一個用 Rust 語言創建內核模塊的典型模板。
最後,如果您有興趣能夠了解更多關於這個新版本的信息,可以諮詢詳情 在下面的鏈接中。