【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

微软正用 Rust 重写 Windows 组件

  • 2019-11-13
  • 本文字数:1796 字

    阅读完需:约 6 分钟

微软正用Rust重写Windows组件

Rust是过去一年时间里,热度持续增加的一门新兴语言。2006 年,“职业编程语言工程师” Graydon Hoare 设计了这门语言,它的设计初衷是可以提供高的开发效率,代码容易维护,性能还能与 C/C++ 媲美,还得保证安全性的一门语言。


虽然历史发展的规律告诉我们,为了解决一门语言的问题而创造的新语言,最终也将带来新的问题。但就目前来看,Rust 上述的这些特性在其迅猛的发展势头中得到了体现。


今年 2 月初,微软一次演讲中提到,70%的安全漏洞都是内存安全问题。此后 7 月份,微软安全响应中心(MSRC)发文表示:微软需要更安全的系统编程语言。此后的系列文章中,微软对自己为什么认为 Rust 语言目前是业界的最佳选择做了阐述。而在近日,微软透露了使用 Rust 代替 C/C++ 编写 Windows 组件的实验感受,工程师们直言使用 Rust 语言的感受妙不可言。


我的任务是对 Windows 代码库的一个低级别系统组件进行实验性重写(目前不能透露是哪个组件),虽然这个项目还没有完成,但总的来说,在 Rust 方面的试验体验是非常好(generally positive)。新的组件或现有的具有干净接口的组件移植到 Rust 是很容易的。

爽翻了的开发体验

对于习惯于编写复杂系统的C++开发人员来说,使用 Rust 作为开发语言就像是呼吸一股清新的空气。Rust 编译器提供的内存和数据安全保证给了开发人员更大的信心,开发人员花在调试琐碎问题上的事件更少了。



Rust 的编译器的警告和错误消息编写得非常好,从而使 Rust 新手程序员可以快速识别并解决代码中的问题。VSCode已经具有有用的扩展(RLS),可提供了智能感知建议和语法高亮显示。另外,Cargo 构建工具在测试、文档生成和自动格式化方面提供了非常有用的功能。

学习曲线

Rust 具有大量的在线文档和非常有用的编译器错误消息,对于常年使用 C++的开发人员来说,Rust 的学习曲线非常简单。此外,Rust 还有专门针对 C/ C++系统工程师的教程。Facebook 的 Jeremy Fitzhardinge 在 RustConf 2019 年的演讲中指出,他发现有经验的 C/ C++开发人员在大约四周内就可以上手使用 Rust,熟练使用只需要八周。


微软的开发者也表示,自己参加了一年一度的微软内部“One Week”黑客马拉松,同行的有一个经验丰富的 Rust 开发者和一个完全的 Rust 新手开发者。三天之内,Rust 的新手开发人员已经写了超过 1000 行惯用的 Rust 代码。



除了出色的文档外,还有诸如 Clippy 之类的有用工具,使经验丰富的 C++开发人员可以直接使用 Rust 进行编码,而无需那些具有 Rust 经验的人直接的帮助。


随着微软内部扩大对 Rust 的使用,工程师们相信为包含 Rust 代码的任何 PR 创建 RustReviewers 组都是明智的。无论特定的问题领域是什么,都将有助于不同团队的新手从 Rust 专家那里获得反馈。


通常,新组件或具有干净接口的现有组件最容易移植到 Rust。微软工程师们在重写的组件则充满了挑战,因为从一层到另一层泄漏了许多抽象,需要一些初步的重构才能取得进展。

安全

为了从 Rust 获得所需的安全保证,必须围绕使用 unsafe 关键字放置严格的准则。对 FFI 函数的任何调用都应在包装函数中进行,该包装函数围绕它提供安全的抽象。同样,必须使用 unsafe 关键字的任何其他代码都应具有提供安全抽象的包装函数或结构。



实际上,除了 FFI 边界之外,只有非常基本的协议处理才需要 unsafe 关键词。在这种情况下,编写一些通用的 unsafe 代码很容易,这些代码可以进行全面的单元测试,并可以在各种情况下使用,从而使代码比 C ++更加安全。写惯了 Rust 代码后,你会发现写 C ++更加令人崩溃,因为你不能依靠编译器来确保内存安全。


除了确保安全性之外,Rust 拥有一套内部的编码标准帮助新开发人员充分利用语言。错误处理、日志记录、锁定和其他特定于语言的问题的最佳实践将更快地获得更高质量的代码。

期望的功能和 Rust 社区

微软工程师在博客中表示,考虑到 Rust 相对较年轻,它仍然缺少一些非常适合微软开发的语言特性。安全转换、对 C 的安全支持、准确的分配以及对大规模单元测试的支持,是微软庞大的代码测试基础设施所需要的。


Rust 在单片机和诸如内核和虚拟机监控程序等低级系统上有着光明的前景,在这些系统中,一旦成熟,该语言的安全性第一特性将使其具有相当大的吸引力。而目前,在单片机市场上,主要是英特尔在支持和推动,它正在努力使 Rust 达到与 C 相同的功能。


随着 Facebook 使用 Rust 构建 Libra,微软用 Rust 重写 Windows 组件,Rust 的未来,似乎前途光明。


2019-11-13 13:534538
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 376.2 次阅读, 收获喜欢 1972 次。

关注

评论 2 条评论

发布
用户头像
从18年开始Rust团队也加大了语言推广的力度,毕竟一门语言要有人用才有价值,Rust团队推出的《The Rust Programming Language》是不错的了解上手Rust的书籍,前几天我也刚好开始在虎牙直播打卡读这本书,欢迎大家一起加入,一起推动技术普及https://v.huya.com/play/233318972.html
2019-11-14 13:25
回复
用户头像
无论如何Rust都是值得学习的,它的设计很新颖,大胆的尝试了一些新东西,我们太需要点新的尝试了
2019-11-14 12:25
回复
没有更多了
发现更多内容

Markdown文本编辑器Typora Mac使用教程

南屿

Typora Markdown 编辑器

一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

TDengine

时序数据库 #TDengine

数字货币swap交易所逻辑系统开发分析方案

西安链酷科技

交易所开发 DAPP智能合约交易系统开发

优化Java代码效率和算法设计,提升性能

互联网工科生

Java 并发编程 性能测试 数据结构和算法

实时云渲染,元宇宙核心支持技术之一

3DCAT实时渲染

元宇宙 实时云渲染

什么是高匿代理,与普匿和透明代理的区别是什么?它有什么作用?

巨量HTTP

代理IP http代理

专业开发区块链DAPP去中心化系统模式开发系统定制

V\TG【ch3nguang】

2023年8款最佳云数据库综合比较

Geek_cbbf33

区块链链游合约系统开发项目模式技术方案

西安链酷科技

DAPP系统开发 区块链开发DAPP开发

基于异常上线场景的实时拦截与问题分发策略

百度Geek说

大数据 实时计算 企业号9月PK榜 反混淆

3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT

华为云开发者联盟

鸿蒙 物联网 华为云 华为云开发者联盟 企业号9月PK榜

公司需要同步大量数据,如何缓解传输压力提高同步效率?

镭速

数据同步 数据同步工具 数据实时同步

PAI BladeLLM推理引擎: 超长上下文、更高性能

阿里云大数据AI技术

阿里云

OpenHarmony AI框架开发指导

OpenHarmony开发者

OpenHarmony

微服务是个坏主意吗?

这我可不懂

微服务 单体

哈希竞猜游戏开发源码部署方案(成熟技术)

西安链酷科技

哈希竞猜 区块链开发链游开发

区块链去中化钱包开发方案,交易所钱包和元宇宙软件开发

V\TG【ch3nguang】

Tugraph Analytics图计算快速上手之紧密中心度算法

TuGraphAnalytics

cc 图计算 紧密中心度

面对IT部门和业务部门跨网文件交换的不同需求,怎样才能兼顾呢?

镭速

跨网文件交换

《可观测性成熟度模型白皮书》正式发布,龙蜥致力打造更好用户体验

OpenAnolis小助手

开源 云原生 可观测性 白皮书 龙蜥社区

搭建期货合约币币交易所,挖矿APP开发

V\TG【ch3nguang】

详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法

南屿

IntelliJ IDEA IntelliJ IDEA 2023破解 Serializable

区块链数字货币交易所开发方案,去中化交易平台搭建

V\TG【ch3nguang】

HarmonyOS Codelab样例—弹窗基本使用

HarmonyOS开发者

HarmonyOS

OpenHarmony Meetup常州站招募令

OpenHarmony开发者

OpenHarmony

CodeArts Check代码检查服务用户声音反馈集锦(3)

华为云PaaS服务小智

云计算 代码质量 华为云 代码检查

强大但并非万能,智能客服之挑战

百度开发者中心

智能客服 #人工智能 千帆大模型平台

High-performance 4-core processor-IPQ9554-IPQ8072-more advanced Wi-Fi 6E technology

wifi6-yiyi

IPQ8072 ipq9554 4-core

Python程序设计实例 | 学生管理数据库系统的开发

TiAmo

Python sqlite 数据库

程序编译运行时,提示找不到某些组件

矩视智能

机器视觉

浅谈USDToch(优多趣)模式系统开发源码搭建(成熟技术)

西安链酷科技

DAPP系统开发

微软正用Rust重写Windows组件_编程语言_小智_InfoQ精选文章