自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

原創(chuàng)
系統(tǒng) Linux
C語言和Rust語言兩大陣營的分歧相當(dāng)大?!坝行┤司褪遣幌矚gRust的概念,也不喜歡Rust侵入他們的領(lǐng)域……人們甚至談到了Rust集成的失敗。”

編輯 |言征

Linux已經(jīng)走過了33個年頭,而時到如今,創(chuàng)始人Linus在一直為了推動其發(fā)展而爭吵不斷,是一個出了名的“暴君”。

然而對于Rust進入Linux內(nèi)核遇挫這件事上,Linus似乎變得平和起來,甚至有些“理智的消極”。Linus坦言:自己搞不懂為什么到現(xiàn)在,Rust竟然還會有如此大的爭議!

1.Linux已分裂成了兩派

9月初,一位Linux內(nèi)核維護者Wedson在網(wǎng)上發(fā)布了帖子,自曝跟Rust語言貢獻者發(fā)生了沖突,因為難以忍受適配Rust的C插件問題過程中的“非技術(shù)性的技術(shù)廢話”憤而辭職。

這一場Linux內(nèi)核的C語言和Rust語言貢獻者之間發(fā)生的沖突,Linux創(chuàng)始人Linus Torvalds將其定性為“幾乎帶有宗教戰(zhàn)爭色彩的爭議”。在本周三舉行的開源峰會主題演講中,托瓦茲表示,盡管爭議中不乏健康的辯論,但有些辯論變得非常消極。

圖片圖片

Linus將這一爭議比作vi與emacs之間的文化戰(zhàn)爭,即哪種文本編輯器更優(yōu)越,這也被稱為“編輯器大戰(zhàn)”。

“我實際上很享受這種爭論。我喜歡辯論。我認為Rust的一個優(yōu)點在于它讓一些討論變得生動有趣,雖然有些爭論變得很難聽……但這表明人們是多么在意。同時,我不太確定為什么Rust會成為如此有爭議的話題,”托瓦茲說。“這讓我想起了我年輕的時候,人們爭論vi和emacs哪個更好,但不知何故,整個Rust與C的爭論在某些方面幾乎帶上了宗教色彩?!?/p>

然而,對于選擇哪一種編輯器,抑或哪一種語言,相信大多數(shù)程序員最后都會回答:我并不care。

因為程序員并不需要用最難的工具來證明自身的技能。一個好的程序員是懶惰的!

2.Linux土壤是C,Rust被宣示主權(quán)

一位知情人透露,一小部分C內(nèi)核開發(fā)人員似乎決心讓 Rust 維護者的生活變得盡可能艱難。他們認為 Rust 毫無價值,寧愿Rust消失。

“去年,當(dāng)我嘗試將DRM 抽象上游化時,Rust 中對"device”概念的基本支持全部受阻。即使只是 struct device 的存根包裝器也足夠了。直到最近,也就是一年多之后,這個簡單的概念才終于得以實現(xiàn)?!?/p>

圖片圖片

一個概念用了一年多才得以實現(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維護者們依舊不為所動。

在原來的這位C維護者看來,一個C驅(qū)動程序可以work,那么Rust驅(qū)動程序也必須以相同的形式work。

沒錯,表面上看是兩種語言的特性沖突,但實際上看是C版內(nèi)核維護者在向Rust貢獻者宣示自己對于Linux貢獻的絕對主權(quán)。

新王未成,舊王維穩(wěn)。就如同Linux通過30余年建立起開源霸主的地位一般,C語言這位王者在與Rust這位未來極具挑戰(zhàn)性的后起之秀的關(guān)系上多少有些尷尬:一方面自己需要Rust來解決自身積累多年的內(nèi)存安全等方面的問題,另一方面在引入Rust的同時又面臨著被新語言思想適配所帶來的被重構(gòu)的尷尬與不安。

這種“尷尬與不安”可以形容為“甘道夫級別的C巫師因為要重新披上一個新手巫師的Rust道袍而頓感羞恥”。

一些C內(nèi)核的維護者認為自己的開發(fā)信念受到了攻擊,讓他們突然接受自己的代碼或自己喜歡的代碼馬上就要變過時了,并沒有那么容易。

3.Rust進入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)核維護者用看似閑聊實則極其激烈的方式進行嘲諷:“你們只不過是想讓更多人皈依你們的Rust宗教!”直至讓工作人員精疲力盡,對項目產(chǎn)生倦怠。

這里,不得不展開提一下Wedson離職還暴露了另一個我們往往忽視的問題:Linux的工作環(huán)境正在變得“不和諧”甚至“有毒”。

本月初,他在宣布“卸任Linux項目的Rust語言維護者一職”中提到了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團隊:謝謝你們,你們很棒。與你們所有人一起工作是我的榮幸;我們一起討論技術(shù)問題、尋找解決漏洞的方法等時光,都是我一直喜歡并期待的。我很幸運能與這樣一個才華橫溢、友好的團隊合作。”

“我祝愿項目一切順利。我真的相信內(nèi)核的未來在于內(nèi)存安全的語言。我不是一個先知,但如果Linux不將其內(nèi)化,我擔(dān)心其他內(nèi)核會對其做出與Unix相同的事情?!?/p>

4.問題的核心:兩者開發(fā)文化

問題的核心在于C語言和Rust語言在跨語言邊界提交更改時產(chǎn)生的文化沖突。

正如Linus今天所描述的那樣,C語言是一種相對“簡單的語言”,這也是“我喜歡C語言,以及為什么許多C語言程序員喜歡C語言的原因之一。當(dāng)然簡單也是有代價的,因為簡單,所以也很容易出錯。

“而Rust則完全不同。有很多習(xí)慣于C語言模式的人,他們不一定喜歡這種差異,這也沒關(guān)系?!?/p>

從Rust的角度來看,為Rust用戶修改某個C接口可能是有意義的,而C語言用戶則希望Rust能做出貢獻,以便與C語言結(jié)合使用。

這一爭議可以追溯到三年多前,當(dāng)時有人提出Rust語言因提供C語言所不具備的某些安全優(yōu)勢,可以成為內(nèi)核的一部分,甚至可能取代C語言。盡管如此,該項目并未因此停滯不前。

例如,以前用C語言和CPU可以制造的著名緩沖區(qū)溢出黑客攻擊或漏洞,現(xiàn)在幾乎已經(jīng)過時了。雖然Rust提供了一些安全特性和不足,但相比之下,它比C語言更難學(xué),而C語言則更容易掌握。

5.為什么不做一個純Rust版的內(nèi)核?

有人會想到另一個解決方案:既然Rust融不進去C版Linux,直接做一個Rust版的Linux內(nèi)核不就好了嗎?

答案是否定的。

正如思科公司 Isovalent 的首席開源官 Liz Rice 認為,Rust 是一種較新的語言,具有“非常強大的優(yōu)勢,但并不是所有人都會立即知道如何編寫 Rust 代碼。很多在內(nèi)核的 eBPF 子系統(tǒng)上工作的人不會突然轉(zhuǎn)去學(xué)習(xí) Rust,以便完成工作,對吧?”

Rice 還提及了一個看起來幼稚但非常有代表性的場景:“我見過人們這樣說,‘哦,好吧,那我們?yōu)槭裁葱枰?eBPF 驗證器?如果我們用 Rust 完成所有工作,那就可以移除它了‘?!?nbsp;

但很明顯,當(dāng)提問者這么說時,并沒有完全理解 eBPF 驗證器的全部目的。開發(fā)不止是編程,更多還需要考慮代碼所服務(wù)的需求和場景。

對于這一點,Polar Signals 的首席執(zhí)行官兼創(chuàng)始人 Frederic Branczyk 也表示贊同:“在 Rust 中有很多例子,你不得不做一些不安全的操作,然后在其基礎(chǔ)上構(gòu)建安全的抽象?!?/p>

“所以,我當(dāng)然不是認為 Rust 會是一切問題的救星。我其實是 Rust 的大粉絲,但我認為 C 實際上是一種編寫操作系統(tǒng)的非常好的語言,而 Rust 也可以完成很多工作?!?/p>

6.王者與新秀之間的爭鋒

王者與新秀并存的場面,起初往往都是這樣,難以平衡。王者積累了相對穩(wěn)定和成熟的基本框架和路徑,但也滋生了難以逾越僅憑自身就能解決的問題;而新秀雖然在王者難以專注的領(lǐng)域異軍突起,但往往缺乏必要的、難以察覺的時間經(jīng)驗。

在技術(shù)領(lǐng)域更是如此。因為在技術(shù)領(lǐng)域,基本規(guī)則一開始變化往往難以察覺,隨后又將會指數(shù)級迅速變化。整體上看,C 語言非常適合快速發(fā)展、資源受限的環(huán)境。但在穩(wěn)健性、安全性和可維護性與硬件性能過強和大量共享的環(huán)境相結(jié)合的情況下,情況就不那么理想了。所以Linus才寄希望于Rust的加入。

然而,Rust for Linux項目給內(nèi)核開發(fā)者帶來了新的基本規(guī)則變化。遺憾的是,對于Linux而言,Rust和C內(nèi)核貢獻者之間似乎存在著某種難以逾越的鴻溝。

畢竟,數(shù)十年來在復(fù)雜環(huán)境中高效工作所獲得的知識、經(jīng)驗和觀點并不局限于某一特定語言,而這也正是Rust融入Linux所需要的。

悲劇的是,C版內(nèi)核維護者能否接納Rust的開發(fā)方式,為Rust提供寶貴的開發(fā)經(jīng)驗,至少現(xiàn)在看也是一個很難接受的問題。

7.寫在最后:Linus也無解

不得不說,在Linux內(nèi)核融入Rust上面,Linus碰到了一個硬釘子。

C語言和Rust語言兩大陣營的分歧相當(dāng)大?!坝行┤司褪遣幌矚gRust的概念,也不喜歡Rust侵入他們的領(lǐng)域……人們甚至談到了Rust集成的失敗?!?/p>

Linus對此也是無解:“有很多人習(xí)慣了C模型,但他們不一定喜歡差異......沒關(guān)系……有些人關(guān)心特定的架構(gòu),有些人喜歡文件系統(tǒng),這應(yīng)該是這樣的。這就是我看待Rust的方式。”

但Linus對于這個項目充滿期待:“我們已經(jīng)做了幾年了,所以現(xiàn)在甚至說這些還為時過早”。不過他也沒有說太滿:“但我也認為,即使它失敗了(而我認為它不會),這也是一種學(xué)習(xí)的方式。所以,我認為這種推廣活動是有積極意義的。”

畢竟,時間是一切問題的良藥,在這場討論中,主持人在臨近尾聲時開了一個調(diào)侃的玩笑:

“Torvalds在過去33年里一直是Linux項目的傀儡,但不太可能再擔(dān)任33年。希望到那時,關(guān)于Rust的爭論會得到解決?!?/p>

參考鏈接:

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/

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2012-07-22 20:44:06

HTML5HTML5標(biāo)準

2019-04-22 12:54:29

2023-11-01 11:52:22

lunar語言版本

2019-03-25 10:01:41

攜號轉(zhuǎn)網(wǎng)運營商通信

2019-02-19 11:12:17

機器人快遞物流機器人

2023-02-28 11:07:22

2020-11-02 09:34:47

云計算IaaS云服務(wù)商

2018-11-22 10:05:02

區(qū)塊鏈數(shù)字貨幣分叉

2025-02-26 01:23:02

C++11Raw代碼

2015-08-18 15:19:56

程序員精神分裂

2010-02-26 15:38:29

Linux內(nèi)核版本

2021-07-17 15:48:13

Rust編程語言關(guān)鍵字

2019-04-23 10:34:47

2019-03-24 20:30:18

樹莓派Linux

2011-03-24 11:01:48

TRILLSPB數(shù)據(jù)中心

2021-12-13 08:55:54

RustLinux官方語言

2022-06-13 10:53:42

Linux桌面發(fā)行版Windows

2024-08-26 00:00:06

異步編程程序

2021-09-04 23:28:50

iOS蘋果安卓

2020-01-15 09:53:59

MySQL緩存索引
點贊
收藏

51CTO技術(shù)棧公眾號