Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

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

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

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

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

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

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

Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

重寫的核心中,主要包括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程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

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

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

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

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

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

Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

△患有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程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

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

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

靠著安全性成為大廠寵兒

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

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

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

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

Rust程式碼崛起!3.6萬行改寫Windows核心,取代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程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

要知道,此前光是Rust的支援更新就已發佈到第七版了。

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

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

Google這邊的動作其實更早。

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

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

從官方發佈的資料裡可以看到,C和C++還是佔主導地位,Rust的比例在逐步提升。

Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

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

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

Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

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

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

比如使用新的UWB堆疊,可以節省幾兆記憶體,並通過現有處理程序運行來避免一些IPC延遲。

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

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

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

Rust程式碼崛起!3.6萬行改寫Windows核心,取代C++重寫萬物

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

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

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

而在業內,Rust的事蹟更是數不勝數。

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

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

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

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

為此,Rust也在進一步最佳化自身。

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

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

參考連結:

[1]https://www.thurrott.com/windows/windows-11/282995/first-rust-code-shows-up-in-the-windows-11-kernel

[2]https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language

[3]https://www.reddit.com/r/rust/comments/7qels2/i_wonder_why_graydon_hoare_the_author_of_rust/

[4]https://arstechnica.com/information-technology/2023/05/two-core-unix-like-utilities-sudo-and-su-are-getting-rewrites-in-rust/

[5]https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html?m=1

[6]https://aws.amazon.com/cn/blogs/opensource/sustainability-with-rust/

 

 

Qbitai
作者

量子位(Qbitai)專注於人工智慧及前沿科技領域,提供技術研發趨勢、科技企業動態、新創公司報道等最新資訊,以及機器學習入門資源、電腦科學最新研究論文、開源程式碼和工具的相關報導。

使用 Facebook 留言
Josh54
2.  Josh54 (發表於 2023年9月25日 23:40)
In places where security is important, Rust is likely to replace a lot of C and C++. But it will not replace everything, connections game and it will not do so quickly.
tecno1
3.  tecno1 (發表於 2023年12月16日 22:27)
Convertidor MP3 has proven to be an essential ally in my digital music journey. It flawlessly converts audio files with a user-friendly interface and speedy performance. https://convertidorvideo.com
Habriel
4.  Habriel (發表於 2024年4月25日 11:07)
The constantly updating and improving knowledge is truly amazing. Experience the limitless store of knowledge. Every day is a new lesson and worth absorbing. Fascinating with interesting progressions scratch games
carinamon
7.  carinamon (發表於 2024年7月25日 10:44)
Drive Mad is a cutting-edge driving game that offers a unique blend of realistic driving mechanics, stunning visuals, and an immersive open-world environment.
JacksonRivers
8.  JacksonRivers (發表於 2024年8月31日 23:33)
Agario is a competitive online game where players navigate a cell through a colorful environment, eating pellets and smaller players to grow, aiming to become the largest cell in the arena.
doramasmp4
9.  doramasmp4 (發表於 2024年11月15日 03:09)
Thank you for the kind words! You're right about the first photo—it does look like it might be related to Python, especially with the code snippet or design elements that resemble Python’s syntax. https://doramasmp4.se/
發表回應
謹慎發言,尊重彼此。按此展開留言規則