微軟擁有世界上最大的C/C++代碼庫(kù)之一。從Windows、Office到Azure云,微軟的所有核心產(chǎn)品都在該代碼庫(kù)上運(yùn)行。但因?yàn)镃++不是內(nèi)存安全的語(yǔ)言,代碼庫(kù)中自然頻頻出現(xiàn)內(nèi)存漏洞,大量的時(shí)間被耗費(fèi)在修補(bǔ)漏洞上。
微軟自去年開始尋找用以替代的編程語(yǔ)言來(lái)解決內(nèi)存安全問(wèn)題,尋找終有所得——微軟開始嘗試使用Rust,并在一些情境下將其集成進(jìn)代碼庫(kù)中。Rust是一種相對(duì)較新的編程語(yǔ)言,具有與C和C++相同的底層性能,并具備現(xiàn)代編程語(yǔ)言應(yīng)有的功能集。
微軟認(rèn)為Rust頗具潛力,本文就將介紹微軟將其用在產(chǎn)品中的方式。
用Rust重寫Windows
微軟雖然尚未使用Rust全面重寫Windows,但正在致力于研究如何使Rust適應(yīng)其生態(tài)系統(tǒng)。據(jù)微軟估算,在推送給計(jì)算機(jī)的安全補(bǔ)丁中,有70%都是為了修補(bǔ)內(nèi)存有關(guān)的漏洞,他們認(rèn)為Rust可以在開發(fā)階段捕獲這些漏洞。因此,微軟委托一些工程師用Rust重寫Windows的部分組件,從而獲取開發(fā)人員的一些意見。
雖然微軟沒(méi)有公開重寫哪些組件,但一名工程師稱,他正在針對(duì)性地改造部分“Windows的底層系統(tǒng)”,這體現(xiàn)出了微軟對(duì)Rust的潛力頗具信心。微軟不僅計(jì)劃重寫一些小的服務(wù)和Windows本地應(yīng)用程序,還可能重寫操作系統(tǒng)的核心組件。
工程師們稱涉及Rust的工作“整體前景是樂(lè)觀的”,但也明確指出Rust不具備C的一些重要功能,不過(guò)這些工程師們也認(rèn)為有必要為Rust開發(fā)這些功能。
英特爾已經(jīng)開始致力于讓Rust實(shí)現(xiàn)與C相同的功能,微軟也或?qū)⒓尤肫渲?。由于Rust缺少C的一些功能,該團(tuán)隊(duì)發(fā)現(xiàn)Rust將最適用于新近開發(fā)的Windows組件。假如微軟將部分代碼庫(kù)遷移到Rust,我也不會(huì)感到吃驚。
微軟已經(jīng)為Rust搭建了一個(gè)標(biāo)準(zhǔn)Windows庫(kù),它具備C++版本的所有功能;Linux也在考慮將一些內(nèi)核遷移到Rust。這兩大操作系統(tǒng)之間有可能展開競(jìng)爭(zhēng),看誰(shuí)能最先將Rust代碼投入生產(chǎn)。
將Rust整合進(jìn)Azure服務(wù)
DeisLabs是Azure的孵化器項(xiàng)目之一,它致力于為Kubernetes構(gòu)建工具。近來(lái),它選取Rust來(lái)開發(fā)新產(chǎn)品Krustlet,允許開發(fā)者在Kubernetes中運(yùn)行多個(gè)WebAssembly模塊。
Kubernetes原本由Google開發(fā),以Go語(yǔ)言寫成。大多數(shù)工程師傾向于使用Go來(lái)為Kubernetes編寫組件,DeisLabs選擇Rust可謂驚人之舉。
最終,這一決定似乎有所成效。雖然員工的確提到了由于Rust獨(dú)特的所有權(quán)概念,轉(zhuǎn)換為Rust的過(guò)程十分困難,但該團(tuán)隊(duì)僅用了一個(gè)月就回到了全速工作狀態(tài),他們發(fā)現(xiàn)需要為空值寫的測(cè)試以及調(diào)試的問(wèn)題都越來(lái)越少。
工程師們也對(duì)Rust的編譯器印象深刻。他們稱該編譯器能夠找到另一個(gè)項(xiàng)目中的安全漏洞,而Go的編譯器則未能做到這一點(diǎn)。他們總結(jié)說(shuō),應(yīng)該有更多的團(tuán)隊(duì)考慮在將來(lái)的工作中使用Rust,該語(yǔ)言可能比Go更適合Kubernetes的開發(fā)。
一種新的編程語(yǔ)言
不久之前,在Rust的啟發(fā)下,微軟開始著手調(diào)研創(chuàng)造自己的編程語(yǔ)言。該項(xiàng)目的負(fù)責(zé)人之一是C#的主要維護(hù)人員,因此這一編程語(yǔ)言似乎是另一種版本的Rust,但在語(yǔ)法上更類似C類編程語(yǔ)言。
這一語(yǔ)言被稱為“Project Verona”,致力于在系統(tǒng)編程中解決內(nèi)存漏洞。一些人推測(cè)ProjectVerona可能將在許多微軟主要產(chǎn)品中投入使用,例如Windows、Xbox和Azure。
然而,微軟最終仍沒(méi)有實(shí)際應(yīng)用ProjectVerona。微軟的確聲稱該語(yǔ)言已經(jīng)“完全內(nèi)存安全”,但依舊選擇使用Rust。Rust已經(jīng)擁有了完善的社區(qū),并且得到了Mozilla和英特爾等企業(yè)的支持。有了這些企業(yè)的合作,Rust將會(huì)更迅速地成長(zhǎng)為更強(qiáng)大的語(yǔ)言。
憑借大型企業(yè)的支持和社區(qū)的不斷發(fā)展,Rust的前途不可限量。在接下來(lái)的幾個(gè)月中,即使微軟計(jì)劃以不同方式將Rust納入企業(yè)中也不足為奇。Rust針對(duì)微控制器和物聯(lián)網(wǎng)設(shè)備也進(jìn)行了良好的優(yōu)化,這些領(lǐng)域的企業(yè)有望將Rust投入使用??梢哉f(shuō),Rust的未來(lái)一片光明。
責(zé)編AJX
-
微軟
+關(guān)注
關(guān)注
4文章
6554瀏覽量
103897 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7595瀏覽量
135878 -
Rust
+關(guān)注
關(guān)注
1文章
228瀏覽量
6542
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論