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

語言: CN / TW / HK

Rust/WinRT 是 Windows 執行時的一種語言對映,現在釋出了預覽版,可以通過自然慣用的方式來呼叫 Windows API,類似於 C++/WinRT 等其他語言對映。

藉助 Rust/WinRT,你可以直接使用由 API 元資料生成的動態程式碼來呼叫 WinRT API,不管是過去的、現在的還是未來的,並可以直接呼叫 Rust 包,就好像呼叫另一個 Rust 模組一樣。

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

複製程式碼

usewindows::data::xml::dom::*;
letdoc = XmlDocument::new()?;
doc.load_xml("<html>hello world</html>")?;
letroot = 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 模組:

複製程式碼

usewinrt::*;
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