取代C++!3.6萬行Rust代碼改寫Windows內(nèi)核,這門語言最早竟用來修電梯
取代C++,Rust真的要重寫萬物了!
在得到Linux、谷歌、亞馬遜云等大廠青睞后,最近的爆炸消息——
微軟已經(jīng)用3.6萬行Rust代碼改寫了Windows內(nèi)核。
而且推進(jìn)速度相當(dāng)快,4月劇透消息,過了兩周,Windows 11內(nèi)部預(yù)覽版已經(jīng)用上了。
微軟云Azure CTO在推特上激動(dòng)喊話:
如果你加入了Windows 11 Insider Preview內(nèi)測,你將首次體驗(yàn)到Rust支持的Windows內(nèi)核!

重寫的內(nèi)核中,主要包括DWriteCore 以及Win32 GDI兩個(gè)項(xiàng)目,并通過了Windows開機(jī)所有測試。
其中,Win32 GDI寫于上世紀(jì)80年代末90年代初,是工齡30多年的老代碼了。
如今之所以被Rust取代,微軟給的理由簡單粗暴:
Rust語言有著極高的內(nèi)存安全性,原來內(nèi)核中大量的不安全的子例程也在改寫后消失不見。同時(shí),Rust語言更簡潔高效。
公開資料還表示,隨著時(shí)間的推移,Windows內(nèi)核對(duì)Rust的采用將被大幅擴(kuò)展。
不光是大廠喜愛,Rust還連續(xù)多年成為Stack Overflow開發(fā)者調(diào)查中“最受歡迎的編程語言”。最近Unix系統(tǒng)的基礎(chǔ)工具sudo和su也要用Rust重寫了。
不過有點(diǎn)意外的是,Rust最初被發(fā)明出來,竟然是為了修電梯???
怒爬21層樓后決定開發(fā)新語言
萬事起源只在于2006年的某天,一位名叫格雷頓老哥(Graydon Hoare)住的那棟公寓,電梯又壞了。
第n次,他一邊罵罵咧咧一邊努力爬向自己位于21樓的家。他想不通,電梯系統(tǒng)咋就這么容易崩潰呢?不應(yīng)該呀!
作為一名大廠碼農(nóng),格雷頓老哥覺得,這事兒不是不能解決。
當(dāng)時(shí)他29歲,正在開源網(wǎng)頁瀏覽器Mozilla公司(火狐背后的公司)打工。作為業(yè)內(nèi)人士,他深知大多數(shù)的電梯故障,都是編寫程序的語言很容易意外引入內(nèi)存錯(cuò)誤,從而引發(fā)軟件崩潰。
而當(dāng)時(shí)電梯軟件往往是用C或C++語言編寫。
它們的優(yōu)點(diǎn)是緊湊、快速,但問題是非常容易引發(fā)內(nèi)存錯(cuò)誤,導(dǎo)致系統(tǒng)崩潰,甚至是安全問題。
所以一不做二不休,格雷頓老哥為了不再爬樓,干脆決定搞個(gè)新編程語言出來。
目標(biāo)就是不容易內(nèi)存錯(cuò)誤的語言,最好更短、更快。
于是,Rust語言誕生了。
而且Rust的取名,也很有意思。
Rust和一種真菌同名,中文學(xué)名植物銹病,格雷頓評(píng)價(jià)其“為了生存而過度設(shè)計(jì)”。
這種真菌生物結(jié)構(gòu)完全是分布式的,空間上無單點(diǎn)失敗,也就是說單獨(dú)去掉哪部分都不影響它的存活,魯棒性賊強(qiáng)。
在全生命周期中,Rust真菌共有5種生命形態(tài),其中3種形態(tài)還能倒退回上一形態(tài),幾乎等同于蝴蝶還能變回毛毛蟲重新生長。
而且,Rust真菌可以多宿主寄生,恰能映射Rust語言對(duì)語言間互操作性的重視。

△患有Rust的植物(密恐患者們對(duì)不起了!)
在單槍匹馬個(gè)人開發(fā)幾年后,2009年,Rust得到Mozilla公司研究院的支助;2010年項(xiàng)目對(duì)外公布。
研發(fā)過程中,Rust已經(jīng)建立了一個(gè)活躍度極高的社區(qū),任何開發(fā)者都可以直接給這個(gè)項(xiàng)目提bug,或者直接貢獻(xiàn)源碼。
2015年5月,Rust的1.0版正式發(fā)布。
僅僅一年光景,Rust就吸納了無數(shù)的擁躉。2016年起,它連續(xù)7年被Stack Overflow開發(fā)者調(diào)查評(píng)為“最受歡迎的編程語言”。
連續(xù)榮登榜首所依仗的優(yōu)點(diǎn),一是運(yùn)行速度快,二是內(nèi)存利用率高,三是防止段錯(cuò)誤。
簡而言之,是在某些部分可以取代C/C++的利器。
所以代碼江湖流傳著一種說法,把Rust比作跑酷,可以做高危險(xiǎn)動(dòng)作,但是不太容易傷害到自己。
相比之下,C++可以看作是在玩帶火的電鋸。
而憑借著開發(fā)Rust,格雷頓老哥也一戰(zhàn)成名。
之后幾年內(nèi),他還參與了Swift的開發(fā)。
說來這也是一段有意思的故事。相比于當(dāng)團(tuán)隊(duì)leader,老哥似乎更喜歡做一線開發(fā)。
他曾在回應(yīng)“為什么離開Rust團(tuán)隊(duì)”中表示,2013年前后那段時(shí)間個(gè)人情感生活遭受重創(chuàng)(離婚),導(dǎo)致他沒有太多精力負(fù)責(zé)Rust團(tuán)隊(duì),后面他還在Mozilla總做了些低調(diào)且不著急上線的項(xiàng)目,然后就離職了。
直到2016年初,他接到了蘋果團(tuán)隊(duì)的一個(gè)電話,表示正在找?guī)兔﹂_發(fā)Swift的程序員,“是一個(gè)非領(lǐng)導(dǎo)職位,我更喜歡”。
靠著安全性成為大廠寵兒
但到這里,Rust的傳奇故事才說了一半。
憑借著“安全性高”的初衷,近幾年它在大廠中的受歡迎度也越來越高。
不僅是Windows,Linux、Android這些主流系統(tǒng)也都先后擁抱Rust。亞馬遜云、微軟、谷歌和Rust的關(guān)系也一直不錯(cuò)。
之所以會(huì)如此,主要原因或許還是C/C++在內(nèi)存安全方面,真的不太行。
比如微軟幾年前就對(duì)Rust很感興趣了,他們將其認(rèn)定為產(chǎn)品交付前消除內(nèi)存安全漏洞的好辦法。
2019年,微軟承認(rèn)其產(chǎn)品被CVE披露的漏洞中,有70%是因?yàn)槭褂肅/C++后導(dǎo)致的內(nèi)存安全漏洞。
而Rust工具鏈關(guān)注揪出代碼中的潛在漏洞,這在理想情況下能減少代碼被打擊的可能。
另一邊,Linux內(nèi)核也已引入Rust。
去年,由Linux基金會(huì)主辦的2022開源峰會(huì)上,Linus老爺子突然官宣,也許下一個(gè)版本就要把Rust加入進(jìn)來了!
這意味著官方將把Rust for Linux的PR合并到Linux內(nèi)核的主線里。
(Rust for Linux是一個(gè)呼吁Linux和Rust結(jié)合的組織)
要知道,此前光是Rust的支持補(bǔ)丁就已發(fā)布到第七版了。
當(dāng)時(shí)現(xiàn)場聽到這一消息,立刻掌聲雷動(dòng),以至于Linus花了好一會(huì)兒才讓大家平靜下來。
幾個(gè)月過后,Linux 6.1版本發(fā)布,內(nèi)核增加了Rust支持,成為了C語言之外的第二種官方語言。
谷歌這邊的動(dòng)作其實(shí)更早。
2021年Android 12發(fā)布,即宣布支持Rust。從這以后,他們就一直在Android開源項(xiàng)目中擴(kuò)大Rust的使用。
不過谷歌的做法不是立刻讓Rust來替代C/C++,而是新代碼用Rust來寫。
從官方發(fā)布的數(shù)據(jù)里可以看到,C和C++還是占主導(dǎo)地位,Rust的比例在逐步提升。

而截止去年年底,谷歌表示,Android中用Rust寫的部分,還沒有發(fā)現(xiàn)任何安全漏洞。
這個(gè)結(jié)果非常重要,因?yàn)樗馕吨鳵ust能有效防止Android中最常見的漏洞——也就是內(nèi)存安全漏洞。谷歌22年的數(shù)據(jù)顯示,內(nèi)存安全漏洞在各類漏洞中的占比都非常高。

在許多C/C++寫的組件中(如藍(lán)牙、NFC等),每一千行代碼中就會(huì)有1個(gè)漏洞。按照這個(gè)比例來換算,Rust很可能已經(jīng)阻止了數(shù)百個(gè)漏洞。
以及基于它高并發(fā)的優(yōu)點(diǎn),在Android中使用Rust,還能進(jìn)一步平衡系統(tǒng)安全和延遲,一般來說一些安全措施會(huì)導(dǎo)致編程語言變慢。
比如使用新的UWB堆棧,可以節(jié)省幾兆內(nèi)存,并通過現(xiàn)有進(jìn)程運(yùn)行來避免一些IPC延遲。
亞馬遜云對(duì)Rust也格外喜歡,因?yàn)樗诠?jié)省能源上同樣表現(xiàn)很nice。
一項(xiàng)研究測試了27種編程語言,結(jié)果發(fā)現(xiàn)C和Rust在能源利用方面,比Java高效50%,比Python高效98%。
但C的問題已經(jīng)說了很多遍了,內(nèi)存安全漏洞多,所以綜合這么一看,Rust又贏了。

實(shí)際上,大廠們對(duì)Rust已經(jīng)不只是青睞,甚至是寵愛了。
2020年,Rust背后公司Mozilla宣布大規(guī)模裁員,Rust團(tuán)隊(duì)被裁掉,Rust的命運(yùn)陷入巨大的不確定中。
為了規(guī)避掉這種隱憂,亞馬遜、微軟、谷歌、華為等大廠,直接共同發(fā)起了一個(gè)Rust非盈利基金會(huì)。承諾兩年內(nèi)投入約100萬美元預(yù)算,支持Rust項(xiàng)目維護(hù)。
而在業(yè)內(nèi),Rust的事跡更是數(shù)不勝數(shù)。
最近,兩個(gè)類Unix的核心實(shí)用程序sudo和su正在用Rust重寫中;此前,GitHub痛改自家搜索引擎基于Rust;Discord一個(gè)Go服務(wù)也用Rust重寫了……
不過,Rust也存在缺點(diǎn),比如學(xué)到后面會(huì)比較難,剛上手的開發(fā)速度也比Go、Java慢很多。
所以Rust好評(píng)度高,但是“賣座率”還比較一般,甚至?xí)淮蛏稀袄溟T語言”的標(biāo)簽。
尤其是國內(nèi)對(duì)Rust招聘,簡直可以用“少得可憐”來形容。
有網(wǎng)友抱著悲觀態(tài)度:

為此,Rust也在進(jìn)一步優(yōu)化自身。
根據(jù)其發(fā)布的Rust 2024路線中,官方團(tuán)隊(duì)將在降低學(xué)習(xí)門檻、壯大生態(tài)連接等方面加大努力。
所以,后面Rust會(huì)怎么走下去,也還是值得期待了~


























