写点什么

微软正用 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:534684
用户头像
小智 让所有人认同的文字称不上表达

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

关注

评论 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
回复
没有更多了
发现更多内容

交易所市值管理机器人开发

Geek_23f0c3

去中心化交易所系统开发 市值管理机器人系统开发 做市机器人 去中心化市值管理机器人

堡垒机、防火墙以及跳板机分别是什么?

行云管家

云计算 运维 防火墙 堡垒机 跳板机

博文干货|5张图带你快速入门 Pulsar 的存储引擎 BookKeeper

Apache Pulsar

pulsar bookKeeper

sql task01 环境搭建

橙橙橙橙汁丶

如何在FL Studio中对整首歌曲音量进行调整

懒得勤快

区块链交易所搭建,币币交易系统搭建

技术加持、服务先行:北鲲云超算平台助力生命科学领域研究与发展

北鲲云

fil有投资价值吗?投资fil的方式有哪些?

区块链 分布式存储 IPFS fil FIL投资

合约量化交易系统开发技术

薇電13242772558

区块链

Vue进阶(三十八):v-for 中 :key 到底有什么用?

No Silver Bullet

Vue key 8月日更

稳了!工业质检蝉联第一

百度大脑

智能制造

超级人脉:让巴菲特老爷子告诉你圈子的重要性

非著名程序员

人脉 认知提升 思维 8月日更

借助云网融合优势,某省运营商打造下一个十年增长引擎

BoCloud博云

云管理

2021,编程语言如何选择?

程序员鱼皮

Java c++ Python JavaScript Go 语言

AOC萌新探索:搭建和体验在线AOC环境

华为云开发者联盟

Python 网络 自动化运维 AOC 网络设备

Python代码阅读(第10篇):随机打乱列表元素

Felix

Python 编程 Code Programing 阅读代码

一个小而美的 Swift 框架:Then

fuyoufang

swift iOS Developer 8月日更

你的日志打印对了么?

神策技术社区

数据分析 日志

复旦大学附属中山医院钱琨:健康医疗大数据时代下的智慧医院建设

星环科技

大数据 医疗 数据能力

《程序员修炼之道 - 从小工到专家》吐血解读

博文视点Broadview

面向对象的原则是普遍适用么?

escray

学习 极客时间 如何落地业务建模 8月日更

深耕基础软件,华为开源加速“新全球化

科技热闻

史上最全Linux可观测最佳实践分享!建议先收藏~

观测云

云计算 Linux

架构实战营 毕业总结

Dylan

架构实战营

爬虫遇到反爬机制怎么办? 看看我是如何解决的!

Python研究者

8月日更

数据同步系统重构实践

Qunar技术沙龙

数据库 ES canal 数据同步 Kafk

Hadoop安装与常用操作命令

Mike

MySQL 系列教程之(五)DDL 操作:建库建表

若尘

MySQL 数据库 8月日更

MySQL安全加固方法分享

Simon

MySQL 数据库 数据安全

走!跟着浪潮云洲去挖矿

云计算

摊牌了!哈利波特的“隐形斗篷”就是我想要的

百度开发者中心

人工智能 AI 最佳实践 行业资讯

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