Rust 對 Linux 核心的支援面臨 Torvalds 的批評

Linus Torvalds 審查了實作使用 Rust 語言為 Linux 核心建立驅動程式的功能的補丁,並提出了一些批評意見。

最大的抱怨是由於在錯誤情況下可能出現panic(),例如,在記憶體不足的情況下,動態記憶體分配操作(包括核心內的操作)可能會失敗。 Torvalds 表示,核心中的這種方法從根本上來說是不可接受的,如果不理解這一點,他可以完全否定任何嘗試使用這種方法的程式碼。 另一方面,補丁開發者同意這個問題並認為它是可以解決的。

另一個問題是嘗試使用浮點或 128 位元類型,這對於 Linux 核心等環境來說是不可接受的。 事實證明,這是一個更嚴重的問題,因為目前核心 Rust 庫是不可分割的,並且代表一個大塊 - 無法僅請求某些功能,從而阻止使用一個或另一個有問題的功能。 解決該問題可能需要更改 rust 編譯器和函式庫,儘管目前團隊還沒有如何實現語言庫模組化的策略。

此外,Torvalds 指出,提供的驅動程式範例毫無用處,並建議我們使用一些能夠解決實際問題的驅動程式作為範例。

更新:Google 已宣布參與將 Rust 支援推入 Linux 核心的計劃,並提供了引入 Rust 來解決記憶體錯誤引起的問題的技術原因。 Google 認為 Rust 已準備好加入 C 語言,成為開發 Linux 核心元件的語言。 本文也提供了在 Android 平台中使用 Rust 語言開發核心驅動程式的範例(Rust 被認為是 Android 開發的官方支援語言)。

值得注意的是,Google 已經為 Binder 進程間通訊機制準備了用 Rust 編寫的驅動程式的初始原型,這將允許對 C 和 Rust 中的 Binder 實現的效能和安全性進行詳細比較。 就目前的形式而言,這項工作尚未完成,但對於 Binder 工作所需的幾乎所有核心​​功能的基本抽象,已經準備好在 Rust 程式碼中使用這些抽象的層。

來源: opennet.ru

添加評論