微软开源Rust/WinRT,方便使用Rust构建Windows应用

  微软推出了基于Rust的Windows运行时项目Rust/WinRT。该项目和C++/WinRT一脉相承,用标准语言和编译器为Windows运行时构建语言投影,从而方便Rust开发人员调用WindowsAPI,更轻松地使用Rust构建各类Windows应用和组件。

  Windows运行时基于内部的组件对象模型(ComponentObjectModel,COM)API,需要通过诸如C++/WinRT和Rust/WinRT之类的语言投影进行访问。这些语言投影采用描述各种API的元数据,并为目标编程语言提供自然的绑定。这使开发人员可以使用所需的语言为Windows轻松构建应用程序和组件。

  Rust/WinRT由来自Windows团队的工程师KennyKerr于去年十一月提出,并开始进行尝试。他在当时的博客文章中表示,Windows运行时已开始增加对各种语言的支持,但这些都无法脱离C++,直到Rust的出现。

  Kerr认为,即便Rust的学习曲线可能令人望而却步,但它很有可能解决C++与WinRT的关系中一些最棘手的问题。“想象一下不需要IDL的C++/WinRT:更快的构建时间,以及简单而集成的构建系统。”

  根据微软的介绍,Rust/WinRT能够将任意时间段内的WinRTAPI直接调用进Rust包,开发者可以像调用Rust模块一样调用它们。

  Rust与C++在编译和运行时模型等许多方面都非常类似,但Rust在安全性上更胜一筹,这也是微软一直强调和看重的地方。

  官方的介绍文章中还给出了一些关于Rust/WinRT的有趣示例,例如这个从C++/WinRT快速移植到Rust/WinRT的扫雷游戏demo:

  目前Rust/WinRT还处于早期预览状态,微软希望它接下来与现有Win32和COMAPI提供更加无缝的互操作,包括对com-rscrate的支持。

  详情可见微软官方博客:https://blogs.yuhou.cn/windowsdeveloper/2020/04/30/rust-winrt-public-preview/