天天看點

微軟正在開發基于 Rust 的安全程式設計語言 Verona

微軟正在開發基于 Rust 的安全程式設計語言 Verona

近日

在一次演講中

,談到微軟為解決相應記憶體問題所做的工作,微軟在英國的研究人員 Matthew Parkinson 提到了微軟正在開發的基于 Rust 的新程式設計語言,這個項目,微軟内部稱為“Verona"。

此前,微軟表示正探索将 Rust 作為 C 和 C++ 的安全替代方案,并且也對外展示了使用 Rust 重寫 Windows 元件的體驗,根據微軟的說法,Rust 是一種從根本上考慮安全性的程式設計語言,他們将嘗試使用 Rust 重寫各種産品,因為在過去的十年裡,微軟 70% 以上的安全更新檔都提供了與記憶體相關的錯誤,而 Rust 正是解決這個問題的“良藥”。

演講中,Matthew 先是分享了微軟在 MemGC(Memory Garbage Collector)上所做的工作,MemGC 是指 IE 和 Edge 浏覽器上的記憶體垃圾回收器,它解決了标準浏覽器一個特性——文檔對象模型(DOM)中的漏洞,DOM 以樹結構表述了 HTML 文檔内容。

之後他由此牽出另一個問題:如何建構最安全的産品?不僅僅丢棄已有的東西,而要考慮可以在更加安全的系統中建構一些什麼。他介紹了微軟正在使用 Rust 重寫某些元件,并提出:“如果我們想要隔離,并精簡遺留代碼,以使攻擊者的利用代碼無法逃逸出來,那麼如何設計語言呢?”

Matthew 提出了微軟正在開發的基于 Rust 的新程式設計語言 Verona,他表示這是首次讨論該項目,微軟宣稱這門語言是用于“安全的基礎設施程式設計 - safe infrastructure programming”,Verona 項目很“快”會開源。

Matthew 介紹,Verona 由 C# 項目經理 Mads Torgensen 與 微軟劍橋研究院研究軟體工程師 Juliana Franco 維護。

微軟面臨的挑戰是應對寬廣的應用領域,範圍從 C# 桌面應用到 C 或 C# Exchange、ASP.NET、Azure 與裝置驅動程式,再到記憶體管理和啟動加載器等底層 Windows 元件,以及 Windows 核心硬體抽象層(HAL,hardware abstraction layer)。

“執行記憶體管理确實很困難,如果有任意并發突變,則臨時記憶體安全性将非常困難”,Matthew 介紹了 Verona 的設計思路:“Verona 的所有權模型是基于對象組的,而不是像 Rust 那樣基于單個對象的所有權模型。在 C++ 中,可以獲得指針,并且它是基于對象的。但這與我關于資料和文法的思考不同,我認為資料結構是對象的集合,而對象的集合則是生命周期。 是以,通過在對象的所有權級别獲得所有權,我們就可以更接近人們正在使用的抽象級别,它使我們能夠建構資料結構而不會超出安全範圍。”