微軟開源Rust/WinRT 方便使用Rust構建Windows應用
微軟推出了基於Rust的Windows運行時項目Rust/WinRT。該項目和C++/WinRT一脈相承,用標準語言和編譯器為Windows運行時構建語言投影,從而方便Rust開發人員調用Windows API,更輕鬆地使用Rust構建各類Windows應用和組件。
Windows 運行時基於內部的組件對像模型(Component Object Model,COM)API,需要通過諸如C++/WinRT 和Rust/WinRT 之類的語言投影進行訪問。這些語言投影採用描述各種API 的元數據,並為目標編程語言提供自然的綁定。這使開發人員可以使用所需的語言為Windows 輕鬆構建應用程序和組件。
Rust/WinRT由來自Windows團隊的工程師 Kenny Kerr 於去年十一月提出,並開始進行嘗試。他在當時的博客文章中表示,Windows運行時已開始增加對各種語言的支持,但這些都無法脫離C++,直到Rust的出現。
Kerr 認為,即便Rust 的學習曲線可能令人望而卻步,但它很有可能解決C++ 與WinRT 的關係中一些最棘手的問題。“想像一下不需要IDL 的C++/WinRT:更快的構建時間,以及簡單而集成的構建系統。”
根據微軟的介紹,Rust/WinRT能夠將任意時間段內的WinRT API直接調用進Rust包,開發者可以像調用Rust模塊一樣調用它們。
Rust 與C++ 在編譯和運行時模型等許多方面都非常類似,但Rust 在安全性上更勝一籌,這也是微軟一直強調和看重的地方。
官方的介紹文章中還給出了一些關於Rust/WinRT的有趣示例,例如這個從C++/WinRT快速移植到Rust/WinRT的掃雷遊戲demo:
目前 Rust/WinRT 還處於早期預覽狀態,微軟希望它接下來與現有Win32 和COM API 提供更加無縫的互操作,包括對 com-rs crate 的支持。
詳情可見微軟官方博客:https://blogs.windows.com/windowsdeveloper/2020/04/30/rust-winrt-public-preview/