<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 編寫(xiě) Windows 驅(qū)動(dòng)!

          共 3879字,需瀏覽 8分鐘

           ·

          2023-10-09 04:43

          8cca2f0983a2cf4d41fd55b521de1305.webp

          整理 | 鄭麗媛
          出品 | CSDN(ID:CSDNnews)

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

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

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

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

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

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

          • ……

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

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

          254b49c4b915fed0f135d79fbb7c4ee5.webp

          402a8befe0412f07291a9ec5154685ec.webp

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

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

          1d77ebe6dee2c5e7a20c17c25d15ae09.webp

          內(nèi)存安全問(wèn)題占比高的原因,主要是因?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;background-color:rgb(255,255,255);"> Windows 大多是以 C 和 C++ 編寫(xiě)的——著名的“內(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ā)生之前消除一整類(lèi)漏洞”,并表示“滿足這些要求的最有前途的新系統(tǒng)編程語(yǔ)言之一,就是最初由 Mozilla 發(fā)明的 Rust”。從這份聲明可以看出,至少自 2019 年開(kāi)始,微軟已打算在擁抱 Rust 上積極布局。

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

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

          8a5eae758cd7c3a59b7d008412e17751.webp

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

          • “這聽(tīng)起來(lái)像是在指責(zé)語(yǔ)言本身而不是程序員。C++ 是門(mén)好語(yǔ)言,只是許多使用它的人基本上不懂編程,而換一種語(yǔ)言并不能解決這個(gè)問(wèn)題?!?/span>

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

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

          f2135d699810935fc408b83a01be0776.webp

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

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

          1f6051918d14ca98b7b19437e0a84034.webp

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

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

          該項(xiàng)目同時(shí)支持 WDM(Windows Driver Model)和 WDF(Windows Driver Foundation)兩種不同的驅(qū)動(dòng)程序開(kāi)發(fā)模型:WDM 驅(qū)動(dòng)程序級(jí)別較低,與操作系統(tǒng)緊密相連,而 WDF 驅(qū)動(dòng)程序則通過(guò)框架庫(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)程序的示例,開(kāi)發(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 目前仍處于早期開(kāi)發(fā)階段,因此“不建議用于商業(yè)用途”,但 勵(lì)社區(qū)和開(kāi)發(fā)者對(duì)其進(jìn)行試驗(yàn)、建議和反饋,并將利用 GitHub 論壇作為與社區(qū)互動(dòng)的主要形式。

          bb7ea2bb5da94da786850afcbbe4f8fc.webp

          開(kāi)發(fā)者提問(wèn):Rust 如何處理異常?

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

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

          aa443860afd67f49f38056357c5a8620.webp

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

          正如另一位開(kāi)發(fā)者所說(shuō),“Windows 內(nèi)核中的 Panic 往往是最后的手段,只應(yīng)保留給內(nèi)核已損壞且無(wú)法恢復(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/

          ddc0446f20a97f05875ffac45de1f2d4.webp

          歡迎參與 CSDN 重磅發(fā)起的《2023 AI 開(kāi)發(fā)者生態(tài)調(diào)查問(wèn)卷》,分享您真實(shí)的 AI 使用體驗(yàn),更有精美好禮等你拿!

          推薦閱讀:

          ? 讓 AI 取代人類(lèi)工作 3 個(gè)月,公司 CEO 夸贊:“復(fù)制粘貼的工作完全消失了!”

          ? 代碼別拿來(lái)就用!中國(guó)研究者14頁(yè)論文預(yù)警:Copilot生成代碼35.8%有漏洞、C++成“重災(zāi)區(qū)”

          ? 蘋(píng)果 App Store 現(xiàn)黃色軟件偽裝成學(xué)習(xí)軟件;微軟或推出自家首款A(yù)I芯片;Rails 7.1 發(fā)布|極客頭條

          瀏覽 44
          點(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>
                  AV高清无码 | 欧美黄片亚洲黄片 | 操屄网 | 黄色视频免费久久 | 国语对白中文字幕第二页视频 |