Linus 談 Linux 中 Rust 支持:保持觀望,驅動程序是首選
Linux 內核對 Rust 的支持一直是個備受關注的話題。此前,Linus Torvalds 曾回應稱可以默認啟用 Rust 支持;Linux 內核的穩定分支維護者 Greg Kroah-Hartman 也表示愿意接受用 Rust 開發 Linux 驅動,社區正在推動用 Rust 來編寫內核代碼的進展。針對此事,外媒 ZDNet 近日則進一步采訪了 Linus 和 Greg,以詢問他們的具體看法。
Rust 是一款流行的系統編程語言,將對性能的低級(low-level)控制與現代語言功能結合在一起,語法上類似于 C ++,但是可以保證內存安全。目前,Debian Linux 開發者 Sylvestre Ledru 已將 Rust 版本的 Coreutils(GNU shell 的核心工具)移植到了 Linux。
近年來,Rust 語言已越來越受到微軟、AWS 等大廠的偏愛;這些都跟它注重內存安全的特性脫不了干系。AWS 產品經理 Samartha Chandrashekar 稱,Rust 有助于確保線程安全,并防止與內存相關的錯誤(例如可能導致安全漏洞的緩沖區溢出)。他這一看法也得到了很多其他開發者的贊同。
目前,大約有三分之二的 Linux 內核漏洞均源自于內存安全問題。開發人員認為,理論上 Rust 可以通過使用該語言天生更安全的 API 來完全避免這些問題。Linux 開發者 Nelson Elhage 稱,Linux Rust 的支持者并不是提議將 Linux 內核重寫成 Rust,他們只是專注于走向一個可以用 Rust 編寫新代碼的世界。在 2020 Linux Plumbers 大會上,與會者曾集中討論了 Linux 內核對 Rust 的支持可能涉及到的三個方面:內核中現有的 API、架構支持,和 ABI 與內核的兼容性問題。
對此,Linus Torvalds 則表明,自己仍持一個觀望的態度。“我對這個項目很感興趣,但我認為這是由那些對 Rust 非常上頭的人推動的,我想看看它最終如何在實踐中發揮作用”。
就個人而言,Linus 認為自己并不是一個推崇 Rust 的人,但考慮到該語言所允諾的一些優勢以及其可以解決一些安全隱患的能力,Linus 對它仍持開放態度。不過 Linus 也表示,“但我也知道,有時候承諾是不會兌現的。”
在 Linux 內核中的嘗試方面,Linus 指出,Rust 的首要目標應該是驅動程序。因為在那里可以找到許多不同的可能目標,且內核的這些各個部分都相當小且獨立。“對一些人來說,這可能不是一個非常有趣的目標。但卻是'obvious one'”。
而先拿驅動程序開刀還有一個原因是,"任何對驅動程序的初步試驗都只是架構方面的問題";Linus 稱,很多驅動程序都只與幾個目標架構有關,因此,即使 Rust 代碼在某些架構上不被支持,問題也不會顯得很嚴重。
Greg 也贊同認為,驅動程序可能是第一個進行此等嘗試的地方;因為它們依賴于核心內核功能,但卻沒有任何東西依賴于它們。
此外,有些人曾向 Linus 反饋稱他們根本不喜歡在用戶空間中使用 Rust;并抱怨,用戶空間中的 Rustification 對于未來內核的使用并不是一個好兆頭。
對此,Linus 則表示,內核與用戶空間項目并不相同。內核“在某些方面更加困難(我們使用了很多非常奇怪的頭文件,這些頭文件突破了 C 的界限),但在許多其他方面卻也比較容易(主要是因為內核是相當獨立的,因此最終二進制文件不依賴其他項目)。”
最后,Greg 總結稱,"這一切都將歸結于如何將用 C 語言編寫的內核核心結構和壽命規則之間的交互映射到 Rust 結構和壽命規則中,以使得 Rust 中的驅動程序能夠正確使用它們。為此,開發者們需要做很多細致的工作,我祝他們好運。"
雖然短時間內我們還不會看到 Linux 從 C 語言移植到 Rust 中。但鑒于人們對將基于 Rust 的用戶空間程序、驅動程序,以及最終將基于 Rust 的 Linux 內核引入 Linux 操作系統的興趣和行動力,未來幾年內的發展或許值得期待。
本文轉自OSCHINA
本文標題:Linus 談 Linux 中 Rust 支持:保持觀望,驅動程序是首選
本文地址:https://www.oschina.net/news/134707/linus-torvalds-rust-fit-into-linux