Rust 時(shí)代真的要來了?將成為 Linux 的第二個(gè)官方語(yǔ)言
大家知道,Linux 是 C 語(yǔ)言的代言人。但是,目前 Rust 正在興起而且贏得越來越多人的支持,以至于有人提議用 Rust 編程語(yǔ)言重寫 Linux,至少部分重寫。Linus Torvalds 和其他核心內(nèi)核維護(hù)者都表示原則上對(duì)支持 Rust 的內(nèi)核開發(fā)持開放態(tài)。
就在不久之前,Linux 內(nèi)核中會(huì)使用除 C 之外的另一種語(yǔ)言的想法會(huì)被嘲笑。不過,現(xiàn)在事情已經(jīng)起了變化。如今,不僅高級(jí)系統(tǒng)語(yǔ)言Rust越來越接近 Linux,而且下一個(gè)“補(bǔ)丁系列將 Rust 作為第二語(yǔ)言添加到 Linux 內(nèi)核中”,它比以往任何時(shí)候都更接近Linux。
這些新包的最大變化是,為內(nèi)核提議的 Rust 代碼現(xiàn)在依賴于穩(wěn)定的 Rust 編譯器而不是 beta 編譯器。展望未來,每次發(fā)布新的穩(wěn)定 Rust 編譯器時(shí),Linux 上的 Rust 都會(huì)遷移。目前,它使用Rust 1.57.0。
Rust 1.57.0 最新版本截圖
正如 Linux 內(nèi)核和 Linux 上的 Rust 領(lǐng)導(dǎo)者,開發(fā)人員 Miguel Ojeda 所說,“通過升級(jí)編譯器,我們已經(jīng)能夠從列表中刪除一些我們正在使用的不穩(wěn)定功能。” 這反過來意味著 Linux 上的 Rust 將更加穩(wěn)定。
展望未來,Ojeda 寫道:“我們將繼續(xù)升級(jí),直到我們不依賴任何不穩(wěn)定的功能;在這一點(diǎn)上,我們可能想開始聲明支持 Rust 的最低版本,例如 GCC 和 Clang。
高級(jí) Linux 內(nèi)核開發(fā)人員 Greg Kroah-Hartman 曾說,他愿意接受使用Rust開發(fā)Linux內(nèi)核的驅(qū)動(dòng)程序,因?yàn)?ldquo;它們是內(nèi)核源代碼中依賴關(guān)系樹的‘末端葉子’。它們依賴于核心內(nèi)核功能,但沒有任何東西依賴于它們。”
在在 2020 (virtual) Linux Plumbers Conference 會(huì)議上,頂級(jí) Linux 內(nèi)核開發(fā)人員討論了 Linux 的未來,已經(jīng)有將引入 Rust 作為內(nèi)核的第二語(yǔ)言的想法。
盡管 Linus Torvalds 確信,Linux 最終不會(huì)用 Rust 編寫。但是,那不是目標(biāo)。沒有人會(huì)用 Rust 重寫內(nèi)核的 2500 萬行 C。
在 Rust 語(yǔ)言負(fù)責(zé)人 Josh Triplett 和 Google 工程師 Nick Desaulniers 的帶領(lǐng)下,他們提議在內(nèi)核中使用系統(tǒng)級(jí) Rust 語(yǔ)言。為什么?因?yàn)樗?C 安全得多,尤其是在處理內(nèi)存錯(cuò)誤方面。
正如微軟首席云開發(fā)倡導(dǎo)者 Ryan Levick 所解釋的那樣,“ Rust 是完全內(nèi)存安全的。” 由于大約三分之二的安全問題可以追溯到內(nèi)存處理不當(dāng),這是一個(gè)重大改進(jìn)。此外,“Rust 通??梢栽诓辉黾尤魏芜\(yùn)行時(shí)開銷的情況下防止這些問題,”Levick 說。
Torvalds 雖然鼓勵(lì)采用緩慢但穩(wěn)定的方法將 Rust 引入 Linux,但他也表示將 Rust 接口用于驅(qū)動(dòng)程序和其他非核心內(nèi)核程序是有道理的:“我相信這會(huì)發(fā)生。它可能不是 Rust,但我們將會(huì)有不同的模型來編寫這些類型的東西,而且 C 不會(huì)是唯一的模型。”
Linux 內(nèi)核維護(hù)者 Miguel Ojeda以前曾表示,“該項(xiàng)目尚未完成,大多數(shù)工作還沒有完成。但如果高級(jí)維護(hù)人員接受當(dāng)前的更改并希望我們?cè)趦?nèi)核中工作,我們就準(zhǔn)備好進(jìn)入主線。”
不過,現(xiàn)在工作進(jìn)展順利。我希望在 2022 年的某個(gè)時(shí)候看到 Linux 內(nèi)核中的第一個(gè) Rust 代碼。