您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Rust

软正在用 Rust 编程语言重写核心 Windows 库

时间:2023-05-04 12:11:58  来源:51CTO  作者:

微软正在用 Rust 编程语言重写核心 windows 库。

在以色列特拉维夫举办的 BlueHat IL 2023 上,Windows 操作系统安全总监 David “dwizzle” Weston 宣布 Rust 进入操作系统内核。

“实际上,在接下来的几周或几个月内,你将在内核中使用 Rust 启动 Windows,这真的很酷,”他说。“这里的基本目标是将其中一些内部 C++ 数据类型转换为它们的 Rust 等价物。”

1、微软:有“分寸”地拥抱 Rust

微软的这一举措并非一时兴起,早在几年前,微软就表现出了拥抱 Rust 的意向。

在微软看来,这门语言是一种在代码落入用户手中之前捕获和消除内存安全漏洞的方法。简单来说,Rust 专注于内存安全和类似的保护,这减少了结果代码中不良错误的数量。

Windows 的 Rust 改造始于 2020 年,由 DWriteCore 开始。DWriteCore 是 Windows 的 DWrite 引擎的 Windows App SDK 实现,用于文本分析、布局和渲染。DWriteCore 现在由大约 152000 行 Rust 代码和大约 96000 行 C++ 代码组成。

随着行业对内存安全编程的支持越来越多,微软对 Rust 的探索变得更加热情。

Microsoft Windows 图形设备接口 (Win32 GDI) 正在移植到 Rust 上,到目前为止已包含 36000 行 Rust 代码。最新版本的 Windows 11 使用 Rust 版本启动,该版本通过了所有 GDI 测试,但 Rust 端口目前在功能标志后面被禁用。另据 Weston 透露,Windows 内核中现在有一个 SysCall,是采用 Rust 实现的。

当然,微软对 Rust 的这种拥抱还是有限度的。正如 Weston 所说,“在 Rust 中重写 Windows 可能不会很快发生。虽然我们喜欢 Rust,但我们需要一种策略,包括保护更多的原生代码。”

2、社区:来自巨头的支持不可或缺

尽管来自微软的支持是有限的,但其代码贡献也将使 Rust 更有活力,这对于整个开源社区的发展是积极向上的。

Python/ target=_blank class=infotextkey>Python Web 框架 Flask 的作者 Armin Ronacher 在一封电子邮件中表示,微软对 Rust 的承诺对这门语言来说非常棒。

“特别是,因为我希望微软重用现有的编译器,我希望这样做将带来更好的 PDB(程序数据库)支持,”他说。“今天在 Windows 上,开发人员工具支持落后于基于 DWARF 的‘使用属性记录格式进行调试’平台支持。”

Pydantic 的创始人 Samuel Colvin 则在接受外媒采访时表示:“微软的这种前瞻性思维给我留下了深刻的印象……如果你现在正在构建一个性能关键或低级别的应用程序,那么 Rust 在这一点上是不费吹灰之力的。”

同时,他认为,找到优秀的 Rust 工程师比找到优秀的 C/C++ 工程师更容易。虽然拥有丰富 Rust 经验的人较少,但有很多工程师有兴趣尝试学习这门语言。而且编写安全代码的难度很大,在 Rust 中要容易一个数量级。

“对于我们这些依赖 Rust 的人来说,微软正在使用它,并希望能够支持它,这真的很令人兴奋。”

3、名声渐起但纷争不断

近年来,Rust 舆论声量日益渐涨,在火了的同时发展也渐趋稳定。

在 Tiobe 发布的四月编程语言排行榜中,Rust 进入了前 20 名,尽管差不多是守门员的位置(位列 19),但也可以窥见其发展态势。

图源:TIOBE Index - TIOBE

或许可以归因于之前 linux 内核 6.1 版正式采用了 Rust,为使用 Rust 编写驱动程序扫清了一部分障碍。不过日前 Rust 基金会关于商标政策的迷之操作一度引发社区争议,“平稳发展中又暗流涌动”或许可以概括 Rust 的现状。

而且随着 Rust 逐渐冒头,C++ 与 Rust 之间也是硝烟弥漫。

去年微软 Azure 的首席技术官 Mark Russinovich 公开表示,开发人员应该避免在新项目中使用 C 或 C++,而是使用 Rust,因为它具有内存安全优势,甚至敦促业界宣布弃用这些语言。

随后 C++ 之父 Bjarne Stroustrup 在接受采访时隔空回怼:“新语言通常需要多年时间和重大努力才能在其广泛的应用领域与成熟语言相匹配。爱好者很少看到这一点,并且他们的评论往往是片面的。”

值得一提的是,C++ 在年初时被 Tiobe 评为 2022 年度最佳编程语言。当时 Tiobe 首席执行官 Paul Jensen 如此评价:“C++ 流行的原因是它作为一种高级面向对象语言的出色性能。因此,可以用 C++ 开发快速而庞大的软件系统(超过数百万行代码),而不大会出现‘维护噩梦’。”

虽然双方各执一词,但就现状来看,Rust 还无法撼动 C++ 的地位。相较 C++ 的历史沉淀,Rust 的流行明显还需时日。而且 Rust 陡峭的学习曲线也限制了其快速的规模化普及。曾有开发者感慨:“试图用 Rust 重写公司核心组件,学习曲线是真的陡,JAVA 用了一周上手,Rust 用了一个月才玩明白。”

4、从小众走向大众尚需时日

除了新手不友好外,关于 Rust 在长时间内“叫好不叫座”的原因,近日,前 Deepin CTO 王勇也在推特上分享了自己的观点:Rust 语言很有力量,但他对这个语言并不感冒。原因如下:

1、世界上有很多业务性的逻辑是需要创造力和编程心流体验的,而 Rust 编译器总是打断你方向性的思考, 强制让你关注设计阶段不重要的细节,丧失了很多编程乐趣。

图源:推特

2、Rust 社区的人似乎不懂得市场经济和成本概念,一个好的软件不仅仅只是内存安全和绝对性能,代码可读性,场景适合性,认知深刻和持续维护的软件对用户才有价值,重写完一个软件,证明 Rust 比别的语言快和自己厉害,马上就弃坑的软件没有价值。

3、Rust 社区推崇内存的细腻控制,有时候就和 C++ 的开发人员一样讨厌,把指针或者生命周期控制能力当作比较的炫耀资本,Rust 更像是一种证明自己比别人厉害的工具。我不是说 Rust 不好,而是不喜欢这种认为 Rust 就是天下第一的思想,什么都要用 Rust 重写的想法。

4、Rust 的强制内存管理,在编写复杂逻辑的时候,编译器打断太生硬了,导致人无法安静的思考最重要的架构设计。Rust 对于底层库或者实时性这些不需要 GC 或者性能苛刻的场景很适合,为了内存安全可以忍受编译器严格。但是现实大部分场景不是都是内存安全优先的,而是创造力和逻辑清晰优先的。

最后王勇强调,无论学习何种语言,掌握多少种语言,都是为了学习各种语言的设计思想和看问题角度,主要价值在于提升认知。而不是为了在编程语言之争中踩在制高点抒发优越感。“ 语言只是工具,我们不能拿着锤子到处去攻击别人炫耀自己,那样其实很傻。”



Tags:Rust   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10  Search: Rust  点击:(4)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  Search: Rust  点击:(20)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  Search: Rust  点击:(50)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  Search: Rust  点击:(89)  评论:(0)  加入收藏
在 Rust 编程中使用多线程
编程语言有一些不同的方法来实现线程,而且很多操作系统提供了创建新线程的 API。Rust 标准库使用 1:1 线程实现,这代表程序的每一个语言级线程使用一个系统线程。1. Rust线程...【详细内容】
2024-01-07  Search: Rust  点击:(78)  评论:(0)  加入收藏
你应该知晓的 Rust Web 框架
前言在之前的用 Rust 搭建 React Server Components 的 Web 服务器我们利用了Axum构建了RSC的服务器。也算是用Rust在构建Web服务上的小试牛刀。虽然说Axum在Rust Web应用中...【详细内容】
2023-12-07  Search: Rust  点击:(164)  评论:(0)  加入收藏
解密 Python 如何调用 Rust 编译生成的动态链接库
楔子Rust 让 Python 更加伟大,随着 Rust 的流行,反而让 Python 的生产力提高了不少。因为有越来越多的 Python 工具,都选择了 Rust 进行开发,并且性能也优于同类型的其它工具。...【详细内容】
2023-11-29  Search: Rust  点击:(189)  评论:(0)  加入收藏
一篇学会 Rust 内存布局
整型,浮点型,struct,vec!,enum 本文是对 Rust内存布局[1] 的学习与记录 struct A { a: i64, b: u64,}struct B { a: i32, b: u64,}struct C { a: i64, b:...【详细内容】
2023-11-28  Search: Rust  点击:(113)  评论:(0)  加入收藏
Rust 十月就业报告:备受大厂青睐
智能招聘平台 filtra 发布了编程语言 Rust 的 10 月就业报告,相比 9 月的462 条招聘信息,10 月略微下降到了 460 条,但雇主数量略有增长,整体而言,Rust 的就业形式处于比较平稳的...【详细内容】
2023-11-15  Search: Rust  点击:(203)  评论:(0)  加入收藏
Rust 变量,你学会了吗?
Rust 是一门强调安全、并发、高效的系统编程语言。无 GC 实现内存安全机制、无数据竞争的并发机制、无运行时开销的抽象机制,是 Rust 独特的优越特性。 它声称解决了传统 C...【详细内容】
2023-11-01  Search: Rust  点击:(242)  评论:(0)  加入收藏
▌简易百科推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10    IT之家  Tags:Rust   点击:(4)  评论:(0)  加入收藏
在Rust中使用Serde的详细指南
在处理HTTP请求时,我们总是需要在一种数据结构(可以是enum、struct等)和一种可以存储或传输并稍后重建的格式(例如JSON)之间来回转换。Serde是一个库(crate),用于高效、通用地...【详细内容】
2024-03-26  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(17)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  前端柒八九  微信公众号  Tags:Rust   点击:(20)  评论:(0)  加入收藏
Rust中的数据可视化指南
可视化是数据分析和解释的一个关键方面。虽然Rust主要以其性能和安全特性而闻名,但它也为数据可视化提供了强大的工具。在这个全面的指南中,我们将深入研究Rust中的数据可视化...【详细内容】
2024-03-07  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(31)  评论:(0)  加入收藏
如何在Rust中操作JSON,你学会了吗?
sonic-rs ​还具有一些额外的方法来进行惰性评估和提高速度。例如,如果我们想要一个 JSON​ 字符串文字,我们可以在反序列化时使用 LazyValue​ 类型将其转换为一个仍然带有斜...【详细内容】
2024-02-27  前端柒八九  微信公众号  Tags:Rust   点击:(47)  评论:(0)  加入收藏
记一次Rust内存泄漏排查之旅
在某次持续压测过程中,我们发现 GreptimeDB 的 Frontend 节点内存即使在请求量平稳的阶段也在持续上涨,直至被 OOM kill。我们判断 Frontend 应该是有内存泄漏了,于是开启了排...【详细内容】
2024-02-27  OSC开源社区    Tags:Rust   点击:(12)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  码农渔夫  微信公众号  Tags:Rust   点击:(50)  评论:(0)  加入收藏
异步Rust:构建实时消息代理服务器
在本文中,我们将深入研究使用Rust构建实时消息代理服务器,展示其强大的并发特性。我们将使用Warp作为web服务器,并使用Tokio来管理异步任务。此外,我们将创建一个WebSocket客户...【详细内容】
2024-02-01      Tags:Rust   点击:(58)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  二进制空间安全  微信公众号  Tags:Rust   点击:(89)  评论:(0)  加入收藏
什么是Rust语言 ,特点是什么,跟其它语言对比有什么优势
什么是RustRust是一种系统编程语言,旨在提供高性能和安全性。它是由Mozilla和其开发社区创建的开源语言,设计目标是在C++的应用场景中提供一种现代、可靠和高效的选择。Rust的...【详细内容】
2024-01-09    简易百科  Tags:Rust语言   点击:(206)  评论:(0)  加入收藏
站内最新
站内热门
站内头条