当前位置:首页 > 科技  > 软件

停止用C++启动任何新项目!微软力推Rust重构Windows!

来源: 责编: 时间:2023-09-28 10:08:35 187观看
导读编译丨千山相比Python、Java这样的主流语言,Rust可能还比较小众,但近两年其影响力和所受关注度却在与日俱增。在 StackOverflow 开发者调查问卷中,Rust连续八年蝉联最受欢迎编程语言榜首。在新近出炉的Tiobe九月编程语言

编译丨千山6fe28资讯网——每日最新资讯28at.com

相比Python、Java这样的主流语言,Rust可能还比较小众,但近两年其影响力和所受关注度却在与日俱增。6fe28资讯网——每日最新资讯28at.com

  • 在 StackOverflow 开发者调查问卷中,Rust连续八年蝉联最受欢迎编程语言榜首。
  • 在新近出炉的Tiobe九月编程语言排行榜中,Rust排名更是上升到第17位。
  • 不久前Jetbrains 官宣发布了独立的Rust IDE :RustRover(详见之前的报道《弃用开源插件!JetBrains决定对Rust出手!》)。

可以说,Rust正在进入更加成熟与扩大应用规模的阶段。在Rust的一众支持者中,微软可谓相当高调。6fe28资讯网——每日最新资讯28at.com

今年4月,在BlueHat IL 2023会议上,Windows操作系统安全总监David dwizzle Weston宣布 Rust 正式进入操作系统内核。如今,微软在拥抱Rust的道路上再次放出大招。6fe28资讯网——每日最新资讯28at.com

重写内核还不够,Windows已经开始有了适配Rust驱动的打算!昨天,微软突然在Github上开放一个重磅项目——windows-drivers-rs,它支持开发人员使用Rust为Windows开发驱动程序。这是操作系统内存安全编程的关键一步。6fe28资讯网——每日最新资讯28at.com

为此,Azure的CTO Mark Russinovich特意在X(推特)上发布了这个链接,并评论道:“致力于在Rust中实现Windows驱动程序的开发。”6fe28资讯网——每日最新资讯28at.com

6fe28资讯网——每日最新资讯28at.com

1、打破闭源,微软选择Rust的背后

微软对于Rust的看好可以追溯到多年以前。2019年7月,微软研究院发布了一份声明,希望“在漏洞发生之前消除一整类漏洞”,为内存安全语言提供了理由,并指出“满足这些要求的最有前途的新系统编程语言之一是最初由Mozilla发明的Rust编程语言”。6fe28资讯网——每日最新资讯28at.com

Rust语言的特性或者说其设计目标之一就是提供内存安全保证,避免出现内存泄漏、缓冲区溢出等问题。这一点是微软看重它的重要原因之一,此外,这门语言的并发性能也极为出色,它提供了轻量级的线程和异步编程模型,可以充分利用多核处理器的性能。6fe28资讯网——每日最新资讯28at.com

从现有公开资料来看,Windows的Rust改造始于2020年,由DWriteCore开始。DWriteCore 是 Windows 的DWrite引擎的Windows应用程序SDK实现,用于文本分析、布局和渲染。DWriteCore 现在由大约152000行Rust代码和大约96000行C++代码组成。6fe28资讯网——每日最新资讯28at.com

2、抛弃C++,用Rust开发Windows

“说到语言,现在是时候停止用 C/C++ 启动任何新项目了,并在那些需要使用 non-GC 语言的场景中使用 Rust。为了安全性和可靠性,业界应该宣布弃用这些语言。”6fe28资讯网——每日最新资讯28at.com

这是去年Mark Russinovich在其社交账号上公开发布的动态。作为Azure CTO,他的言论一石激起千层浪。6fe28资讯网——每日最新资讯28at.com

随后C++之父 Bjarne Stroustrup的隔空回应又让这场辩论再添一丝火药味。“新的语言通常需要多年的时间和重大的努力,才能在其广泛的应用领域中与成熟的语言相媲美。发烧友们很少看到这一点,他们的评论往往是相当片面的。”6fe28资讯网——每日最新资讯28at.com

且不论这场battle结果如何,微软官方虽然没有明确表态,但在拥抱Rust的力度上却是在稳步推进的。6fe28资讯网——每日最新资讯28at.com

由于各种技术和历史原因,Windows主要是用C和C++编写的。“大多数用户模式代码现在都是用C++编写的,但大多数内核代码仍然是用C编写的。”6fe28资讯网——每日最新资讯28at.com

微软资深软件工程师Raymond Chen在2018年表示,尽管Windows 11从那时起就出现了,但在开发新版本时,操作系统并没有重写。硬件制造商使用Windows驱动工具包使他们的设备能够在Windows中工作,它仍然是一个C/ C++工具包。6fe28资讯网——每日最新资讯28at.com

而最新推出的名为windows-drivers-rs的项目带来了全新的可能性。6fe28资讯网——每日最新资讯28at.com

根据新的基于Rust的驱动工具包的发布说明,其目的是同时支持 WDM(Windows 驱动程序模型)和 WDF(Windows 驱动程序框架)。WDM 驱动程序级别较低,与操作系统紧密绑定,而 WDF 驱动程序通过框架库与系统交互。6fe28资讯网——每日最新资讯28at.com

该存储库包含Rust crate,允许开发人员使用WDM和WDF驱动程序开发模型创建Windows驱动程序。当前版本的存储库包含以下crate、库和宏集:wdk-build、wdk-sys、wdk、wdk-panic、wdk-alloc、wdk-macros。6fe28资讯网——每日最新资讯28at.com

3、处于早期,Rust重构Windows或成定局

发布说明还提到,该项目仍处于早期开发阶段,不建议用于商业用途。微软鼓励实验和反馈,并指出开发人员可以在GitHub讨论论坛上获得反馈。6fe28资讯网——每日最新资讯28at.com

之所以称为“早期”,是因为还面临诸多挑战,比如,如何处理异常。“对于Windows内核(以及一般的操作系统)来说,结构化异常处理是Windows开发的一个组成部分,也是让Rust成为Windows内核开发现实的真正障碍,”一名开发人员如是说。6fe28资讯网——每日最新资讯28at.com

Rust的错误处理机制中,错误分为两类:可恢复的和不可恢复的。Rust更喜欢使用Result变量报告可恢复的错误,并在出现不可恢复的错误时使用panic failure退出。但这种故障处理在内核代码中是不可取的,因为它们会导致系统崩溃。6fe28资讯网——每日最新资讯28at.com

开发人员Johnny Shaw引用Linux Torvalds的话说,在Linux内核(也采用Rust)的上下文中,“因为内核代码不同于随机的用户空间系统工具。内存不足绝对不能导致中止。它只需要导致错误返回。”Torvalds认为这是一个“根本问题”。6fe28资讯网——每日最新资讯28at.com

微软新存储库的早期代码包括如下注释:6fe28资讯网——每日最新资讯28at.com

// FIXME: Should this trigger Bugcheck via KeBugCheckEx?6fe28资讯网——每日最新资讯28at.com

这个问题说明,将Rust引入底层Windows代码不仅仅是为WDK api添加Rust语言绑定的问题。其牵涉的细节往往牵一发而动全身。6fe28资讯网——每日最新资讯28at.com

不过目前来看,内存安全问题在Windows的安全性和稳定性问题中占很大比重,转向Rust是一个可能的解决方案。而且从积极的意义上来说,随着内存安全编程的重要性愈发受到行业认可,业界对于Rust的探索会愈发深入,微软则会继续在保护原生代码的前提下探究在Rust中重构Windows的可能,进而为Rust的工程化实践添砖加瓦。         6fe28资讯网——每日最新资讯28at.com

参考链接:

https://devclass.com/2023/09/25/microsoft-posts-early-stages-code-for-developing-windows-drivers-in-rust/6fe28资讯网——每日最新资讯28at.com

https://www.51cto.com/article/754545.html6fe28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-11867-0.html停止用C++启动任何新项目!微软力推Rust重构Windows!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 超越像素:Java中的高级图像处理方法

下一篇: 十个前端工程师不能错过的VS Code插件

标签:
  • 热门焦点
  • Raft算法:保障分布式系统共识的稳健之道

    Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • Rust中的高吞吐量流处理

    Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 为什么你不应该使用Div作为可点击元素

    为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 共享单车的故事讲到哪了?

    共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
Top