写点什么

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

评论

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

微信朋友圈的高可用复杂度

joak

如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用

汪子熙

RESTful SAP abap Fiori 5月月更

二、KVM架构概述

穿过生命散发芬芳

kvm 5月月更

都是限制,都是秘密,JS逆向某建筑市场数据,python爬虫120例

梦想橡皮擦

5月月更

英特尔投资47亿构建巨型实验室所谓何?数据中心已然进入“液冷时代”

GPU算力

阿里云移动研发平台EMAS:4月产品动态更新

移动研发平台EMAS

阿里云 用户增长 研发工具 移动测试 移动推送

锅圈如何利用 Zadig 从容落地运维容器化建设

Zadig

DevOps 云原生 CI/CD 持续交付

大数据培训用SQL来实现用户行为漏斗分析

@零度

大数据开发

【直播回顾】OpenHarmony知识赋能五期第六课——子系统相机解读

OpenHarmony开发者

OpenHarmony

java培训如何减少 try-catch,这样做才优雅

@零度

JAVA开发

GraphQL初探

RingCentral铃盛

JavaScript graphql

打造TOB企业流量场,钉钉将推出“视频号”,提升CDN性能是关键

郑州埃文科技

钉钉 CDN加速 IP地址 IP定位 网络优化

域名被劫持应该如何处理

源字节1号

软件开发

监控系统报警级别设定

焦振清

监控系统 报警级别

大规模C++编译性能优化系统OMAX介绍

百度Geek说

后端

回顾|Flink CDC Meetup(附 PPT 下载)

Apache Flink

大数据 flink 编程 流计算 实时计算

敏捷领导力(CAL E+T+O)认证在线培训 | 2022年8月18-20日

ShineScrum

敏捷 敏捷领导力 CAL 世界级敏捷领导力大师

华为AppCube通过中国信通院“低代码开发平台通用能力要求”评估!

华为云开发者联盟

低代码 华为云 AppCube

详解SQL操作的窗口函数

华为云开发者联盟

sql 窗口函数 AP场景

私有化IM内置专属文档中心,助力企业协作闭环

BeeWorks

幸运哈希defi游戏系统开发方案(防作弊)

开发微hkkf5566

web前端培训复盘30+技术点(满满干货,建议收藏)

@零度

前端开发

企业实施知识管理建设的7条建议

小炮

Flink 1.15 新功能架构解析:高效稳定的通用增量 Checkpoint

Apache Flink

大数据 flink 编程 流计算 实时计算

【网易云商】TypeScript 进阶指南,突破基本类型

网易智企

typescript

数据库治理的云原生之道 —— Database Mesh 2.0

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

PHP实现令牌桶限流Redis list列表 Lpush rpop 实现令牌桶 - 限流 PHP实例

Owen Zhang

php

喜讯!「凡泰极客」中标「廊坊银行」小程序平台应用建设项目

FinClip

小程序 finclip 廊坊银行

F5 NGINX 核心人员倾力打造,搞懂 NGINX 这一本就够了

图灵教育

nginx 程序员 服务器 计算机

沉浸式体验网易云信在线 KTV

网易云信

音视频技术

深度学习六十年简史

OneFlow

人工智能 机器学习 深度学习

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