继C / C ++之后,微软如何全面采用 Rust 的?
作者 | Tino Caer
以下为译文:
Microsoft拥有世界上最大的C / C ++代码库之一。从Windows、Office到Azure云,微软的所有核心产品都在它上面运行。由于C ++不是一种内存安全的语言,因此在其代码库中会弹出很多内存错误,并且需要花费大量时间来修复它们。
去年,Microsoft开始研究可以帮助解决其内存安全问题的替代编程语言。作为这些努力的结果,Microsoft已开始尝试在某些情况下将Rust集成到其代码库中。
Rust是一种相对较新的编程语言,它具有与C和C ++相同的底层性能,并具有现代编程语言所期望的功能集。微软认为Rust具有潜力,下述就是他们将Rust集成到产品中的方式。
01
在Rust中重写Windows
其实,他们还没有在Rust中重写所有Windows;但是,他们感兴趣的是Rust将如何适应其生态系统。微软认为,70%的安全补丁都是为了修复内存相关的漏洞,并相信Rust在开发阶段就能捕捉到这些漏洞。因此,他们让一些工程师在Rust中重写Windows的一些组件,以获得一些开发人员的意见。
不幸的是,微软一直对要重写的组件名称保密,但是,一位工程师描述说他正在开发“ 低级的Windows系统”。这显示了微软对Rust潜力的信任。他们不只是想重写一些小型服务或本地Windows应用程序,还可能重写操作系统的核心组件。
工程师将他们在Rust上的工作描述为“总体上是积极的”,但确实注意到Rust中缺少C语言中可用的一些重要功能。然而,工程师们认为帮助开发Rust的这些特性是值得的。英特尔已经开始着手让Rust的功能与C语言不相上下,微软可以加入这项工作。
由于Rust缺少C语言的某些功能,因此该团队发现Rust最适合新的或最近开发的Windows组件。如果Microsoft完全致力于将其部分代码库迁移到Rust,也就不足为奇了。他们已经在为Rust构建标准的Windows库,该库将具有C ++版本的所有功能。Linux也正在考虑将其一些内核迁移到Rust,因此我对两个操作系统之间可能展开的激烈竞争不会感到震惊,究竟哪种操作系统可以将Rust代码首先投入生产,让我们拭目以待吧。
02
将Rust整合到Azure服务中
从Azure孵化器诞生的DeisLabs是一个专注于为Kubernetes提供构建工具的初创公司,他们最近选择了Rust来构建其新产品Krustlet,这是一项允许开发者在Kubernetes中运行多个WebAssembly模块的服务。Kubernetes由Google开发并用Go编写。因此,大多数工程师在编写其Kubernetes组件时往往会倾向于使用Go,因此DeisLabs选择Rust是相当令人惊讶的。
最终,这个决定似乎有了回报。尽管员工确实注意到向Rust过渡很困难-注意到Rust的所有权理念的独特性-但团队仅用了一个月的时间就恢复了完整的工作效率。他们发现为空值编写的测试更少,调试问题也更少。工程师们也对Rust的编译器印象深刻,他们声称该编译器可以抓住他们另一个项目中Go编译器没有发现的安全漏洞。他们的结论是,未来应该有更多的团队考虑使用Rust,它比Go更适合开发Kubernetes。
03
一种新的编程语言
不久前,微软曾研究过如何在Rust的启发下创建自己的编程语言。该项目的负责人之一是C#的主要维护者,因此该语言似乎是Rust的一种版本,其语法与编程语言的C系列更加相似。这种语言称为Project Verona,旨在解决系统编程中与内存相关的错误。一些人猜测,Project Verona最终可能会进入微软的很多主要产品中,比如Windows、Xbox和Azure。
目前微软仍然没有任何关于Project Verona的用例。尽管他们声称该语言已经达到“完全内存安全”。但是,Microsoft仍然赞成使用Rust。它已经有了社区,并得到了Mozilla和Intel等公司的支持。与这些公司合作将使Rust变得更强大更快。
Rust的未来非常光明。在大公司的支持下,它的社区在不断壮大,它的发展前景十分广阔。在接下来的几个月中,如果听到微软计划以不同方式将Rust纳入其公司的规划中也就不足为奇了。Rust还针对微控制器和物联网设备进行了优化,我们期待听到Rust在这些领域中的用例。
原文:https://medium.com/the-innovation/how-microsoft-is-adopting-rust-e0f8816566ba
本文为 CSDN 翻译,转载请注明来源出处。
Today's Interaction
今日互动
Rust是一种相对较新的编程语言
你有接触过吗?
在留言区参与互动,我们将选1名读者获得赠书1本,截止时间8月15日。