在 2022 年開源峰會上 這些天來,在常見問題解答部分,Linus Torvalds 提到了早期整合的可能性 在Linux內核中開發組件 Rust 中的設備驅動程序。
因此有人提到,支持 Rust 的補丁可能會在構成 5.20 內核組合的下一個更新日誌中被接受,該更新日誌計劃於 XNUMX 月下旬發布。
應該記住,自去年以來,Rust 已成為各種重要項目中最受歡迎的項目之一,並且在過去的時間裡,已經完成了與實現 Rust 支持相關的工作。
在自去年以來對 rust 感興趣的知名項目中,我們可以突出顯示,例如 Android,因為它對 銹 因為它允許 實現接近 C 和 C++ 語言的性能,使其可以用於開發平台的低級部分以及與硬件進行交互的組件。
為了確保C和C ++代碼的安全性,Android使用沙箱隔離,靜態分析和模糊測試。 沙盒隔離功能是有限的,並且已經達到其功能的極限(從資源消耗的角度來看,進一步的流程碎片化是不切實際的)。
在使用沙箱的局限性中,他們提到由於需要生成新進程而導致的高開銷和較高的內存消耗,以及與使用IPC相關的額外延遲。
另一方面,我們不能忘記 Linus Torvalds的 還發表了他對 Rust 的看法,其中 花在審查實施上 在Linux內核中設置Rust語言驅動程序的可能性補丁 並提出了一些批評。
最大的投訴是由 逃生的潛力 錯誤情況下的“運行時故障恐慌”, 例如,在內存不足的情況下,包括內核操作在內的動態內存分配操作可能會失敗。
托瓦爾茲 指出,對內核的這種關注從根本上是不可接受的, 而且,如果您不了解這一點,則可以完全拒絕嘗試使用這種方法的任何代碼。 另一方面,補丁程序的開發者同意該問題,並認為可以解決。
但距離 Linus 給出反饋已經有幾個月了,並且已經努力改進實施。 像這樣, 目前尚未向 Torvalds 提交對核心的拉取請求, 但是補丁集被進一步修改,刪除了主題演講,在 linux-next 分支上測試了相當長的一段時間,並達到了適合在內核子系統之上構建抽象層、編寫驅動程序和模塊的狀態。
Rust 支持是一種選擇 默認情況下未啟用,並且不會導致 Rust 包含在內核所需的構建依賴項中。
提議的更改使使用 Rust 作為第二語言成為可能 開發驅動程序和內核模塊。 使用 Rust 開發驅動程序將使您能夠以最少的努力創建更好、更安全的驅動程序,而不會出現諸如釋放內存區域後訪問、取消引用空指針和緩衝區溢出等問題。
Rust 在編譯時提供內存安全性 通過檢查引用、跟踪對象所有權和對像生存期(範圍)以及評估代碼執行期間內存訪問的正確性。 Rust 還提供整數溢出保護,需要在使用前初始化變量,更好地處理標準庫中的錯誤,默認強制執行不可變變量和引用的概念,並提供強靜態類型以最大限度地減少邏輯錯誤。