<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          拋棄 C / C++!微軟官宣:請(qǐng)用 Rust 編寫 Windows 驅(qū)動(dòng)!

          共 6516字,需瀏覽 14分鐘

           ·

          2023-10-14 06:56

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

                       
          轉(zhuǎn)自:CSDN(ID:CSDNnews)

          憑借卓越的內(nèi)存效率、速度與安全性等特點(diǎn),近幾年 Rust 可謂深受大廠青睞:

          • 2019 年,AWS 表示開始在其基礎(chǔ)架構(gòu)中越來越多地使用 Rust 后,決定贊助 Rust,即 Rust 團(tuán)隊(duì)可以優(yōu)惠租用 AWS 基礎(chǔ)設(shè)施以進(jìn)行語(yǔ)言開發(fā)。

          • 2021 年 2 月 9 日,Rust 基金會(huì)成立,Mozilla、亞馬遜、華為、谷歌和微軟作為創(chuàng)始白金成員,承諾在兩年時(shí)間里每年投入不少于 100 萬美元的預(yù)算,以用于 Rust 項(xiàng)目的開發(fā)、維護(hù)和推廣。

          • 2022 年,Meta 宣布將 Rust 語(yǔ)言納入其服務(wù)器端編程語(yǔ)言。

          • 2022 年 12 月,Linux 內(nèi)核 6.1 發(fā)布,包含了初始 Rust 支持。

          • 今年年初,谷歌宣布支持使用 Rust 開發(fā) Chromium。

          • ……

          在這眾多大廠之中,微軟對(duì)于 Rust 的重視與支持力度也一直未減。繼 5 月效仿 Linux 用 Rust 重寫部分 Windows 內(nèi)核后,近來微軟在擁抱 Rust 上又進(jìn)了一步:微軟在 GitHub 中發(fā)布了一系列開發(fā)工具包,讓開發(fā)者可以使用 Rust 語(yǔ)言來編寫 Windows 驅(qū)動(dòng)程序。

          對(duì)此,不少開發(fā)者在感慨:沒想到啊,Windows 在擁抱 Rust 方面居然走在了 Linux 前面!

          在擁抱 Rust 的路上,微軟曾遭到反對(duì)

          事實(shí)上,早在 2019 年 2 月,微軟工程師 Matt Miller 在以色列舉行的安全會(huì)議 BlueHat 上曾透露:從 2006 年到 2018 年,微軟旗下產(chǎn)品過去 12 年修復(fù)的所有漏洞中,有七成涉及的都是內(nèi)存安全問題。

          內(nèi)存安全問題占比高的原因,主要是因?yàn)?span style="font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1px;background-color: rgb(255, 255, 255);"> Windows 大多是以 C 和 C++ 編寫的——著名的“內(nèi)存不安全”語(yǔ)言。內(nèi)存管理代碼只要有一個(gè)漏洞,就會(huì)導(dǎo)致大量的內(nèi)存安全錯(cuò)誤,從而可能引發(fā)遠(yuǎn)程代碼執(zhí)行或權(quán)限提升漏洞等攻擊。

          對(duì)于這些潛在風(fēng)險(xiǎn),同年 7 月微軟研究院發(fā)布了一份聲明,希望“在漏洞發(fā)生之前消除一整類漏洞”,并表示“滿足這些要求的最有前途的新系統(tǒng)編程語(yǔ)言之一,就是最初由 Mozilla 發(fā)明的 Rust”。從這份聲明可以看出,至少自 2019 年開始,微軟已打算在擁抱 Rust 上積極布局。

          到了去年 9 月,微軟 Azure 首席技術(shù)官 Mark Russinovich 在 X(前推特)上發(fā)文,正式呼吁業(yè)界淘汰 C / C++,應(yīng)改用更加安全的 Rust 語(yǔ)言:

          說到語(yǔ)言,現(xiàn)在是時(shí)候停止用 C/C++ 啟動(dòng)任何新項(xiàng)目了,在需要使用非 GC 語(yǔ)言的情況下使用 Rust。為了安全性和可靠性,業(yè)界應(yīng)該宣布這些語(yǔ)言已被淘汰。

          可不同于 Mark Russinovich 對(duì) Rust 的支持和青睞,當(dāng)時(shí)他的這則帖子下多是反對(duì)和質(zhì)疑的聲音:“這完全是一個(gè)與顯示脫節(jié)、不切實(shí)際的想法。”

          • “這聽起來像是在指責(zé)語(yǔ)言本身而不是程序員。C++ 是門好語(yǔ)言,只是許多使用它的人基本上不懂編程,而換一種語(yǔ)言并不能解決這個(gè)問題。”

          • “Rust 是一種不錯(cuò)的語(yǔ)言,但它甚至還未達(dá)到 1.0 版本,我認(rèn)為我們不應(yīng)該為了尚未經(jīng)過實(shí)戰(zhàn)檢驗(yàn)的語(yǔ)言而放棄久經(jīng)考驗(yàn)的語(yǔ)言。”

          盡管不被看好,但微軟轉(zhuǎn)向 Rust 的決心依舊堅(jiān)定。今年 5 月 Mark Russinovich 宣布微軟已用 Rust 重寫部分 Windows 內(nèi)核:“如果你在 Windows 11 Insider ring 上,那么將首次感受到 Rust 在 Windows 內(nèi)核中帶來的魔力。”

          當(dāng)時(shí),或許是網(wǎng)友對(duì)微軟擁抱 Rust 的決定已逐漸接受,也或許是微軟解釋過并非是用 Rust 替換內(nèi)核中 C/C++ 的整個(gè)“40 年工作”,而是將其中一些內(nèi)部的 C++ 數(shù)據(jù)類型替換成 Rust,因此在這則帖子下大多是正面留言。

          從 2019 年放出風(fēng)聲,到已用 Rust 重寫部分 Windows 11 內(nèi)核代碼,如今微軟擁抱 Rust 的程度仍在繼續(xù)加深:在 Github 上發(fā)布工具包,讓開發(fā)者能用 Rust 編寫 Windows 驅(qū)動(dòng)程序——這無疑是為操作系統(tǒng)實(shí)現(xiàn)內(nèi)存安全編程的關(guān)鍵一步。

          仍處于早期開發(fā)階段,不建議“用于商業(yè)用途

          從 Mark Russinovich 在 X 上分享的 Github 鏈接來看,這個(gè)由微軟 Surface 團(tuán)隊(duì)開發(fā)的新項(xiàng)目名為 windows-drivers-rs,是一個(gè)由多個(gè) Rust 組件(Crates)組成的項(xiàng)目,可幫助開發(fā)人員用 Rust 開發(fā) Windows 驅(qū)動(dòng)程序。

          該項(xiàng)目同時(shí)支持 WDM(Windows Driver Model)和 WDF(Windows Driver Foundation)兩種不同的驅(qū)動(dòng)程序開發(fā)模型:WDM 驅(qū)動(dòng)程序級(jí)別較低,與操作系統(tǒng)緊密相連,而 WDF 驅(qū)動(dòng)程序則通過框架庫(kù)與系統(tǒng)交互。

          據(jù)介紹,windows-drivers-rs 具體包含以下板塊:

          • wdk-build:一個(gè)用于配置 Cargo 構(gòu)建腳本的庫(kù),可用于綁定生成和 WDK(Windows Developer Kit)的下游鏈接。

          • wdk-sys:將 FFI 直接綁定到 WDK 中提供的 API。

          • wdk:與 WDK 中的 API 安全綁定。

          • wdk-panic:使用 WDK 構(gòu)建的程序的默認(rèn) panic 處理程序?qū)崿F(xiàn)。

          • wdk-alloc:為使用 WDK 編譯的二進(jìn)制文件提供分配支持。

          • wdk-macros:宏集合,有助于更輕松地與 wdk-sys 的直接綁定進(jìn)行交互。

          如需查看 windows-drivers-rs 用于創(chuàng)建驅(qū)動(dòng)程序的示例,開發(fā)者可前往:https://github.com/microsoft/Windows-rust-driver-samples。

          值得注意的是,微軟補(bǔ)充:雖然該項(xiàng)目的計(jì)劃靈活運(yùn)用不同的 WDK 版本和不同的 WDF 版本,但目前“僅針對(duì) NI eWDK、KMDF 1.33、UMDF 2.33 和 WDM 驅(qū)動(dòng)程序進(jìn)行了測(cè)試”,對(duì)于“較舊的 DDK 可能會(huì)缺少鏈接器選項(xiàng)”。

          此外,微軟還表示 windows-drivers-rs 目前仍處于早期開發(fā)階段,因此“不建議用于商業(yè)用途”,但勵(lì)社區(qū)和開發(fā)者對(duì)其進(jìn)行試驗(yàn)、建議和反饋,并將利用 GitHub 論壇作為與社區(qū)互動(dòng)的主要形式。

          開發(fā)者提問:Rust 如何處理異常?

          就目前而言,已有少數(shù)開發(fā)者提出了當(dāng)前這個(gè)旨在助力開發(fā)者用 Rust 開發(fā) Windows 驅(qū)動(dòng)程序的新工具平臺(tái)存在的一些問題,其中一個(gè)引起討論的問題就是 Rust 如何處理異常。

          一位開發(fā)者指出:“對(duì)于 Windows 內(nèi)核(以及整個(gè)操作系統(tǒng))來說,結(jié)構(gòu)化異常處理是 Windows 開發(fā)不可或缺的一部分,也是讓 Rust 成為 Windows 內(nèi)核開發(fā)現(xiàn)實(shí)的真正障礙。”

          但與其他編程語(yǔ)言不同,在 Rust 語(yǔ)言中沒有異常這一說,它通常用 Result 類型來處理可恢復(fù)的錯(cuò)誤,而在遇到不可恢復(fù)的錯(cuò)誤時(shí),Rust 會(huì)提供一個(gè)特殊的宏 panic!當(dāng)執(zhí)行這個(gè)宏時(shí),程序會(huì)打印一段錯(cuò)誤提示信息,展開(unwind)并清理當(dāng)前的棧(Stack),然后退出程序的執(zhí)行。

          正如另一位開發(fā)者所說,“Windows 內(nèi)核中的 Panic 往往是最后的手段,只應(yīng)保留給內(nèi)核已損壞且無法恢復(fù)的情況”,因此不少人認(rèn)為 Rust 調(diào)用 Panic 的方式“在內(nèi)核代碼中是不可取的,這可能會(huì)導(dǎo)致系統(tǒng)崩潰”。

          那么,你對(duì)于 Rust 進(jìn)一步入駐 Windows 的趨勢(shì)又有何看法呢?

          參考鏈接:

          https://github.com/microsoft/windows-drivers-rs

          https://devclass.com/2023/09/25/microsoft-posts-early-stages-code-for-developing-windows-drivers-in-rust/

              
              

            

                 
                 

                  
                  

          1、社區(qū)糾紛不斷:程序員何苦為難程序員?

          2、該死的單元測(cè)試,寫起來到底有多痛?

          3、互聯(lián)網(wǎng)人為什么學(xué)不會(huì)擺爛

          4、為什么國(guó)外JetBrains做 IDE 就可以養(yǎng)活自己,國(guó)內(nèi)不行?區(qū)別在哪?

          5、相比高人氣的Rust、Go,為何 Java、C 在工具層面進(jìn)展緩慢?

          6、讓程序員早點(diǎn)下班的《技術(shù)寫作指南》

          點(diǎn)

          點(diǎn)

          點(diǎn)點(diǎn)

          點(diǎn)在看

          瀏覽 3536
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久成人无码电影 | 色欲影视 淫香淫色 | 日本女同网站 | 国产一级a毛一级a做免费的视频 | 久青草中文在线观看 |