0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

微软开始尝试使用Rust代替C/C++,介绍这些运用Rust的产品

如意 来源:读芯术微信公众号 作者:读芯术微信公众号 2020-09-03 10:09 次阅读

微软拥有世界上最大的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的未来一片光明。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微软
    +关注

    关注

    4

    文章

    6627

    浏览量

    104436
  • C语言
    +关注

    关注

    180

    文章

    7614

    浏览量

    137647
  • Rust
    +关注

    关注

    1

    文章

    230

    浏览量

    6656
收藏 人收藏

    评论

    相关推荐

    JavaScript与Rust和WebAssembly集成

    偶然一次机会,接触了Rust的代码。当时想给团队小伙伴做演示,发现自己并不能在移动端按照文档生成演示demo。我就想,要是Rust代码能转化成JavaScript就好了。结果一搜,还真有。
    的头像 发表于 01-24 15:43 111次阅读
    JavaScript与<b class='flag-5'>Rust</b>和WebAssembly集成

    如何用Rust编写一个ChatGPT桌面应用(保姆级教程)

    用IDEA开发的java仔) 安装 Rust 语言工具链:首先,请确保你已安装了 Rust 编程语言工具链,包括 Rust 编译器 (rustc) 和包管理工具 (cargo)。可以通过访问
    的头像 发表于 09-25 11:19 412次阅读
    如何用<b class='flag-5'>Rust</b>编写一个ChatGPT桌面应用(保姆级教程)

    未来嵌入式系统的黄金搭档 MCX N947遇上Rust

      Rust 介绍 Rust 是一门注重安全的语言,相比于 C/C++/ASM 有着更高级的抽象能力、编译器带来的安全特性与广泛友好的社区支
    的头像 发表于 07-25 09:14 1406次阅读
    未来嵌入式系统的黄金搭档 MCX N947遇上<b class='flag-5'>Rust</b>

    Vector和HighTec推出基于Rust和AUTOSAR Classic实现安全应用的解决方案

    Vector和HighTec两家公司成功展示了Rust应用程序与基于C语言的AUTOSAR Classic基础软件的集成,这在行业内还属首次。这样一来,Rust及其优势可以被应用在有最高功能安全要求的汽车ECU中。
    的头像 发表于 07-17 14:42 852次阅读
    Vector和HighTec推出基于<b class='flag-5'>Rust</b>和AUTOSAR Classic实现安全应用的解决方案

    esp32s3开发时,每次改动,rust编译的时间都很长为什么?

    esp32s3 开发时,每次改动,rust编译时间太长
    发表于 06-05 06:36

    Linux 6.10集成RISC-V更新,支持Rust编程语言

    本次补丁升级中,Linux内核进一步扩展了对应于RISC-V架构的Rust编程语言支持。在此之前,Rust已可应用在x86_64、龙芯LoongArch以及ARM64等多种架构之上。
    的头像 发表于 05-23 17:16 1017次阅读

    在Aurix Tc375Lk上使用Rust编程语言可以吗?

    您好,如果我想在 Aurix Tc375Lk 上使用 Rust 编程语言,可以吗?如果是,链接 rust 编译器 ADS 和 freetoolchain 的步骤是什么?你有在 ADS 或 freetoolchian 中链接编译器的用户指南吗? 请详细说明谢谢
    发表于 05-17 13:42

    鸿蒙OpenHarmony开发板解析:【Rust模块配置规则和指导】

    C/C++代码和提升编译速度,使用了GN + Ninja的编译构建系统。GN的构建语言简洁易读,Ninja的汇编级编译规则直接高效。
    的头像 发表于 05-10 11:32 1383次阅读
    鸿蒙OpenHarmony开发板解析:【<b class='flag-5'>Rust</b>模块配置规则和指导】

    在嵌入式系统中集成Rust和Qt的实践

    Rust 拥有丰富的库生态系统,用于序列化和反序列化、异步操作、解析不安全输入、线程、静态分析等,而 Qt 是一个 C++ 工具包,支持跨各种平台的丰富的、基于 GUI 的应用程序,从 iOS 到嵌入式Linux。Qt 应用程序包括表示业务逻辑的
    发表于 05-03 10:26 1886次阅读
    在嵌入式系统中集成<b class='flag-5'>Rust</b>和Qt的实践

    Rust效率领先C++两倍,内存安全成国家安全议题

    这项发现由谷歌安卓平台工具及库的工程总监Lars Bergstrom在日前召开的Rust Nation英国峰会揭示。尽管此前业内对Rust的安全性和稳定性存在一定争议,特别是其‘unsafe’关键字的存在令人担忧。
    的头像 发表于 04-01 15:37 988次阅读

    使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误

    在前两篇博客中,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客中,我们将仔细研究以 C++ 中 for 循环为中心的特定规则。
    的头像 发表于 03-28 13:53 860次阅读
    使用 MISRA <b class='flag-5'>C++</b>:2023® 避免基于范围的 for 循环中的错误

    鸿蒙实战开发学习【FaultLoggerd组件】

    Faultloggerd部件是OpenHarmony中C/C++运行时崩溃临时日志的生成及管理模块。面向基于 Rust 开发的部件,Faultloggerd 提供了Rust Panic
    的头像 发表于 03-17 20:39 572次阅读
    鸿蒙实战开发学习【FaultLoggerd组件】

    鸿蒙实战开发:【FaultLoggerd组件】讲解

    Faultloggerd部件是OpenHarmony中C/C++运行时崩溃临时日志的生成及管理模块。面向基于 Rust 开发的部件,Faultloggerd 提供了Rust Panic
    的头像 发表于 03-12 16:22 1127次阅读
    鸿蒙实战开发:【FaultLoggerd组件】讲解

    [鸿蒙]OpenHarmony4.0的Rust开发

    中集成 Rust 代码,并最大程度发挥 Rust 和 OpenHarmony 中原有 C/C++ 代码的交互性,采用 GN 作为统一构建工具,即通过 GN 构建 Rus
    的头像 发表于 02-26 17:28 955次阅读
    [鸿蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>开发

    谷歌捐款100万美元给Rust基金会,以增强C++Rust的交互性

    如今,谷歌多项核心业务仍以 C++为主要编程语言,虽然无法直接使用Rust替代现有的C++程序,但谷歌依然选择支持Rust基金会的“Interop Initiative”计划,帮助那些
    的头像 发表于 02-19 15:41 699次阅读