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

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

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

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

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

微軟擁有世界上最大的C/C++代碼庫之一。從Windows、Office到Azure云,微軟的所有核心產(chǎn)品都在該代碼庫上運(yùn)行。但因為C++不是內(nèi)存安全的語言,代碼庫中自然頻頻出現(xiàn)內(nèi)存漏洞,大量的時間被耗費(fèi)在修補(bǔ)漏洞上。

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

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

用Rust重寫Windows

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

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

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

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

微軟已經(jīng)為Rust搭建了一個標(biāo)準(zhǔn)Windows庫,它具備C++版本的所有功能;Linux也在考慮將一些內(nèi)核遷移到Rust。這兩大操作系統(tǒng)之間有可能展開競爭,看誰能最先將Rust代碼投入生產(chǎn)。

將Rust整合進(jìn)Azure服務(wù)

DeisLabs是Azure的孵化器項目之一,它致力于為Kubernetes構(gòu)建工具。近來,它選取Rust來開發(fā)新產(chǎn)品Krustlet,允許開發(fā)者在Kubernetes中運(yùn)行多個WebAssembly模塊。

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

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

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

一種新的編程語言

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

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

然而,微軟最終仍沒有實際應(yīng)用ProjectVerona。微軟的確聲稱該語言已經(jīng)“完全內(nèi)存安全”,但依舊選擇使用Rust。Rust已經(jīng)擁有了完善的社區(qū),并且得到了Mozilla和英特爾等企業(yè)的支持。有了這些企業(yè)的合作,Rust將會更迅速地成長為更強(qiáng)大的語言。

憑借大型企業(yè)的支持和社區(qū)的不斷發(fā)展,Rust的前途不可限量。在接下來的幾個月中,即使微軟計劃以不同方式將Rust納入企業(yè)中也不足為奇。Rust針對微控制器物聯(lián)網(wǎng)設(shè)備也進(jìn)行了良好的優(yōu)化,這些領(lǐng)域的企業(yè)有望將Rust投入使用。可以說,Rust的未來一片光明。
責(zé)編AJX

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

    關(guān)注

    4

    文章

    6619

    瀏覽量

    104228
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7613

    瀏覽量

    137247
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    229

    瀏覽量

    6626
收藏 人收藏

    評論

    相關(guān)推薦

    如何用Rust編寫一個ChatGPT桌面應(yīng)用(保姆級教程)

    用IDEA開發(fā)的java仔) 安裝 Rust 語言工具鏈:首先,請確保你已安裝了 Rust 編程語言工具鏈,包括 Rust 編譯器 (rustc) 和包管理工具 (cargo)??梢酝ㄟ^訪問
    的頭像 發(fā)表于 09-25 11:19 ?385次閱讀
    如何用<b class='flag-5'>Rust</b>編寫一個ChatGPT桌面應(yīng)用(保姆級教程)

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

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

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

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

    esp32s3開發(fā)時,每次改動,rust編譯的時間都很長為什么?

    esp32s3 開發(fā)時,每次改動,rust編譯時間太長
    發(fā)表于 06-05 06:36

    在Aurix Tc375Lk上使用Rust編程語言可以嗎?

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

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

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

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

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

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

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

    鴻蒙實戰(zhàn)開發(fā)學(xué)習(xí)【FaultLoggerd組件】

    Faultloggerd部件是OpenHarmony中C/C++運(yùn)行時崩潰臨時日志的生成及管理模塊。面向基于 Rust 開發(fā)的部件,F(xiàn)aultloggerd 提供了Rust Panic
    的頭像 發(fā)表于 03-17 20:39 ?550次閱讀
    鴻蒙實戰(zhàn)開發(fā)學(xué)習(xí)【FaultLoggerd組件】

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

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

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

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

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

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

    鴻蒙OS之Rust開發(fā)

    Rust是一門靜態(tài)強(qiáng)類型語言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開發(fā)等優(yōu)勢。
    的頭像 發(fā)表于 01-29 17:19 ?1001次閱讀

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

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

    如何用Rust過程宏魔法簡化SQL函數(shù)呢?

    這是 RisingWave 中一個 SQL 函數(shù)的實現(xiàn)。只需短短幾行代碼,通過在 Rust 函數(shù)上加一行過程宏,我們就把它包裝成了一個 SQL 函數(shù)。
    的頭像 發(fā)表于 01-23 09:43 ?1015次閱讀
    如何用<b class='flag-5'>Rust</b>過程宏魔法簡化SQL函數(shù)呢?