Linux 的內核開發者談是否能用 Rust 語言編寫 Linux 核心?

作者 | 發布日期 2021 年 03 月 30 日 8:30 | 分類 軟體、系統 Telegram share ! follow us in feedly


2020 Linux Plumbers 大會,Linux 內核開發者開始認真討論內核內部使用 Rust 語言的想法。討論方向並非利用 Rust 語言重新改寫內核,而是新程式碼可用 Rust 語言編寫,然後與現有的內核基礎架構連接。

初期適合先編寫驅動程式

Torvalds 似乎並沒有被這個想法嚇到,事實上,他要求開始討論在內核構建環境預設啟用 Rust 編譯器的可能性。不過,這不意味著未來開發者提交的 Rust 程式碼就會接受到內核,啟用 Rust 編譯器只是意味盡可能讓任何提交的備選程式碼,可像其他語言的程式碼正確建構。

從去年會議以來,開發者已做了大量工作準備。而 ZDNet 最近詢問 Torvalds,未來用 Rust 編寫 Linux 內核的可能性。

Torvalds 表示,「我很感興趣,但我認為這計畫是由對 Rust 語言感到非常興奮的人們推動。我對它最終如何實踐發揮作用,很感興趣。」

Linux 內核大部分是用 C 語言編寫,是否未來會被 Go 和 Rust 等語言取代?Torvalds 表示,「C 仍然是十大語言之一,所以取代還很難說。不過對 Linux 內核來說,一些不是很核心的東西,很有可能取代。」

他認為各種裝置的驅動程式可能是 Rust 語言能很快開始嘗試的領域,因 Linux 需要大量的裝置驅動程式,且這些驅動程式相較其他種類程式小,且與其他程式關連性不大。

C 語言與 Rust 語言比較

到目前為止,Linux 內核都用 C 語言編寫。這可追溯至 1970 年代,所有 Unix 和類 Unix 系統都是用 C 語言編寫內核。

C 語言最大的優點是,並不是組合語言,因此讀寫程式簡單得多,且通常更容易在硬體架構間直接移植。

然而,C 語言仍然會讓你面臨幾乎所有組合語言可能出現的災難性錯誤。特別是一種對記憶體管理不友善的語言,C 語言不像其他一些高階語言會自動邊界檢查陣列或指標的堆疊區塊,增加溢位風險。

高階語言像是 PHP、Python 或 Java,採用隱式記憶體管理,程式語言本身會拒絕讓你把 16K 資料塞進 2K 緩衝區,避免緩衝區溢位。同樣高階語言會自動回收「孤兒」記憶體,當某些函數終止後,變數不再使用,高階語言就會釋放這些佔用的空間。

Rust 語言就像 Google 的 Go 語言,是新一代語言之一,目標就是在 C 語言與高階語言之間取得平衡,不但提供速度、靈活性,以及 C 語言會有的大部分直接映射到硬體功能的功能,同時提供記憶體安全的環境。

(首圖來源:shutterstock)

關鍵字: , , ,