NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:132331

评论

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

Kubernetes大二层网络:挑战与解决方案探索

GousterCloud

cni #k8s

产品经理职责

执于业务

Vision Pro开发实践(一)

京东科技开发者

AMA live class

EchoZhou

English

我们是如何测试人工智能的(四):模型全生命周期流程与测试图

测试人

人工智能 软件测试

VMware ESXi 8.0U2b macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi 驱动 网卡 BIOS unlocker

TiDB 慢查询日志分析

PingCAP

数据库 日志分析 TiDB 慢查询

AI数字人克隆系统源代码克隆系统开发--本地源码部署!

青否数字人

数字人

TiDB MVCC 版本堆积相关原理及排查手段

PingCAP

数据库 MVCC TiDB

马斯克开源大模型Grok-1,手把手教你如何使用

京东科技开发者

云PBX的内容介绍

ctsxiyou

通信 通讯 云通讯

这一次,让我们一起来搞懂MySQL

TimeFriends

数字人克隆系统源码独立部署几万块真的可以做到!

青否数字人

数字人

VMware ESXi 8.0U2b macOS Unlocker & OEM BIOS 标准版和厂商定制版

sysin

esxi 驱动 unlocker dell hpe

通过Golang获取公网IP地址

GousterCloud

#go 公网ip

代码手术刀—自定义你的代码重构工具

京东科技开发者

Sermant热插拔能力在故障注入场景的实践

华为云开发者联盟

开源 华为云 华为云开发者联盟 sermant 企业号2024年4月PK榜

@Transactional事务是真的好用吗

派大星

Spring事务 Java 面试题 互联网大厂面试

MySQL 主从 AUTO_INCREMENT 不一致问题分析

vivo互联网技术

auto_increment MySQL典型案例 replace into

虚拟人/数字人日不落直播带货(无违规)怎样实现?

青否数字人

数字人

【论文速读】| 大语言模型平台安全:将系统评估框架应用于OpenAI的ChatGPT插件

云起无垠

效率提升 80%:go-mongox 让复杂的 BSON 数据编写变得简单

陈明勇

Go 开源 go mongo

深度剖析鞋服品牌商品数字化管理的重要性

第七在线

一条SQL查询语句是如何执行的

TimeFriends

如何打造全国一体化算力体系?

天津汇柏科技有限公司

算力 一体化

LangChain初探:为你的AI应用之旅导航

蛋先生DX

#人工智能 LLM #LangChain Prompt 企业号2024年4月PK榜

唐刘:关于产品质量的思考 - 如何评估质量

PingCAP

数据库 分布式 TiDB 产品质量

kube-apiserver限流机制原理

华为云开发者联盟

Kubernetes 开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

Advanced RAG 02:揭开 PDF 文档解析的神秘面纱

Baihai IDP

AI LLM 白海科技 企业号 4 月 PK 榜 检索增强生成

Sermant热插拔能力在故障注入场景的实践

华为云开源

开源 微服务 服务治理

探索Kubernetes的大二层网络:原理、优势与挑战🚀

GousterCloud

大二层网络 网络模型 #k8s

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