Rust/WinRT預覽版發佈,微軟在Rust大道上又進了一步

Rust/WinRT是Windows運行時的一種語言映射,現在發佈了預覽版,可以通過自然慣用的方式來調用Windows API,類似於C++/WinRT等其他語言映射。

藉助Rust/WinRT,你可以直接使用由API元數據生成的動態代碼來調用WinRT API,不管是過去的、現在的還是未來的,並可以直接調用Rust包,就好像調用另一個Rust模塊一樣。

微軟首席軟件工程師Kenny Kerr解釋說,Rust開發人員可以使用Rust/WinRT開發Windows應用程序和組件,以及NT服務或Windows驅動程序。下面演示瞭如何使用XmlDocument類來解析XML文檔:

use windows::data::xml::dom::*;
let doc = XmlDocument::new()?;
doc.load_xml("<html>hello world</html>")?;
let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hello world");

微軟努力讓Rust/WinRT代碼儘可能看起來接近慣用的Rust代碼,比如,蛇形命名到駝峯命名的自動轉換、對Rust null合併操作符?的支持、簡化錯誤傳遞,等等。

根據InfoQ之前的報道,一段時間以來,微軟一直在探索將Rust作爲開發安全軟件的解決方案。微軟工程師Ryan Levick和Sebastian Fernandez在上一界巴塞羅那RustFest大會上解釋說,微軟期望Rust能夠讓高性能關鍵組件的開發變得更安全,儘管Rust社區仍然需要克服很多困難才能讓Rust及其工具鏈爲Windows提供一等支持。

這個新項目似乎證實了微軟對待在開發中使用Rust這件事是認真的:

長期以來,微軟一直將C++作爲開發的基礎,但也面臨着一些挑戰,尤其是在安全方面。Rust是一種有趣的編程語言,它在很多方面與C++非常相似,在編譯、運行時模型、類型系統和確定性終止機制方面都做得很好。它有自己獨特的學習曲線,不過它可以解決困擾C++項目的一些最令人頭疼的問題,而且它的設計從一開始就是以內存安全和安全併發作爲核心原則。

要在項目中使用Rust/WinRT,可以在Cargo.toml文件添加依賴:

[dependencies]
winrt = { git = "https://github.com/microsoft/winrt-rs" }

這樣就可以導入任意Windows模塊:

use winrt::*;
import!(
    dependencies
        os
    modules
        "windows.data.xml.dom"
        "windows.foundation"
        "windows.ui"
);

Rust/WinRT現在只提供了早期預覽版,雖然已經足夠成熟了。Robert Mikhayelyan的Rust掃雷遊戲提供了非常好的示例。

原文鏈接

Rust/WinRT Brings Microsoft Closer to Adopting Rust Internally

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章