微軟正著手用Rust語言重寫核心Windows庫,這批內存安全度更高的代碼已被交付至軟件開發(fā)商手中。
Windows系統安全總監(jiān)David “dwizzle” Weston在上月以色列特拉維夫的BlueHat IL 2023大會上,正式宣布Rust即將入駐Windows系統內核。
“在未來幾月甚至是幾周內,大家就會開始用內核中的Rust代碼啟動Windows,這可太酷了。我們的基本目標是將一部分內部C++數據類型轉換成Rust形式!
微軟對Rust的關注已經持續(xù)了好幾年,并將其視為在產品交付之前發(fā)現并消除內存安全漏洞的好辦法。自2006年以來,Windows團隊根據CVE修復了產品中的大量安全漏洞,其中約70%都跟內存安全有關。
Rust工具鏈關于揪出代碼中的潛在漏洞,從理論上打擊惡意黑客攻擊軟件弱點的行為。Rust編程語言在設計上就高度強調內存安全等保護措施,能夠減少代碼中嚴重bug的數量。
除微軟之外,谷歌等競爭對手也已公開表達了對Rust的支持。
順應行業(yè)對內存安全編程的踴躍態(tài)度,微軟的Rust探索計劃也愈發(fā)積極。去年9月,微軟Azure首席技術官Mark RUssinovich以非官方身份表示,新的軟件項目不該再用C/C++,而應更多使用Rust。
Windows的Rust革新之路始于2020年的DWriteCore項目,它屬于Windows DWrite引擎的Windows App SSDK實現,負責進行文本分析、布局和渲染。DWriteCore目前擁有約15.2萬行Rust代碼,C++代碼則為約9.6萬行。
除了安全改進之外,據說使用OTLS(OpenType庫服務)還能將Shaping字形的處理性能提高5%至15%。目前這些功能均已向開發(fā)人員開放。
微軟Windows圖形設備接口(Win32 GDI)也在進行Rust移植,目前的Rust代碼量已達3.6萬行。最新版本的Windows 11就使用Rust版GDI啟動,其已經通過了所有測試,只是目前仍被功能標志禁用。
Weston表示,“Windows內核中的SysCall其實就是用Rust實現的!
但微軟也沒有對Rust的未來盲目樂觀。Weston坦言“短信內可能不會用Rust全面重寫Windows。雖然我們很喜歡Rust,但仍需要一套全面的策略,包括考慮如何保護更多原生代碼。”
但無論如何,微軟的關注和支持正在以代碼貢獻的形式讓Rust變得更加強大,也成為整個開源社區(qū)的一股重要助力。
Flask in Python項目負責人兼Sentry安全工程師Armin Ronacher就以開源軟件開發(fā)者的身份,在郵件采訪中肯定了微軟的支持對于Rust這門語言的重要意義。
“具體來講,我希望微軟能重用現有編譯器,從而實現更好的PDB(程序數據庫)支持。至少就目前來講,Windows對開發(fā)者工具的支持還落后于基于DWARF(使用屬性記錄格式進行調試)類平臺的支持能力。”
Pydantic公司創(chuàng)始人兼Python與Rust開發(fā)者Samuel Colvin也指出,“我對微軟的這種前瞻性眼光非常贊賞,而且這也完全在情理之中。我相信微軟是在內部工程師的壓力下才選擇Rust的。如果當下我們打算開發(fā)一款強調性能或者底層應用程序,那么Rust肯定是個明智的選項!
Colvin表示,雖然優(yōu)秀的Rust工程師相對沒那么普遍,但尋找這類人才的難度還是要比尋找優(yōu)秀C/C++工程師更低。
“雖然擁有豐富Rust開發(fā)經驗的人不多,但很多工程師都抱有興趣、愿意學習。既然編寫安全代碼本身就是件難事,使用Rust至少能把難度降低一個數量級!
“對我們這些高度依賴Rust的開發(fā)者來說,微軟對這門語言表達的認可和支持真的令人非常興奮!