首頁  >  文章  >  科技週邊  >  取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

王林
王林轉載
2023-05-30 21:31:041602瀏覽

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

在得到Linux、Google、亞馬遜雲端等大廠青睞後,最近的爆炸訊息-

微軟已經用3.6萬行Rust程式碼改寫了Windows核心

而且推進速度相當快,4月劇透消息,過了兩週,Windows 11內部預覽版已經用上了。

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

如果你加入了Windows 11 Insider Preview內測,你將首次體驗到Rust支援的Windows核心!

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

重寫的核心中,主要包括DWriteCore 以及Win32 GDI兩個項目,並通過了Windows開機所有測試。

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

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

Rust語言有著極高的記憶體安全性,原來核心中大量的不安全的子程式也在改寫後消失不見。同時,Rust語言更簡潔有效率。

公開資料也表示,隨著時間的推移,Windows核心對Rust的採用將被大幅擴展

不光是大廠喜愛,Rust也連續多年成為Stack Overflow開發者調查中「最受歡迎的程式語言」。最近Unix系統的基礎工具sudo和su也要用Rust重寫了。

不過有點意外的是,Rust最初被發明出來,竟然是為了修電梯? ? ?

怒爬21層樓後決定開發新語言

萬事起源只在於2006年的某天,一位名叫格雷頓老哥(Graydon Hoare)住的那棟公寓,電梯又壞了。

第n次,他一邊罵罵咧嘴一邊努力爬向自己位於21樓的家。他想不通,電梯系統咋就這麼容易崩潰呢?不應該呀!

身為大廠碼農,格雷頓老哥覺得,這事兒不是不能解決。

當時他29歲,正在開源網頁瀏覽器Mozilla公司(火狐背後的公司)打工。身為業內人士,他深知大多數的電梯故障,都是編寫程式的語言很容易意外引入記憶體錯誤,從而引發軟體崩潰。

而當時電梯軟體往往是用C或C 語言寫。

它們的優點是緊湊、快速,但問題是非常容易引發記憶體錯誤,導致系統崩潰,甚至是安全問題。

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

目標就是不容易記憶體錯誤的語言,最好更短、更快。

於是,Rust語言誕生了。

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

Rust和一種真菌同名,中文學名植物銹病,格雷頓評價其「為了生存而過度設計」。

這種真菌生物結構完全是分散式的,空間上無單點失敗,也就是說單獨去掉哪一部分都不影響它的存活,魯棒性賊強。

在全生命週期中,Rust真菌共有5種生命形態,其中3種形態還能倒退回上一形態,幾乎等同於蝴蝶還能變回毛毛蟲重新生長。

而且,Rust真菌可以多宿主寄生,恰能映射Rust語言對語言間互通性的重視。

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

△患有Rust的植物(密恐患者們對不起了!)

在單槍匹馬個人開發幾年後,2009年,Rust得到Mozilla公司研究院的支助;2010年工程對外公佈。

研發過程中,Rust已經建立了一個活躍度極高的社區,任何開發者都可以直接給這個專案提bug,或是直接貢獻原始碼。

2015年5月,Rust的1.0版正式發表。

短短一年光景,Rust就吸收了無數的擁躉。 2016年起,它連續7年被Stack Overflow開發者調查評為「最受歡迎的程式語言」

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

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

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

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

而憑藉著開發Rust,格雷頓老哥也一戰成名。

之後幾年內,他也參與了Swift的開發。

說來這也是一段有趣的故事。相較於當團隊leader,老哥似乎更喜歡做第一線開發。

他曾在回應「為什麼離開Rust團隊」中表示,2013年前後那段時間個人情感生活遭受重創(離婚),導致他沒有太多精力負責Rust團隊,後面他還在Mozilla總做了些低調且不急上線的項目,然後就離職了。

直到2016年初,他接到了蘋果團隊的一個電話,表示正在找幫忙開發Swift的程式設計師,「是一個非領導職位,我更喜歡」。

靠著安全性成為大廠寵兒

但到這裡,Rust的傳奇故事才說了一半。

憑藉著「安全性高」的初衷,近幾年它在大廠的受歡迎度也越來越高。

不只Windows,Linux、Android這些主流系統也都先後擁抱Rust。亞馬遜雲端、微軟、谷歌和Rust的關係也一直不錯。

之所以會如此,主要原因或許還是C/C 在記憶體安全方面,真的不太行。

例如微軟幾年前就對Rust很感興趣了,他們將其認定為產品交付前消除記憶體安全漏洞的好辦法。

2019年,微軟承認其產品被CVE揭露的漏洞中,有70%是因為使用C/C 後導致的記憶體安全漏洞。

而Rust工具鏈則專注於揪出程式碼中的潛在漏洞,這在理想情況下能減少程式碼被打擊的可能。

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

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

這意味著官方將把Rust for Linux的PR合併到Linux核心的主線上。

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

要知道,先前光是Rust的支援補丁就已發佈到第七版了。

當時現場聽到這一消息,立刻掌聲雷動,以至於Linus花了好一會兒才讓大家平靜下來。

幾個月過後,Linux 6.1版本發布,核心增加了Rust支持,成為了C語言之外的第二種官方語言。

Google這邊的動作其實更早。

2021年Android 12發布,即宣布支援Rust。從這以後,他們就一直在Android開源專案中擴大Rust的使用。

不過Google的做法不是立刻讓Rust來取代C/C ,而是新程式碼用Rust來寫。

從官方發布的數據可以看到,C和C 還是占主導地位,Rust的比例正在逐步提升。

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

而截止去年年底,Google表示,Android中用Rust寫的部分,還沒有發現任何安全漏洞

這個結果非常重要,因為它意味著Rust能有效防止Android中最常見的漏洞-也就是記憶體安全漏洞。谷歌22年的資料顯示,記憶體安全漏洞在各類漏洞的佔比都非常高。

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

在許多C/C 寫的元件中(如藍牙、NFC等),每一千行程式碼中就會有1個漏洞。按照這個比例來換算,Rust很可能已經阻止了數百個漏洞

以及基於它高並發的優點,在Android中使用Rust,還能進一步平衡系統安全性和延遲,一般來說有些安全措施會導致程式語言變慢。

例如使用新的UWB堆疊,可以節省幾兆內存,並透過現有進程運行來避免一些IPC延遲。

亞馬遜雲對Rust也格外喜歡,因為它在節省能源上同樣表現很nice

一項研究測試了27種程式語言,結果發現C和Rust在能源利用方面,比Java高效50%,比Python高效98%。

但C的問題已經說了很多遍了,記憶體安全漏洞多,所以綜合這麼一看,Rust又贏了。

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

實際上,大廠們對Rust已經不只是青睞,甚至是寵愛了。

2020年,Rust背後公司Mozilla宣布大規模裁員,Rust團隊被裁掉,Rust的命運陷入巨大的不確定性。

為了避免這種隱憂,亞馬遜、微軟、Google、華為等大廠,直接共同發起了一個Rust非營利基金會。 承諾兩年內投入約100萬美元預算,支持Rust計畫維護

而在業界,Rust的事蹟更是無數。

最近,兩個類別Unix的核心實用程式sudo和su正在用Rust重寫中;此前,GitHub痛改自家搜尋引擎基於Rust;Discord一個Go服務也用Rust重寫了…

不過,Rust也有缺點,例如學到後面會比較難,剛上手的開發速度也比Go、Java慢很多。

所以Rust好評度高,但「賣座率」還比較一般,甚至會被打上「冷門語」的標籤。

尤其是國內對Rust招聘,簡直可以用「少得可憐」來形容。

有網友抱著悲觀態度:

取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯

#為此,Rust也進一步優化自身。

根據其發布的Rust 2024路線中,官方團隊將在降低學習門檻、壯大生態連接等方面加大努力。

所以,後面Rust會怎麼走下去,還是值得期待了~

以上是取代C++! 3.6萬行Rust程式碼改寫Windows內核,這門語言最早竟用來修電梯的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除