首頁 / 新聞 / 取代C++,3.6萬行Rust代碼改寫Windows内核,這(zhè)門語言最早竟用來修電梯

取代C++,3.6萬行Rust代碼改寫Windows内核,這(zhè)門語言最早竟用來修電梯

作者: 兆光科技 發(fā)布時間: 2024/08/09 點擊: 778次

Rust真的要重寫萬物

取代C++,Rust真的要重寫萬物了!

在得到Linux、谷歌、亞馬遜雲等大廠青睐後(hòu),最近的爆炸消息——

微軟已經(jīng)用3.6萬行Rust代碼改寫了Windows内核

而且推進(jìn)速度相當快,4月劇透消息,過(guò)了兩(liǎng)周,Windows 11内部預覽版已經(jīng)用上了。

微軟雲Azure CTO在推特上激動喊話:

如果你加入了Windows 11 Insider Preview内測,你將(jiāng)首次體驗到Rust支持的Windows内核!

重寫的内核中,主要包括DWriteCore 以及Win32 GDI兩(liǎng)個項目,并通過(guò)了Windows開(kāi)機所有測試。

其中,Win32 GDI寫于上世紀80年代末90年代初,是工齡30多年的老代碼了。

如今之所以被(bèi)Rust取代,微軟給的理由簡單粗暴:

Rust語言有著(zhe)極高的内存安全性,原來内核中大量的不安全的子例程也在改寫後(hòu)消失不見。同時,Rust語言更簡潔高效。

公開(kāi)資料還(hái)表示,随著(zhe)時間的推移,Windows内核對(duì)Rust的采用將(jiāng)被(bèi)大幅擴展

不光是大廠喜愛,Rust還(hái)連續多年成(chéng)爲Stack Overflow開(kāi)發(fā)者調查中“最受歡迎的編程語言”。最近Unix系統的基礎工具sudo和su也要用Rust重寫了。

不過(guò)有點意外的是,Rust最初被(bèi)發(fā)明出來,竟然是爲了修電梯???

怒爬21層樓後(hòu)決定開(kāi)發(fā)新語言

萬事(shì)起(qǐ)源隻在于2006年的某天,一位名叫(jiào)格雷頓老哥(Graydon Hoare)住的那棟公寓,電梯又壞了。

第n次,他一邊罵罵咧咧一邊努力爬向(xiàng)自己位于21樓的家。他想不通,電梯系統咋就這(zhè)麼(me)容易崩潰呢?不應該呀!

作爲一名大廠碼農,格雷頓老哥覺得,這(zhè)事(shì)兒不是不能(néng)解決。

當時他29歲,正在開(kāi)源網頁浏覽器Mozilla公司(火狐背後(hòu)的公司)打工。作爲業内人士,他深知大多數的電梯故障,都(dōu)是編寫程序的語言很容易意外引入内存錯誤,從而引發(fā)軟件崩潰。

而當時電梯軟件往往是用C或C++語言編寫。

它們的優點是緊湊、快速,但問題是非常容易引發(fā)内存錯誤,導緻系統崩潰,甚至是安全問題。

所以一不做二不休,格雷頓老哥爲了不再爬樓,幹脆決定搞個新編程語言出來。

目标就是不容易内存錯誤的語言,最好(hǎo)更短、更快。

于是,Rust語言誕生了。

而且Rust的取名,也很有意思。

Rust和一種(zhǒng)真菌同名,中文學(xué)名植物鏽病,格雷頓評價其“爲了生存而過(guò)度設計”。

這(zhè)種(zhǒng)真菌生物結構完全是分布式的,空間上無單點失敗,也就是說單獨去掉哪部分都(dōu)不影響它的存活,魯棒性賊強。

在全生命周期中,Rust真菌共有5種(zhǒng)生命形态,其中3種(zhǒng)形态還(hái)能(néng)倒退回上一形态,幾乎等同于蝴蝶還(hái)能(néng)變回毛毛蟲重新生長(cháng)。

而且,Rust真菌可以多宿主寄生,恰能(néng)映射Rust語言對(duì)語言間互操作性的重視。

患有Rust的植物(密恐患者們對(duì)不起(qǐ)了!)

在單槍匹馬個人開(kāi)發(fā)幾年後(hòu),2009年,Rust得到Mozilla公司研究院的支助;2010年項目對(duì)外公布。

研發(fā)過(guò)程中,Rust已經(jīng)建立了一個活躍度極高的社區,任何開(kāi)發(fā)者都(dōu)可以直接給這(zhè)個項目提bug,或者直接貢獻源碼。

2015年5月,Rust的1.0版正式發(fā)布。

僅僅一年光景,Rust就吸納了無數的擁趸。2016年起(qǐ),它連續7年被(bèi)Stack Overflow開(kāi)發(fā)者調查評爲“最受歡迎的編程語言”

連續榮登榜首所依仗的優點,一是運行速度快,二是内存利用率高,三是防止段錯誤。

簡而言之,是在某些部分可以取代C/C++的利器。

所以代碼江湖流傳著(zhe)一種(zhǒng)說法,把Rust比作跑酷,可以做高危險動作,但是不太容易傷害到自己。

相比之下,C++可以看作是在玩帶火的電鋸。

而憑借著(zhe)開(kāi)發(fā)Rust,格雷頓老哥也一戰成(chéng)名。

之後(hòu)幾年内,他還(hái)參與了Swift的開(kāi)發(fā)。

說來這(zhè)也是一段有意思的故事(shì)。相比于當團隊leader,老哥似乎更喜歡做一線開(kāi)發(fā)。

他曾在回應“爲什麼(me)離開(kāi)Rust團隊”中表示,2013年前後(hòu)那段時間個人情感生活遭受重創(離婚),導緻他沒(méi)有太多精力負責Rust團隊,後(hòu)面(miàn)他還(hái)在Mozilla總做了些低調且不著(zhe)急上線的項目,然後(hòu)就離職了。

直到2016年初,他接到了蘋果團隊的一個電話,表示正在找幫忙開(kāi)發(fā)Swift的程序員,“是一個非領導職位,我更喜歡”。

靠著(zhe)安全性成(chéng)爲大廠寵兒

但到這(zhè)裡(lǐ),Rust的傳奇故事(shì)才說了一半。

憑借著(zhe)“安全性高”的初衷,近幾年它在大廠中的受歡迎度也越來越高。

不僅是Windows,Linux、Android這(zhè)些主流系統也都(dōu)先後(hòu)擁抱Rust。亞馬遜雲、微軟、谷歌和Rust的關系也一直不錯。

之所以會如此,主要原因或許還(hái)是C/C++在内存安全方面(miàn),真的不太行。

比如微軟幾年前就對(duì)Rust很感興趣了,他們將(jiāng)其認定爲産品交付前消除内存安全漏洞的好(hǎo)辦法。

2019年,微軟承認其産品被(bèi)CVE披露的漏洞中,有70%是因爲使用C/C++後(hòu)導緻的内存安全漏洞。

而Rust工具鏈關注揪出代碼中的潛在漏洞,這(zhè)在理想情況下能(néng)減少代碼被(bèi)黑客攻擊的可能(néng)。

另一邊,Linux内核也已引入Rust。

去年,由Linux基金會主辦的2022開(kāi)源峰會上,Linus老爺子突然官宣,也許下一個版本就要把Rust加入進(jìn)來了!

這(zhè)意味著(zhe)官方將(jiāng)把Rust for Linux的PR合并到Linux内核的主線裡(lǐ)。

(Rust for Linux是一個呼籲Linux和Rust結合的組織)

要知道(dào),此前光是Rust的支持補丁就已發(fā)布到第七版了。

當時現場聽到這(zhè)一消息,立刻掌聲雷動,以至于Linus花了好(hǎo)一會兒才讓大家平靜下來。

幾個月過(guò)後(hòu),Linux 6.1版本發(fā)布,内核增加了Rust支持,成(chéng)爲了C語言之外的第二種(zhǒng)官方語言。

谷歌這(zhè)邊的動作其實更早。

2021年Android 12發(fā)布,即宣布支持Rust。從這(zhè)以後(hòu),他們就一直在Android開(kāi)源項目中擴大Rust的使用。

不過(guò)谷歌的做法不是立刻讓Rust來替代C/C++,而是新代碼用Rust來寫。

從官方發(fā)布的數據裡(lǐ)可以看到,C和C++還(hái)是占主導地位,Rust的比例在逐步提升。

而截止去年年底,谷歌表示,Android中用Rust寫的部分,還(hái)沒(méi)有發(fā)現任何安全漏洞

這(zhè)個結果非常重要,因爲它意味著(zhe)Rust能(néng)有效防止Android中最常見的漏洞——也就是内存安全漏洞。谷歌22年的數據顯示,内存安全漏洞在各類漏洞中的占比都(dōu)非常高。

在許多C/C++寫的組件中(如藍牙、NFC等),每一千行代碼中就會有1個漏洞。按照這(zhè)個比例來換算,Rust很可能(néng)已經(jīng)阻止了數百個漏洞

以及基于它高并發(fā)的優點,在Android中使用Rust,還(hái)能(néng)進(jìn)一步平衡系統安全和延遲,一般來說一些安全措施會導緻編程語言變慢。

比如使用新的UWB堆棧,可以節省幾兆内存,并通過(guò)現有進(jìn)程運行來避免一些IPC延遲。

亞馬遜雲對(duì)Rust也格外喜歡,因爲它在節省能(néng)源上同樣(yàng)表現很nice

一項研究測試了27種(zhǒng)編程語言,結果發(fā)現C和Rust在能(néng)源利用方面(miàn),比Java高效50%,比Python高效98%。

但C的問題已經(jīng)說了很多遍了,内存安全漏洞多,所以綜合這(zhè)麼(me)一看,Rust又赢了。

實際上,大廠們對(duì)Rust已經(jīng)不隻是青睐,甚至是寵愛了。

2020年,Rust背後(hòu)公司Mozilla宣布大規模裁員,Rust團隊被(bèi)裁掉,Rust的命運陷入巨大的不确定中。

爲了規避掉這(zhè)種(zhǒng)隐憂,亞馬遜、微軟、谷歌、華爲等大廠,直接共同發(fā)起(qǐ)了一個Rust非盈利基金會。承諾兩(liǎng)年内投入約100萬美元預算,支持Rust項目維護

而在業内,Rust的事(shì)迹更是數不勝數。

最近,兩(liǎng)個類Unix的核心實用程序sudo和su正在用Rust重寫中;此前,GitHub痛改自家搜索引擎基于Rust;Discord一個Go服務也用Rust重寫了……

(歪樓一下,Rust在加密貨币領域也很受歡迎)

不過(guò),Rust也存在缺點,比如學(xué)到後(hòu)面(miàn)會比較難,剛上手的開(kāi)發(fā)速度也比Go、Java慢很多。

所以Rust好(hǎo)評度高,但是“賣座率”還(hái)比較一般,甚至會被(bèi)打上“冷門語言”的标簽。

尤其是國(guó)内對(duì)Rust招聘,簡直可以用“少得可憐”來形容。

有網友抱著(zhe)悲觀态度:

爲此,Rust也在進(jìn)一步優化自身。

根據其發(fā)布的Rust 2024路線中,官方團隊將(jiāng)在降低學(xué)習門檻、壯大生态連接等方面(miàn)加大努力。

所以,後(hòu)面(miàn)Rust會怎麼(me)走下去,也還(hái)是值得期待了~


标簽: Rust

版權申明:本站文章部分自網絡,如有侵權,請聯系:hezuo@lyzg168.com

特别注意:本站所有轉載文章言論不代表本站觀點,本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有

聯系我們

輸入您的聯系信息,我們將(jiāng)盡快和你取得聯系!

洛陽霆雲網絡科技有限公司

Tel:15137991270

企業QQ:210603461

Emile:hezuo@lyzg168.com

地址:洛陽市西工區王城大道(dào)221号富雅東方B座1711室

網站:https://www.lyzg168.com

洛陽app開(kāi)發(fā),洛陽app開(kāi)發(fā)公司,洛陽手機軟件開(kāi)發(fā),蘋果保上架,洛陽網站開(kāi)發(fā),洛陽網站制作,洛陽微信定制開(kāi)發(fā)

我們的微信

關注兆光,了解我們的服務與最新資訊。

Copyright © ​2018-2019 洛陽霆雲網絡科技有限公司