C++的替補選手:微軟是如何應用Rust的?

微軟擁有世界上最大的C/C++代碼庫之一。從Windows、Office到Azure雲,微軟的全部核心產品都在該代碼庫上運行。但由於C++不是內存安全的語言,代碼庫中天然頻頻出現內存漏洞,大量的時間被耗費在修補漏洞上。編程

微軟自去年開始尋找用以替代的編程語言來解決內存安全問題,尋找終有所得——微軟開始嘗試使用Rust,並在一些情境下將其集成進代碼庫中。Rust是一種相對較新的編程語言,具備與C和C++相同的底層性能,並具有現代編程語言應有的功能集。安全

微軟認爲Rust頗具潛力,本文就將介紹微軟將其用在產品中的方式。編程語言

用Rust重寫Windowside

微軟雖然還沒有使用Rust全面重寫Windows,但正在致力於研究如何使Rust適應其生態系統。據微軟估算,在推送給計算機的安全補丁中,有70%都是爲了修補內存有關的漏洞,他們認爲Rust能夠在開發階段捕獲這些漏洞。所以,微軟委託一些工程師用Rust重寫Windows的部分組件,從而獲取開發人員的一些意見。工具

雖然微軟沒有公開重寫哪些組件,但一名工程師稱,他正在針對性地改造部分「Windows的底層系統」,這體現出了微軟對Rust的潛力頗具信心。微軟不只計劃重寫一些小的服務和Windows本地應用程序,還可能重寫操做系統的核心組件。性能

工程師們稱涉及Rust的工做「總體前景是樂觀的」,但也明確指出Rust不具有C的一些重要功能,不過這些工程師們也認爲有必要爲Rust開發這些功能。測試

C++的替補選手:微軟是如何應用Rust的?

圖源:unsplash優化

英特爾已經開始致力於讓Rust實現與C相同的功能,微軟也或將加入其中。因爲Rust缺乏C的一些功能,該團隊發現Rust將最適用於新近開發的Windows組件。假如微軟將部分代碼庫遷移到Rust,我也不會感到吃驚。url

微軟已經爲Rust搭建了一個標準Windows庫,它具有C++版本的全部功能;Linux也在考慮將一些內核遷移到Rust。這兩大操做系統之間有可能展開競爭,看誰能最早將Rust代碼投入生產。spa

將Rust整合進Azure服務

DeisLabs是Azure的孵化器項目之一,它致力於爲Kubernetes構建工具。近來,它選取Rust來開發新產品Krustlet,容許開發者在Kubernetes中運行多個WebAssembly模塊。

Kubernetes本來由Google開發,以Go語言寫成。大多數工程師傾向於使用Go來爲Kubernetes編寫組件,DeisLabs選擇Rust可謂驚人之舉。

最終,這一決定彷佛有所成效。雖然員工的確提到了因爲Rust獨特的全部權概念,轉換爲Rust的過程十分困難,但該團隊僅用了一個月就回到了全速工做狀態,他們發現須要爲空值寫的測試以及調試的問題都愈來愈少。

工程師們也對Rust的編譯器印象深入。他們稱該編譯器可以找到另外一個項目中的安全漏洞,而Go的編譯器則未能作到這一點。他們總結說,應該有更多的團隊考慮在未來的工做中使用Rust,該語言可能比Go更適合Kubernetes的開發。

C++的替補選手:微軟是如何應用Rust的?

圖源:zdnet

一種新的編程語言

不久以前,在Rust的啓發下,微軟開始着手調研創造本身的編程語言。該項目的負責人之一是C#的主要維護人員,所以這一編程語言彷佛是另外一種版本的Rust,但在語法上更相似C類編程語言。

這一語言被稱爲「Project Verona」,致力於在系統編程中解決內存漏洞。一些人推測ProjectVerona可能將在許多微軟主要產品中投入使用,例如Windows、Xbox和Azure。

然而,微軟最終仍沒有實際應用ProjectVerona。微軟的確聲稱該語言已經「徹底內存安全」,但依舊選擇使用Rust。Rust已經擁有了完善的社區,而且獲得了Mozilla和英特爾等企業的支持。有了這些企業的合做,Rust將會更迅速地成長爲更強大的語言。

C++的替補選手:微軟是如何應用Rust的?

圖源:unsplash

憑藉大型企業的支持和社區的不斷髮展,Rust的前途不可限量。在接下來的幾個月中,即便微軟計劃以不一樣方式將Rust歸入企業中也不足爲奇。Rust針對微控制器和物聯網設備也進行了良好的優化,這些領域的企業有望將Rust投入使用。能夠說,Rust的將來一片光明。

【責任編輯:趙寧寧 TEL:(010)68476606】

相關文章
相關標籤/搜索