電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 628|回復(fù): 0
收起左側(cè)

Rust讓Linux分裂成了兩派,真的八字不合?

[復(fù)制鏈接]

475

主題

475

帖子

4237

積分

四級(jí)會(huì)員

Rank: 4

積分
4237
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-24 09:00:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
點(diǎn)擊上方“C語(yǔ)言與CPP編程”,選擇“關(guān)注/置頂/星標(biāo)公眾號(hào)
干貨福利,第一時(shí)間送達(dá)!
最近有小伙伴說(shuō)沒(méi)有收到當(dāng)天的文章推送,這是因?yàn)槲⑿鸥牧送扑蜋C(jī)制,確實(shí)會(huì)一部分有小伙伴刷不到當(dāng)天的文章,一些比較實(shí)用的知識(shí)和信息,錯(cuò)過(guò)了就是錯(cuò)過(guò)了。所以建議大家加個(gè)星標(biāo)??,就能第一時(shí)間收到推送了。


Linux已經(jīng)走過(guò)了33個(gè)年頭,而時(shí)到如今,創(chuàng)始人Linus在一直為了推動(dòng)其發(fā)展而爭(zhēng)吵不斷,是一個(gè)出了名的“暴君”。
然而對(duì)于Rust進(jìn)入Linux內(nèi)核遇挫這件事上,Linus似乎變得平和起來(lái),甚至有些“理智的消極”。Linus坦言:自己搞不懂為什么到現(xiàn)在,Rust竟然還會(huì)有如此大的爭(zhēng)議!

Linux已分裂成了兩派
9月初,一位Linux內(nèi)核維護(hù)者Wedson在網(wǎng)上發(fā)布了帖子,自曝跟Rust語(yǔ)言貢獻(xiàn)者發(fā)生了沖突,因?yàn)殡y以忍受適配Rust的C插件問(wèn)題過(guò)程中的“非技術(shù)性的技術(shù)廢話”憤而辭職。
這一場(chǎng)Linux內(nèi)核的C語(yǔ)言和Rust語(yǔ)言貢獻(xiàn)者之間發(fā)生的沖突,Linux創(chuàng)始人Linus Torvalds將其定性為“幾乎帶有宗教戰(zhàn)爭(zhēng)色彩的爭(zhēng)議”。在本周三舉行的開(kāi)源峰會(huì)主題演講中,托瓦茲表示,盡管爭(zhēng)議中不乏健康的辯論,但有些辯論變得非常消極。

Linus將這一爭(zhēng)議比作vi與emacs之間的文化戰(zhàn)爭(zhēng),即哪種文本編輯器更優(yōu)越,這也被稱為“編輯器大戰(zhàn)”。
“我實(shí)際上很享受這種爭(zhēng)論。我喜歡辯論。我認(rèn)為Rust的一個(gè)優(yōu)點(diǎn)在于它讓一些討論變得生動(dòng)有趣,雖然有些爭(zhēng)論變得很難聽(tīng)……但這表明人們是多么在意。同時(shí),我不太確定為什么Rust會(huì)成為如此有爭(zhēng)議的話題,”托瓦茲說(shuō)!斑@讓我想起了我年輕的時(shí)候,人們爭(zhēng)論vi和emacs哪個(gè)更好,但不知何故,整個(gè)Rust與C的爭(zhēng)論在某些方面幾乎帶上了宗教色彩!
然而,對(duì)于選擇哪一種編輯器,抑或哪一種語(yǔ)言,相信大多數(shù)程序員最后都會(huì)回答:我并不care。
因?yàn)槌绦騿T并不需要用最難的工具來(lái)證明自身的技能。一個(gè)好的程序員是懶惰的!

Linux土壤是C,Rust被宣示主權(quán)
一位知情人透露,一小部分C內(nèi)核開(kāi)發(fā)人員似乎決心讓 Rust 維護(hù)者的生活變得盡可能艱難。他們認(rèn)為 Rust 毫無(wú)價(jià)值,寧愿Rust消失。
“去年,當(dāng)我嘗試將DRM 抽象上游化時(shí),Rust 中對(duì)"device”概念的基本支持全部受阻。即使只是 struct device 的存根包裝器也足夠了。直到最近,也就是一年多之后,這個(gè)簡(jiǎn)單的概念才終于得以實(shí)現(xiàn)!

一個(gè)概念用了一年多才得以實(shí)現(xiàn),可想而知Rust融入C版的Linux將有多難。一方面是技術(shù)上的問(wèn)題,“當(dāng)我編寫 DRM 調(diào)度程序抽象時(shí),我遇到了許多由底層C代碼設(shè)計(jì)不良引起的內(nèi)存安全問(wèn)題。生命周期竟然沒(méi)有記錄,而就是簡(jiǎn)單歸結(jié)為‘像 amdgpu 一樣設(shè)計(jì)驅(qū)動(dòng)程序以使其工作,或者其他’!
但由此體現(xiàn)出的更多是人的問(wèn)題:這位知情人其他C驅(qū)動(dòng)程序也會(huì)因?yàn)樵愀獾腁PI問(wèn)題觸發(fā)相同的錯(cuò)誤,需要查詢隱藏的生命周期時(shí),C維護(hù)者們依舊不為所動(dòng)。
在原來(lái)的這位C維護(hù)者看來(lái),一個(gè)C驅(qū)動(dòng)程序可以work,那么Rust驅(qū)動(dòng)程序也必須以相同的形式work。
沒(méi)錯(cuò),表面上看是兩種語(yǔ)言的特性沖突,但實(shí)際上看是C版內(nèi)核維護(hù)者在向Rust貢獻(xiàn)者宣示自己對(duì)于Linux貢獻(xiàn)的絕對(duì)主權(quán)。
新王未成,舊王維穩(wěn)。就如同Linux通過(guò)30余年建立起開(kāi)源霸主的地位一般,C語(yǔ)言這位王者在與Rust這位未來(lái)極具挑戰(zhàn)性的后起之秀的關(guān)系上多少有些尷尬:一方面自己需要Rust來(lái)解決自身積累多年的內(nèi)存安全等方面的問(wèn)題,另一方面在引入Rust的同時(shí)又面臨著被新語(yǔ)言思想適配所帶來(lái)的被重構(gòu)的尷尬與不安。
這種“尷尬與不安”可以形容為“甘道夫級(jí)別的C巫師因?yàn)橐匦屡弦粋(gè)新手巫師的Rust道袍而頓感羞恥”。
一些C內(nèi)核的維護(hù)者認(rèn)為自己的開(kāi)發(fā)信念受到了攻擊,讓他們突然接受自己的代碼或自己喜歡的代碼馬上就要變過(guò)時(shí)了,并沒(méi)有那么容易。



Rust進(jìn)入Linux的三重困境
對(duì)于后來(lái)者,Rust面臨著三重困難:
一、Linux內(nèi)核的C接口不會(huì)分享給Rust,但當(dāng)Rust接口提出時(shí),就會(huì)被指出它是錯(cuò)誤的,而且不給出任何修復(fù)建議;
二、即便Rust接口被同意合并了,它也不過(guò)是二等公民。在重構(gòu)C接口時(shí),Rust接口卻得不到更新,所以更沒(méi)有人會(huì)去用Rust接口寫的驅(qū)動(dòng)程序;三、一個(gè)有毒的工作環(huán)境。比如——在Rust版內(nèi)核演講中,C版內(nèi)核維護(hù)者用看似閑聊實(shí)則極其激烈的方式進(jìn)行嘲諷:“你們只不過(guò)是想讓更多人皈依你們的Rust宗教!”直至讓工作人員精疲力盡,對(duì)項(xiàng)目產(chǎn)生倦怠。
這里,不得不展開(kāi)提一下Wedson離職還暴露了另一個(gè)我們往往忽視的問(wèn)題:Linux的工作環(huán)境正在變得“不和諧”甚至“有毒”。
本月初,他在宣布“卸任Linux項(xiàng)目的Rust語(yǔ)言維護(hù)者一職”中提到了YouTube上一個(gè)關(guān)于Rust中文件系統(tǒng)的視頻:“重申一遍,沒(méi)有人試圖強(qiáng)迫任何人學(xué)習(xí)Rust,也沒(méi)有人阻止C代碼的重構(gòu),”Wedson寫道。
這個(gè)視頻是Wedson和另一位開(kāi)發(fā)者Kent的演講會(huì)議,坐在下面有一些C語(yǔ)言的Linux內(nèi)核開(kāi)發(fā)者。這些開(kāi)發(fā)人員似乎并不關(guān)心30分鐘的演講內(nèi)容,更多地是嘲諷某一頁(yè)的幻燈片。
Wedson本身是一名C程序員,但他對(duì)Rust for Linux項(xiàng)目充滿著熱忱。
“Linux項(xiàng)目的Rust團(tuán)隊(duì):謝謝你們,你們很棒。與你們所有人一起工作是我的榮幸;我們一起討論技術(shù)問(wèn)題、尋找解決漏洞的方法等時(shí)光,都是我一直喜歡并期待的。我很幸運(yùn)能與這樣一個(gè)才華橫溢、友好的團(tuán)隊(duì)合作!
“我祝愿項(xiàng)目一切順利。我真的相信內(nèi)核的未來(lái)在于內(nèi)存安全的語(yǔ)言。我不是一個(gè)先知,但如果Linux不將其內(nèi)化,我擔(dān)心其他內(nèi)核會(huì)對(duì)其做出與Unix相同的事情!



問(wèn)題的核心:兩者開(kāi)發(fā)文化
問(wèn)題的核心在于C語(yǔ)言和Rust語(yǔ)言在跨語(yǔ)言邊界提交更改時(shí)產(chǎn)生的文化沖突。
正如Linus今天所描述的那樣,C語(yǔ)言是一種相對(duì)“簡(jiǎn)單的語(yǔ)言”,這也是“我喜歡C語(yǔ)言,以及為什么許多C語(yǔ)言程序員喜歡C語(yǔ)言的原因之一。當(dāng)然簡(jiǎn)單也是有代價(jià)的,因?yàn)楹?jiǎn)單,所以也很容易出錯(cuò)。
“而Rust則完全不同。有很多習(xí)慣于C語(yǔ)言模式的人,他們不一定喜歡這種差異,這也沒(méi)關(guān)系!
從Rust的角度來(lái)看,為Rust用戶修改某個(gè)C接口可能是有意義的,而C語(yǔ)言用戶則希望Rust能做出貢獻(xiàn),以便與C語(yǔ)言結(jié)合使用。
這一爭(zhēng)議可以追溯到三年多前,當(dāng)時(shí)有人提出Rust語(yǔ)言因提供C語(yǔ)言所不具備的某些安全優(yōu)勢(shì),可以成為內(nèi)核的一部分,甚至可能取代C語(yǔ)言。盡管如此,該項(xiàng)目并未因此停滯不前。
例如,以前用C語(yǔ)言和CPU可以制造的著名緩沖區(qū)溢出黑客攻擊或漏洞,現(xiàn)在幾乎已經(jīng)過(guò)時(shí)了。雖然Rust提供了一些安全特性和不足,但相比之下,它比C語(yǔ)言更難學(xué),而C語(yǔ)言則更容易掌握。



為什么不做一個(gè)純Rust版的內(nèi)核?
有人會(huì)想到另一個(gè)解決方案:既然Rust融不進(jìn)去C版Linux,直接做一個(gè)Rust版的Linux內(nèi)核不就好了嗎?
答案是否定的。
正如思科公司 Isovalent 的首席開(kāi)源官 Liz Rice 認(rèn)為,Rust 是一種較新的語(yǔ)言,具有“非常強(qiáng)大的優(yōu)勢(shì),但并不是所有人都會(huì)立即知道如何編寫 Rust 代碼。很多在內(nèi)核的 eBPF 子系統(tǒng)上工作的人不會(huì)突然轉(zhuǎn)去學(xué)習(xí) Rust,以便完成工作,對(duì)吧?”
Rice 還提及了一個(gè)看起來(lái)幼稚但非常有代表性的場(chǎng)景:“我見(jiàn)過(guò)人們這樣說(shuō),‘哦,好吧,那我們?yōu)槭裁葱枰?eBPF 驗(yàn)證器?如果我們用 Rust 完成所有工作,那就可以移除它了‘!
但很明顯,當(dāng)提問(wèn)者這么說(shuō)時(shí),并沒(méi)有完全理解 eBPF 驗(yàn)證器的全部目的。開(kāi)發(fā)不止是編程,更多還需要考慮代碼所服務(wù)的需求和場(chǎng)景。
對(duì)于這一點(diǎn),Polar Signals 的首席執(zhí)行官兼創(chuàng)始人 Frederic Branczyk 也表示贊同:“在 Rust 中有很多例子,你不得不做一些不安全的操作,然后在其基礎(chǔ)上構(gòu)建安全的抽象!
“所以,我當(dāng)然不是認(rèn)為 Rust 會(huì)是一切問(wèn)題的救星。我其實(shí)是 Rust 的大粉絲,但我認(rèn)為 C 實(shí)際上是一種編寫操作系統(tǒng)的非常好的語(yǔ)言,而 Rust 也可以完成很多工作!



王者與新秀之間的爭(zhēng)鋒????
王者與新秀并存的場(chǎng)面,起初往往都是這樣,難以平衡。王者積累了相對(duì)穩(wěn)定和成熟的基本框架和路徑,但也滋生了難以逾越僅憑自身就能解決的問(wèn)題;而新秀雖然在王者難以專注的領(lǐng)域異軍突起,但往往缺乏必要的、難以察覺(jué)的時(shí)間經(jīng)驗(yàn)。
在技術(shù)領(lǐng)域更是如此。因?yàn)樵诩夹g(shù)領(lǐng)域,基本規(guī)則一開(kāi)始變化往往難以察覺(jué),隨后又將會(huì)指數(shù)級(jí)迅速變化。整體上看,C 語(yǔ)言非常適合快速發(fā)展、資源受限的環(huán)境。但在穩(wěn)健性、安全性和可維護(hù)性與硬件性能過(guò)強(qiáng)和大量共享的環(huán)境相結(jié)合的情況下,情況就不那么理想了。所以Linus才寄希望于Rust的加入。
然而,Rust for Linux項(xiàng)目給內(nèi)核開(kāi)發(fā)者帶來(lái)了新的基本規(guī)則變化。遺憾的是,對(duì)于Linux而言,Rust和C內(nèi)核貢獻(xiàn)者之間似乎存在著某種難以逾越的鴻溝。
畢竟,數(shù)十年來(lái)在復(fù)雜環(huán)境中高效工作所獲得的知識(shí)、經(jīng)驗(yàn)和觀點(diǎn)并不局限于某一特定語(yǔ)言,而這也正是Rust融入Linux所需要的。
悲劇的是,C版內(nèi)核維護(hù)者能否接納Rust的開(kāi)發(fā)方式,為Rust提供寶貴的開(kāi)發(fā)經(jīng)驗(yàn),至少現(xiàn)在看也是一個(gè)很難接受的問(wèn)題。?



寫在最后:Linus也無(wú)解
不得不說(shuō),在Linux內(nèi)核融入Rust上面,Linus碰到了一個(gè)硬釘子。
C語(yǔ)言和Rust語(yǔ)言兩大陣營(yíng)的分歧相當(dāng)大。“有些人就是不喜歡Rust的概念,也不喜歡Rust侵入他們的領(lǐng)域……人們甚至談到了Rust集成的失敗!
Linus對(duì)此也是無(wú)解:“有很多人習(xí)慣了C模型,但他們不一定喜歡差異......沒(méi)關(guān)系……有些人關(guān)心特定的架構(gòu),有些人喜歡文件系統(tǒng),這應(yīng)該是這樣的。這就是我看待Rust的方式!
但Linus對(duì)于這個(gè)項(xiàng)目充滿期待:“我們已經(jīng)做了幾年了,所以現(xiàn)在甚至說(shuō)這些還為時(shí)過(guò)早”。不過(guò)他也沒(méi)有說(shuō)太滿:“但我也認(rèn)為,即使它失敗了(而我認(rèn)為它不會(huì)),這也是一種學(xué)習(xí)的方式。所以,我認(rèn)為這種推廣活動(dòng)是有積極意義的!
畢竟,時(shí)間是一切問(wèn)題的良藥,在這場(chǎng)討論中,主持人在臨近尾聲時(shí)開(kāi)了一個(gè)調(diào)侃的玩笑:?
“Torvalds在過(guò)去33年里一直是Linux項(xiàng)目的傀儡,但不太可能再擔(dān)任33年。希望到那時(shí),關(guān)于Rust的爭(zhēng)論會(huì)得到解決!
參考鏈接:https://www.theregister.com/2024/09/02/rust_for_linux_maintainer_steps_down/https://www.theregister.com/2024/09/19/torvalds_talks_rust_in_linux/
分享個(gè)群友推薦的招聘類小程序這里分享一個(gè)交流群群友推薦的招聘小程序,支持簡(jiǎn)歷托管,直接把簡(jiǎn)歷托管,找到合適的工作后再下架即可,這樣就不需要自己每天手動(dòng)刷了。
其中有很多二三線城市,比如赤峰、保定、阿克蘇之類的三四線城市,還支持按照崗位、地點(diǎn)和薪資要求來(lái)找合適的崗位。
經(jīng)常遇到一些想回老家或者二三線城市的同學(xué)苦于沒(méi)有合適的去處,打開(kāi)boss直聘和獵聘網(wǎng)這些招聘類軟件,結(jié)果發(fā)現(xiàn)好的崗位基本都集中在一線城市,很少看到那種有二三線城市的招聘崗位。

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表