0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

微軟開(kāi)始嘗試使用Rust代替C/C++,介紹這些運(yùn)用Rust的產(chǎn)品

如意 ? 來(lái)源:讀芯術(shù)微信公眾號(hào) ? 作者:讀芯術(shù)微信公眾號(hào) ? 2020-09-03 10:09 ? 次閱讀

微軟擁有世界上最大的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ǔ)漏洞上。

微軟自去年開(kāi)始尋找用以替代的編程語(yǔ)言來(lái)解決內(nèi)存安全問(wèn)題,尋找終有所得——微軟開(kāi)始嘗試使用Rust,并在一些情境下將其集成進(jìn)代碼庫(kù)中。Rust是一種相對(duì)較新的編程語(yǔ)言,具有與C和C++相同的底層性能,并具備現(xiàn)代編程語(yǔ)言應(yīng)有的功能集。

微軟認(rèn)為Rust頗具潛力,本文就將介紹微軟將其用在產(chǎn)品中的方式。

用Rust重寫(xiě)Windows

微軟雖然尚未使用Rust全面重寫(xiě)Windows,但正在致力于研究如何使Rust適應(yīng)其生態(tài)系統(tǒng)。據(jù)微軟估算,在推送給計(jì)算機(jī)的安全補(bǔ)丁中,有70%都是為了修補(bǔ)內(nèi)存有關(guān)的漏洞,他們認(rèn)為Rust可以在開(kāi)發(fā)階段捕獲這些漏洞。因此,微軟委托一些工程師用Rust重寫(xiě)Windows的部分組件,從而獲取開(kāi)發(fā)人員的一些意見(jiàn)。

雖然微軟沒(méi)有公開(kāi)重寫(xiě)哪些組件,但一名工程師稱(chēng),他正在針對(duì)性地改造部分“Windows的底層系統(tǒng)”,這體現(xiàn)出了微軟對(duì)Rust的潛力頗具信心。微軟不僅計(jì)劃重寫(xiě)一些小的服務(wù)和Windows本地應(yīng)用程序,還可能重寫(xiě)操作系統(tǒng)的核心組件。

工程師們稱(chēng)涉及Rust的工作“整體前景是樂(lè)觀(guān)的”,但也明確指出Rust不具備C的一些重要功能,不過(guò)這些工程師們也認(rèn)為有必要為Rust開(kāi)發(fā)這些功能。

英特爾已經(jīng)開(kāi)始致力于讓Rust實(shí)現(xiàn)與C相同的功能,微軟也或?qū)⒓尤肫渲小S捎赗ust缺少C的一些功能,該團(tuán)隊(duì)發(fā)現(xiàn)Rust將最適用于新近開(kāi)發(fā)的Windows組件。假如微軟將部分代碼庫(kù)遷移到Rust,我也不會(huì)感到吃驚。

微軟已經(jīng)為Rust搭建了一個(gè)標(biāo)準(zhǔn)Windows庫(kù),它具備C++版本的所有功能;Linux也在考慮將一些內(nèi)核遷移到Rust。這兩大操作系統(tǒng)之間有可能展開(kāi)競(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)開(kāi)發(fā)新產(chǎn)品Krustlet,允許開(kāi)發(fā)者在Kubernetes中運(yùn)行多個(gè)WebAssembly模塊。

Kubernetes原本由Google開(kāi)發(fā),以Go語(yǔ)言寫(xiě)成。大多數(shù)工程師傾向于使用Go來(lái)為Kubernetes編寫(xiě)組件,DeisLabs選擇Rust可謂驚人之舉。

最終,這一決定似乎有所成效。雖然員工的確提到了由于Rust獨(dú)特的所有權(quán)概念,轉(zhuǎn)換為Rust的過(guò)程十分困難,但該團(tuán)隊(duì)僅用了一個(gè)月就回到了全速工作狀態(tài),他們發(fā)現(xiàn)需要為空值寫(xiě)的測(cè)試以及調(diào)試的問(wèn)題都越來(lái)越少。

工程師們也對(duì)Rust的編譯器印象深刻。他們稱(chēng)該編譯器能夠找到另一個(gè)項(xiàng)目中的安全漏洞,而Go的編譯器則未能做到這一點(diǎn)。他們總結(jié)說(shuō),應(yīng)該有更多的團(tuán)隊(duì)考慮在將來(lái)的工作中使用Rust,該語(yǔ)言可能比Go更適合Kubernetes的開(kāi)發(fā)。

一種新的編程語(yǔ)言

不久之前,在Rust的啟發(fā)下,微軟開(kāi)始著手調(diào)研創(chuàng)造自己的編程語(yǔ)言。該項(xiàng)目的負(fù)責(zé)人之一是C#的主要維護(hù)人員,因此這一編程語(yǔ)言似乎是另一種版本的Rust,但在語(yǔ)法上更類(lèi)似C類(lèi)編程語(yǔ)言。

這一語(yǔ)言被稱(chēng)為“Project Verona”,致力于在系統(tǒng)編程中解決內(nèi)存漏洞。一些人推測(cè)ProjectVerona可能將在許多微軟主要產(chǎn)品中投入使用,例如Windows、Xbox和Azure。

然而,微軟最終仍沒(méi)有實(shí)際應(yīng)用ProjectVerona。微軟的確聲稱(chēng)該語(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投入使用。可以說(shuō),Rust的未來(lái)一片光明。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微軟
    +關(guān)注

    關(guān)注

    4

    文章

    6543

    瀏覽量

    103831
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135651
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    228

    瀏覽量

    6530
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    未來(lái)嵌入式系統(tǒng)的黃金搭檔 MCX N947遇上Rust

    ? Rust 介紹 Rust 是一門(mén)注重安全的語(yǔ)言,相比于 C/C++/ASM 有著更高級(jí)的抽象能力、編譯器帶來(lái)的安全特性與廣泛友好的社區(qū)支
    的頭像 發(fā)表于 07-25 09:14 ?1212次閱讀
    未來(lái)嵌入式系統(tǒng)的黃金搭檔 MCX N947遇上<b class='flag-5'>Rust</b>

    Vector和HighTec推出基于Rust和AUTOSAR Classic實(shí)現(xiàn)安全應(yīng)用的解決方案

    Vector和HighTec兩家公司成功展示了Rust應(yīng)用程序與基于C語(yǔ)言的AUTOSAR Classic基礎(chǔ)軟件的集成,這在行業(yè)內(nèi)還屬首次。這樣一來(lái),Rust及其優(yōu)勢(shì)可以被應(yīng)用在有最高功能安全要求的汽車(chē)ECU中。
    的頭像 發(fā)表于 07-17 14:42 ?577次閱讀
    Vector和HighTec推出基于<b class='flag-5'>Rust</b>和AUTOSAR Classic實(shí)現(xiàn)安全應(yīng)用的解決方案

    在Aurix Tc375Lk上使用Rust編程語(yǔ)言可以嗎?

    您好,如果我想在 Aurix Tc375Lk 上使用 Rust 編程語(yǔ)言,可以嗎?如果是,鏈接 rust 編譯器 ADS 和 freetoolchain 的步驟是什么?你有在 ADS 或 freetoolchian 中鏈接編譯器的用戶(hù)指南嗎? 請(qǐng)?jiān)敿?xì)說(shuō)明謝謝
    發(fā)表于 05-17 13:42

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【Rust模塊配置規(guī)則和指導(dǎo)】

    C/C++代碼和提升編譯速度,使用了GN + Ninja的編譯構(gòu)建系統(tǒng)。GN的構(gòu)建語(yǔ)言簡(jiǎn)潔易讀,Ninja的匯編級(jí)編譯規(guī)則直接高效。
    的頭像 發(fā)表于 05-10 11:32 ?1166次閱讀
    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【<b class='flag-5'>Rust</b>模塊配置規(guī)則和指導(dǎo)】

    在嵌入式系統(tǒng)中集成Rust和Qt的實(shí)踐

    Rust 擁有豐富的庫(kù)生態(tài)系統(tǒng),用于序列化和反序列化、異步操作、解析不安全輸入、線(xiàn)程、靜態(tài)分析等,而 Qt 是一個(gè) C++ 工具包,支持跨各種平臺(tái)的豐富的、基于 GUI 的應(yīng)用程序,從 iOS 到嵌入式Linux。Qt 應(yīng)用程序包括表示業(yè)務(wù)邏輯的
    發(fā)表于 05-03 10:26 ?1528次閱讀
    在嵌入式系統(tǒng)中集成<b class='flag-5'>Rust</b>和Qt的實(shí)踐

    Rust效率領(lǐng)先C++兩倍,內(nèi)存安全成國(guó)家安全議題

    這項(xiàng)發(fā)現(xiàn)由谷歌安卓平臺(tái)工具及庫(kù)的工程總監(jiān)Lars Bergstrom在日前召開(kāi)的Rust Nation英國(guó)峰會(huì)揭示。盡管此前業(yè)內(nèi)對(duì)Rust的安全性和穩(wěn)定性存在一定爭(zhēng)議,特別是其‘unsafe’關(guān)鍵字的存在令人擔(dān)憂(yōu)。
    的頭像 發(fā)表于 04-01 15:37 ?815次閱讀

    [鴻蒙]OpenHarmony4.0的Rust開(kāi)發(fā)

    中集成 Rust 代碼,并最大程度發(fā)揮 Rust 和 OpenHarmony 中原有 C/C++ 代碼的交互性,采用 GN 作為統(tǒng)一構(gòu)建工具,即通過(guò) GN 構(gòu)建 Rus
    的頭像 發(fā)表于 02-26 17:28 ?753次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>開(kāi)發(fā)

    谷歌捐款100萬(wàn)美元給Rust基金會(huì),以增強(qiáng)C++Rust的交互性

    如今,谷歌多項(xiàng)核心業(yè)務(wù)仍以 C++為主要編程語(yǔ)言,雖然無(wú)法直接使用Rust替代現(xiàn)有的C++程序,但谷歌依然選擇支持Rust基金會(huì)的“Interop Initiative”計(jì)劃,幫助那些
    的頭像 發(fā)表于 02-19 15:41 ?549次閱讀

    微軟加速轉(zhuǎn)向Rust,加緊招募資深軟件架構(gòu)師

    去年BlueHat大會(huì)上,微軟公開(kāi)表示以Rust重編譯Windows內(nèi)核的計(jì)劃,因其享有現(xiàn)代、便捷且代碼易讀的卓越性質(zhì)。值得一提的是,微軟推出的Azure Quantum開(kāi)發(fā)工具包(QDK)亦采用了
    的頭像 發(fā)表于 01-30 11:47 ?494次閱讀

    一次Rust重寫(xiě)基礎(chǔ)軟件的實(shí)踐

    受到2022年“谷歌使用Rust重寫(xiě)Android系統(tǒng)且所有Rust代碼的內(nèi)存安全漏洞為零” [1] 的啟發(fā),最近筆者懷著濃厚的興趣也順應(yīng)Rust 的潮流,嘗試著將一款
    的頭像 發(fā)表于 01-25 11:21 ?556次閱讀

    Git開(kāi)發(fā)者關(guān)注內(nèi)存安全問(wèn)題,探討引入Rust語(yǔ)言

    根據(jù)最新披露的郵件討論,Git開(kāi)發(fā)團(tuán)隊(duì)熱議在Git項(xiàng)目中引入Rust的可行性。作為一種開(kāi)源的分布式代碼版本管理工具,廣泛運(yùn)用于各種開(kāi)發(fā)項(xiàng)目。盡管現(xiàn)在Git項(xiàng)目主要以C與Python為主要開(kāi)發(fā)語(yǔ)言,但探討顯示,引入
    的頭像 發(fā)表于 01-15 14:23 ?529次閱讀
    Git開(kāi)發(fā)者關(guān)注內(nèi)存安全問(wèn)題,探討引入<b class='flag-5'>Rust</b>語(yǔ)言

    C++簡(jiǎn)史:C++是如何開(kāi)始

    MISRA C++:2023,MISRA? C++ 標(biāo)準(zhǔn)的下一個(gè)版本,來(lái)了!為了幫助您做好準(zhǔn)備,我們介紹了 Perforce 首席技術(shù)支持工程師 Frank van den Beuken 博士撰寫(xiě)
    的頭像 發(fā)表于 01-11 09:00 ?494次閱讀
    <b class='flag-5'>C++</b>簡(jiǎn)史:<b class='flag-5'>C++</b>是如何<b class='flag-5'>開(kāi)始</b>的

    從Rustup出發(fā)看Rust編譯生態(tài)

    從Rustup出發(fā)看Rust編譯生態(tài) 1. Rust和LLVM的關(guān)系是怎樣的? 2. Rustup中targets是什么,為什么可以安裝多個(gè)? 3. Rust在windows上為什么需要安裝Visual studio?
    的頭像 發(fā)表于 01-02 11:00 ?454次閱讀

    c++怎么開(kāi)始編程

    應(yīng)用程序、嵌入式系統(tǒng)和網(wǎng)絡(luò)應(yīng)用程序等各種領(lǐng)域。 在開(kāi)始編程之前,你需要安裝C++的編程環(huán)境。首先,你需要下載并安裝一個(gè)編譯器,比如微軟的Visual Studio、GNU的GCC或者Clang。
    的頭像 發(fā)表于 11-27 15:56 ?831次閱讀

    如何編寫(xiě)高性能的Rust代碼

    為了最大限度地提高Rust應(yīng)用程序的性能,你需要了解支持代碼的底層硬件架構(gòu),如何優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu),以及如何對(duì)代碼進(jìn)行配置和基準(zhǔn)測(cè)試。在本文中,我們將簡(jiǎn)要介紹這些主題,希望能更好地理解如何編寫(xiě)高性能的
    的頭像 發(fā)表于 11-03 14:28 ?752次閱讀
    如何編寫(xiě)高性能的<b class='flag-5'>Rust</b>代碼