写点什么

Rust/WinRT 预览版发布,微软在 Rust 大道上又进了一步

  • 2020-05-26
  • 本文字数:1014 字

    阅读完需:约 3 分钟

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


2020-05-26 10:132834

评论

发布
暂无评论
发现更多内容

从一个服务预热不生效问题谈微服务无损上线

阿里巴巴云原生

阿里云 微服务 云原生

防盗、防泄露、防篡改,我们把 ZooKeeper 的这种认证模式玩明白了

阿里巴巴云原生

阿里云 微服务 云原生

再获殊荣!嘉为蓝鲸携手电力公司入选工信部信创典型解决方案

嘉为蓝鲸

运维 数字化转型 信创

涨姿势啦!Go语言中正则表达式初始化的最佳实践

左诗右码

Go

广汽集团与火山引擎签署战略合作协议

新消费日报

如何用 CocosCreator 对接抖音小游戏的侧边栏复访

北桥苏

小游戏 小游戏开发 CocosCreator

通义灵码代码大模型应用实践访谈

阿里巴巴云原生

阿里云 云原生 通义灵码

千行万业的数智化,将在全闪普惠的土壤上开出新花

Alter

可观测产品剖析——硬件监控

嘉为蓝鲸

运维 监控 数据监测 数据接入

30% 代码由 AI 生成,单测准确率达到 90%,我在阿里巴巴国际站推广通义灵码

阿里巴巴云原生

阿里云 云原生 通义灵码

代理IP如何助力品牌保护?

IPIDEA全球HTTP

品牌 代理IP

Golang 策略设计模式

俞凡

架构 设计模式

国际化战略:京东商品详情API的全球视野

技术冰糖葫芦

api 货币化 API 接口 API 文档 API 测试

通义灵码代码大模型应用实践访谈

阿里云云效

阿里云 云原生 通义灵码

将大模型装进PC和手机,需要怎样的底层创“芯”?

脑极体

AI

开启DevOps+AI智能新时代,嘉为蓝鲸智能AI助手CAssist全新上线!

嘉为蓝鲸

DevOps 生成式AI

嘉为蓝鲸WeOps上新:新增机房机柜视图,集中管理IT设备

嘉为蓝鲸

运维 weops IT资产管理

30% 代码由 AI 生成,单测准确率达到 90%,我在阿里巴巴国际站推广通义灵码

阿里云云效

阿里云 云原生 通义灵码

私网环境下如何使用云效流水线进行 CI/CD?

阿里巴巴云原生

阿里云 云原生 云效

AI 点燃体育热情!使用 PAI-Artlab 定制专属海报

阿里云大数据AI技术

人工智能 奥运会 AIGC 文生图 PAI

重磅!观测云荣获SOC 2 Type II鉴证报告

观测云

安全合规

Spring Boot 基于 SCRAM 认证集成 Kafka 的详解

不在线第一只蜗牛

kafka Spring Boot

未来已来:阿里巴巴商品搜索API返回值的智能化展望

技术冰糖葫芦

api 货币化 API 接口 API 文档 API 测试

文旅科技公司:云管高效赋能,加速云上业务蓬勃发展

嘉为蓝鲸

运维 多云管理平台 云管理

可观测产品剖析——日志统一管理

嘉为蓝鲸

日志监控 日志管理 日志采集

论如何利用仿真技术轻松攻克电子产品热流体仿真难题

Altair RapidMiner

设计 汽车 电子产品 仿真 altair

Rust/WinRT预览版发布,微软在Rust大道上又进了一步_编程语言_Sergio De Simone_InfoQ精选文章