C++的替代:微软如何使用rust?

 更新时间:2020年09月03日 10:15:43   作者:读芯术  
这篇文章主要介绍了微软如何使用rust的,帮助大家了解c++和rust这两门编程语言的联系与区别,感兴趣的朋友可以了解下

微软拥有世界上最大的C/C++代码库之一。从Windows、Office到Azure云,微软的所有核心产品都在该代码库上运行。但因为C++不是内存安全的语言,代码库中自然频频出现内存漏洞,大量的时间被耗费在修补漏洞上。

微软自去年开始寻找用以替代的编程语言来解决内存安全问题,寻找终有所得——微软开始尝试使用Rust,并在一些情境下将其集成进代码库中。Rust是一种相对较新的编程语言,具有与C和C++相同的底层性能,并具备现代编程语言应有的功能集。

微软认为Rust颇具潜力,本文就将介绍微软将其用在产品中的方式。

用Rust重写Windows

微软虽然尚未使用Rust全面重写Windows,但正在致力于研究如何使Rust适应其生态系统。据微软估算,在推送给计算机的安全补丁中,有70%都是为了修补内存有关的漏洞,他们认为Rust可以在开发阶段捕获这些漏洞。因此,微软委托一些工程师用Rust重写Windows的部分组件,从而获取开发人员的一些意见。

虽然微软没有公开重写哪些组件,但一名工程师称,他正在针对性地改造部分“Windows的底层系统”,这体现出了微软对Rust的潜力颇具信心。微软不仅计划重写一些小的服务和Windows本地应用程序,还可能重写操作系统的核心组件。

工程师们称涉及Rust的工作“整体前景是乐观的”,但也明确指出Rust不具备C的一些重要功能,不过这些工程师们也认为有必要为Rust开发这些功能。

英特尔已经开始致力于让Rust实现与C相同的功能,微软也或将加入其中。由于Rust缺少C的一些功能,该团队发现Rust将最适用于新近开发的Windows组件。假如微软将部分代码库迁移到Rust,我也不会感到吃惊。

微软已经为Rust搭建了一个标准Windows库,它具备C++版本的所有功能;Linux也在考虑将一些内核迁移到Rust。这两大操作系统之间有可能展开竞争,看谁能最先将Rust代码投入生产。

将Rust整合进Azure服务

DeisLabs是Azure的孵化器项目之一,它致力于为Kubernetes构建工具。近来,它选取Rust来开发新产品Krustlet,允许开发者在Kubernetes中运行多个WebAssembly模块。

Kubernetes原本由Google开发,以Go语言写成。大多数工程师倾向于使用Go来为Kubernetes编写组件,DeisLabs选择Rust可谓惊人之举。

最终,这一决定似乎有所成效。虽然员工的确提到了由于Rust独特的所有权概念,转换为Rust的过程十分困难,但该团队仅用了一个月就回到了全速工作状态,他们发现需要为空值写的测试以及调试的问题都越来越少。

工程师们也对Rust的编译器印象深刻。他们称该编译器能够找到另一个项目中的安全漏洞,而Go的编译器则未能做到这一点。他们总结说,应该有更多的团队考虑在将来的工作中使用Rust,该语言可能比Go更适合Kubernetes的开发。

一种新的编程语言

不久之前,在Rust的启发下,微软开始着手调研创造自己的编程语言。该项目的负责人之一是C#的主要维护人员,因此这一编程语言似乎是另一种版本的Rust,但在语法上更类似C类编程语言。

这一语言被称为“Project Verona”,致力于在系统编程中解决内存漏洞。一些人推测ProjectVerona可能将在许多微软主要产品中投入使用,例如Windows、Xbox和Azure。

然而,微软最终仍没有实际应用ProjectVerona。微软的确声称该语言已经“完全内存安全”,但依旧选择使用Rust。Rust已经拥有了完善的社区,并且得到了Mozilla和英特尔等企业的支持。有了这些企业的合作,Rust将会更迅速地成长为更强大的语言。

凭借大型企业的支持和社区的不断发展,Rust的前途不可限量。在接下来的几个月中,即使微软计划以不同方式将Rust纳入企业中也不足为奇。Rust针对微控制器和物联网设备也进行了良好的优化,这些领域的企业有望将Rust投入使用。可以说,Rust的未来一片光明。

以上就是C++的替代:微软如何使用rust的详细内容,更多关于rust替代c++的资料请关注脚本之家其它相关文章!

相关文章

  • Rust文本处理快速入门

    Rust文本处理快速入门

    编程过程中有许多类型的数据要处理,其中文本处理必不可少,本文主要介绍了Rust文本处理快速入门 ,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 详解Rust中三种循环(loop,while,for)的使用

    详解Rust中三种循环(loop,while,for)的使用

    我们常常需要重复执行同一段代码,针对这种场景,Rust 提供了多种循环(loop)工具。一个循环会执行循环体中的代码直到结尾,并紧接着回到开头继续执行。而 Rust 提供了 3 种循环:loop、while 和 for,下面逐一讲解
    2022-09-09
  • Rust 语言的全链路追踪库 tracing使用方法

    Rust 语言的全链路追踪库 tracing使用方法

    这篇文章主要介绍了Rust 语言的全链路追踪库 tracing,接下来就以 tracing 为例,介绍一下trace 的核心概念以及使用方法,需要的朋友可以参考下
    2022-12-12
  • 探索Rust切片与Go有何区别

    探索Rust切片与Go有何区别

    这篇文章主要为大家介绍了Rust切片与Go的区别探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Rust指南枚举类与模式匹配详解

    Rust指南枚举类与模式匹配详解

    这篇文章主要介绍了Rust指南枚举类与模式匹配精讲,枚举允许我们列举所有可能的值来定义一个类型,枚举中的值也叫变体,今天通过一个例子给大家详细讲解,需要的朋友可以参考下
    2022-09-09
  • Rust中用enum实现多参数Hook机制完整代码

    Rust中用enum实现多参数Hook机制完整代码

    在 Rust 中,如果想为enum实现一个带多参数的 Hook 机制,可以结合模式匹配和枚举来处理,这种方式可以扩展到支持不同类型的输入参数和逻辑处理,下面通过示例代码介绍Rust中用enum实现多参数Hook机制,感兴趣的朋友一起看看吧
    2024-12-12
  • Rust中字符串类型&str和String的使用

    Rust中字符串类型&str和String的使用

    在Rust中,字符串是一种非常重要的数据类型,&str和String是Rust中两种主要的字符串类型,本文主要介绍了Rust中字符串类型&str和String的使用,感兴趣的可以了解一下
    2024-03-03
  • Rust中的Drop特性之解读自动化资源清理的魔法

    Rust中的Drop特性之解读自动化资源清理的魔法

    Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如Box、Rc和RefCell都依赖于Drop来管理资源,提供了灵活且安全的资源管理方案
    2025-02-02
  • Rust Aya 框架编写 eBPF 程序

    Rust Aya 框架编写 eBPF 程序

    这篇文章主要介绍了Rust Aya 框架编写 eBPF 程序方法的相关资料,需要的朋友可以参考下
    2022-11-11
  • Rust字符串类型全解析(最新推荐)

    Rust字符串类型全解析(最新推荐)

    Rust语言中,字符串类型众多,设计初衷是为了确保程序的安全、高效和灵活性,本文详细解释了Rust中不同的字符串类型,感兴趣的朋友跟随小编一起看看吧
    2024-09-09

最新评论