Redian新闻
>
弃 C/C++,微软官宣:请用 Rust 编写 Windows 驱动

弃 C/C++,微软官宣:请用 Rust 编写 Windows 驱动

公众号新闻

推荐关注↓

转自:CSDN(ID:CSDNnews)

凭借卓越的内存效率、速度与安全性等特点,近几年 Rust 可谓深受大厂青睐:

  • 2019 年,AWS 表示开始在其基础架构中越来越多地使用 Rust 后,决定赞助 Rust,即 Rust 团队可以优惠租用 AWS 基础设施以进行语言开发。

  • 2021 年 2 月 9 日,Rust 基金会成立,Mozilla、亚马逊、华为、谷歌和微软作为创始白金成员,承诺在两年时间里每年投入不少于 100 万美元的预算,以用于 Rust 项目的开发、维护和推广。

  • 2022 年,Meta 宣布将 Rust 语言纳入其服务器端编程语言。

  • 2022 年 12 月,Linux 内核 6.1 发布,包含了初始 Rust 支持。

  • 今年年初,谷歌宣布支持使用 Rust 开发 Chromium。

  • ……

在这众多大厂之中,微软对于 Rust 的重视与支持力度也一直未减。继 5 月效仿 Linux 用 Rust 重写部分 Windows 内核后,近来微软在拥抱 Rust 上又进了一步:微软在 GitHub 中发布了一系列开发工具包,让开发者可以使用 Rust 语言来编写 Windows 驱动程序。

对此,不少开发者在感慨:没想到啊,Windows 在拥抱 Rust 方面居然走在了 Linux 前面!

在拥抱 Rust 的路上,微软曾遭到反对

事实上,早在 2019 年 2 月,微软工程师 Matt Miller 在以色列举行的安全会议 BlueHat 上曾透露:从 2006 年到 2018 年,微软旗下产品过去 12 年修复的所有漏洞中,有七成涉及的都是内存安全问题。

内存安全问题占比高的原因,主要是因为 Windows 大多是以 C 和 C++ 编写的——著名的“内存不安全”语言。内存管理代码只要有一个漏洞,就会导致大量的内存安全错误,从而可能引发远程代码执行或权限提升漏洞等攻击。

对于这些潜在风险,同年 7 月微软研究院发布了一份声明,希望“在漏洞发生之前消除一整类漏洞”,并表示“满足这些要求的最有前途的新系统编程语言之一,就是最初由 Mozilla 发明的 Rust”。从这份声明可以看出,至少自 2019 年开始,微软已打算在拥抱 Rust 上积极布局。

到了去年 9 月,微软 Azure 首席技术官 Mark Russinovich 在 X(前推特)上发文,正式呼吁业界淘汰 C / C++,应改用更加安全的 Rust 语言:

说到语言,现在是时候停止用 C/C++ 启动任何新项目了,在需要使用非 GC 语言的情况下使用 Rust。为了安全性和可靠性,业界应该宣布这些语言已被淘汰。

可不同于 Mark Russinovich 对 Rust 的支持和青睐,当时他的这则帖子下多是反对和质疑的声音:“这完全是一个与显示脱节、不切实际的想法。”

  • “这听起来像是在指责语言本身而不是程序员。C++ 是门好语言,只是许多使用它的人基本上不懂编程,而换一种语言并不能解决这个问题。”

  • “Rust 是一种不错的语言,但它甚至还未达到 1.0 版本,我认为我们不应该为了尚未经过实战检验的语言而放弃久经考验的语言。”

尽管不被看好,但微软转向 Rust 的决心依旧坚定。今年 5 月 Mark Russinovich 宣布微软已用 Rust 重写部分 Windows 内核:“如果你在 Windows 11 Insider ring 上,那么将首次感受到 Rust 在 Windows 内核中带来的魔力。”

当时,或许是网友对微软拥抱 Rust 的决定已逐渐接受,也或许是微软解释过并非是用 Rust 替换内核中 C/C++ 的整个“40 年工作”,而是将其中一些内部的 C++ 数据类型替换成 Rust,因此在这则帖子下大多是正面留言。

从 2019 年放出风声,到已用 Rust 重写部分 Windows 11 内核代码,如今微软拥抱 Rust 的程度仍在继续加深:在 Github 上发布工具包,让开发者能用 Rust 编写 Windows 驱动程序——这无疑是为操作系统实现内存安全编程的关键一步。

仍处于早期开发阶段,不建议“用于商业用途

从 Mark Russinovich 在 X 上分享的 Github 链接来看,这个由微软 Surface 团队开发的新项目名为 windows-drivers-rs,是一个由多个 Rust 组件(Crates)组成的项目,可帮助开发人员用 Rust 开发 Windows 驱动程序。

该项目同时支持 WDM(Windows Driver Model)和 WDF(Windows Driver Foundation)两种不同的驱动程序开发模型:WDM 驱动程序级别较低,与操作系统紧密相连,而 WDF 驱动程序则通过框架库与系统交互。

据介绍,windows-drivers-rs 具体包含以下板块:

  • wdk-build:一个用于配置 Cargo 构建脚本的库,可用于绑定生成和 WDK(Windows Developer Kit)的下游链接。

  • wdk-sys:将 FFI 直接绑定到 WDK 中提供的 API。

  • wdk:与 WDK 中的 API 安全绑定。

  • wdk-panic:使用 WDK 构建的程序的默认 panic 处理程序实现。

  • wdk-alloc:为使用 WDK 编译的二进制文件提供分配支持。

  • wdk-macros:宏集合,有助于更轻松地与 wdk-sys 的直接绑定进行交互。

如需查看 windows-drivers-rs 用于创建驱动程序的示例,开发者可前往:https://github.com/microsoft/Windows-rust-driver-samples。

值得注意的是,微软补充:虽然该项目的计划灵活运用不同的 WDK 版本和不同的 WDF 版本,但目前“仅针对 NI eWDK、KMDF 1.33、UMDF 2.33 和 WDM 驱动程序进行了测试”,对于“较旧的 DDK 可能会缺少链接器选项”。

此外,微软还表示 windows-drivers-rs 目前仍处于早期开发阶段,因此“不建议用于商业用途”,但励社区和开发者对其进行试验、建议和反馈,并将利用 GitHub 论坛作为与社区互动的主要形式。

开发者提问:Rust 如何处理异常?

就目前而言,已有少数开发者提出了当前这个旨在助力开发者用 Rust 开发 Windows 驱动程序的新工具平台存在的一些问题,其中一个引起讨论的问题就是 Rust 如何处理异常。

一位开发者指出:“对于 Windows 内核(以及整个操作系统)来说,结构化异常处理是 Windows 开发不可或缺的一部分,也是让 Rust 成为 Windows 内核开发现实的真正障碍。”

但与其他编程语言不同,在 Rust 语言中没有异常这一说,它通常用 Result 类型来处理可恢复的错误,而在遇到不可恢复的错误时,Rust 会提供一个特殊的宏 panic!当执行这个宏时,程序会打印一段错误提示信息,展开(unwind)并清理当前的栈(Stack),然后退出程序的执行。

正如另一位开发者所说,“Windows 内核中的 Panic 往往是最后的手段,只应保留给内核已损坏且无法恢复的情况”,因此不少人认为 Rust 调用 Panic 的方式“在内核代码中是不可取的,这可能会导致系统崩溃”。

那么,你对于 Rust 进一步入驻 Windows 的趋势又有何看法呢?

参考链接:

https://github.com/microsoft/windows-drivers-rs

https://devclass.com/2023/09/25/microsoft-posts-early-stages-code-for-developing-windows-drivers-in-rust/


- EOF -

推荐阅读  点击标题可跳转

1、马斯克硬核迁移服务器

2、中国数学老师在P站教微积分年入百万

3、放弃亚马逊、谷歌!!!

4、监控员工微信聊天记录,方法还这么多!


关注「程序员的那些事」加星标,不错过圈内事

点赞和在看就是最大的支持❤️

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
微软将在Windows中弃用VBScript卡巴斯基曝光 StripedFly 漏洞,感染至少百万台 Linux 和 Windows 设备Windows 远程不要再用 mstsc 了,实用 开源 神器推荐,1.5kstarJetBrains发布独立Rust IDE:RustRovervivo自研系统正式发布 Rust语言编写,vivo X100官宣硬核观察 #1122 微软将取消 Windows 中的第三方打印机驱动程序微软在 Windows 11 上强推 exe 软件弹窗,只为让 Chrome 用户尝试 Bing ?!iPhone、Mac 直接体验 Windows?微软重磅推出 Windows App硬核观察 #1182 40 年前,微软宣布 Windows 开发计划NGINX 模块现在可以用 Rust 编写了用 Rust 编写核心组件!独家揭露阿里云开源 GraphScope 如何成为全球最快图计算引擎硬核观察 #1166 微软 CEO 称过早放弃了 Windows Phone微软CEO:放弃 Windows Phone 和移动业务是错的!Linus 曾给 Windows 7 热情点赞放弃支持Windows GPU、bug多,TensorFlow被吐槽:2.0后慢慢死去戴尔推出全球最轻的 10 英寸三防 Windows 平板电脑 Latitude 7030 Rugged Extreme今日财经| 高通称“撤离上海”说法夸大其词;余承东任华为车BU董事长;Windows AI时代来了;蔚来官宣首款自研芯片“杨戬”光的记忆富国强兵和改革开放打造不怕生病的身體本錢Jetbrains发布全新 Rust IDE 命名RustRover,Linux 等可免费下载用 Rust 编写,已有 10 万行代码:顶级黑客组织出手,将推出新的反数据收集开源框架 Veilid微软Windows Hello指纹认证被破解 多款笔记本电脑受影响Linus曾给Windows 7热情点赞微软推出全新Windows应用商店 可直接搜索下载微软CEO:放弃Windows Phone和移动业务,错了!微软决心移除 Windows 中已用 27 年的旧技术,VBScript 走向末路?下一代 Apple Watch 两大新功能曝光 / 茅台出厂价上调20% / 微软发布Windows 11重大更新Covid 2023亚麻、微软官宣:这张Data Analyst证书留学生零门槛拿!vivo发布AI对话机器人蓝心千询;微软Windows11更新推出Copilot预览版丨AIGC日报自卫的段位重磅!微软官宣Python接入Excel中国14岁初中生,开源Windows 12网页版,star数近2k​今年天猫双11将于10月24日开启;中国网络空间安全协会人工智能安全治理专业委员会成立;微软官宣正式收购动视暴雪……
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。