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