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

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

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

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

[復(fù)制鏈接]

430

主題

430

帖子

2906

積分

三級會員

Rank: 3Rank: 3

積分
2906
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-9-24 09:00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
點擊上方“C語言與CPP編程”,選擇“關(guān)注/置頂/星標(biāo)公眾號
干貨福利,第一時間送達(dá)!
最近有小伙伴說沒有收到當(dāng)天的文章推送,這是因為微信改了推送機制,確實會一部分有小伙伴刷不到當(dāng)天的文章,一些比較實用的知識和信息,錯過了就是錯過了。所以建議大家加個星標(biāo)??,就能第一時間收到推送了。


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

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

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

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

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



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



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



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



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



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

使用道具 舉報

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

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


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