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++的资料请关注我们其它相关文章!

(0)

相关推荐

  • 在PHP程序中使用Rust扩展的方法

     C或PHP中的Rust 我的基本出发点就是写一些可以编译的Rust代码到一个库里面,并写为它一些C的头文件,在C中为被调用的PHP做一个拓展.虽然并不是很简单,但是很有趣. Rust FFI(foreign function interface) 我所做的第一件事情就是摆弄Rust与C连接的Rust的外部函数接口.我曾用简单的方法(hello_from_rust)写过一个灵活的库,伴有单一的声明(a pointer to a C char, otherwise known as a strin

  • 如何使用VSCode配置Rust开发环境(Rust新手教程)

    VSCode配置Rust开发环境 在商店中输入rls,选择rust,点击Quick start中的下载链接.这个Rust插件你也要记得下. 跳转后来到下载界面,点击下载. 运行下载好的exe文件,命令行输入1按下回车即可. 安装完毕后在命令行输入rustc --version,如果能输出版本号则表示安装成功. 选择一个文件夹来存放我们的hello world程序(好吧,简直是一句废话...) 记得把Formatter设成rust的. 在资源管理器那一栏,右键创建文件Cargo.toml.我们简单

  • IntelliJ安装并使用Rust IDE插件

    Rust 是一个由Mozilla主导开发的通用编译型编译语言.它的设计准则为"安全,并发,实用",支持函数式,并发式,过程式以及面向对象的编程风格. Rust插件的主要特性如下: 导航特性:Go to Class.Go to Symbol.Go to Super Module.Structure.Go to Definition. 编辑器特性:代码自动完成.格式化(计划支持rustfmt).合并行.智能按键(如自动插入匹配的符号).自动填充后缀.基本的Intention和重构(如引入变

  • Rust 能够取代 C 语言吗

    Rust 是 Mozilla 基金会的一个雄心勃勃的项目,号称是 C 语言和 C++ 的继任者.一直以来,C/C++ 中的一些基本问题都没能得到解决,比如分段错误.手动内存管理.内存泄漏风险和不可预测的编译器行为.Rust 的诞生就是为了解决这些问题,并提高安全性和性能. Evrone(一家软件公司)在很多项目中使用了 Rust,我们的工程师们这方面在积累了丰富的经验.在这篇文章中,我们将分享 Rust 的一些主要特性. 主要特性 强静态类型:无垃圾回收以及通过指针手动控制数据存储位置的能力:强

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

    微软拥有世界上最大的C/C++代码库之一.从Windows.Office到Azure云,微软的所有核心产品都在该代码库上运行.但因为C++不是内存安全的语言,代码库中自然频频出现内存漏洞,大量的时间被耗费在修补漏洞上. 微软自去年开始寻找用以替代的编程语言来解决内存安全问题,寻找终有所得--微软开始尝试使用Rust,并在一些情境下将其集成进代码库中.Rust是一种相对较新的编程语言,具有与C和C++相同的底层性能,并具备现代编程语言应有的功能集. 微软认为Rust颇具潜力,本文就将介绍微软将其用

  • 基于 Ubuntu 的发行版上安装微软 TrueType 字体的教程

    如果你在 Linux 上用 LibreOffice 打开一些微软文档,你会发现字体看起来有一点不同.你也将注意到有些常用字体找不到,如 Times New Roman.Arial等等. 不用担心.我将向你展示如何在 Ubuntu 上和其它基于 Ubuntu 的 Linux 发行版上安装这些字体.但是在此之前,让我告诉你为什么这些字体没有被默认安装. 为什么微软字体不被默认安装在 Linux 中? Times New Roman.Arial 等字体都是微软的,并且这些字体不是开源的.很多 Linu

  • Vue替代marquee标签超出宽度文字横向滚动效果

    一.npm 安装 如果你想安装插件(自己写的) 安装 # install dependencies npm i marquee-components 使用 在main.js引入 import marquee from 'marquee-components' Vue.use(marquee ); 在页面使用 <template> <div id="app"> <marquee :val="msg"></marquee>

  • Rust 搭建一个小程序运行环境的方法详解

    目录 从零到一:构建一个能运行小程序的App FinClip 安全沙箱的初始化 获得 SDK Key 以及 SDK Secret 的两种方式 方式一:采用 FinClip.com 托管服务 方式二:自行部署 FinClip 社区版 FinClip SDK 在 App 中的初始化 Rust 开发环境的准备 Rust 代码编译成 iOS 静态库的验证 搭建一个FinClip社区版docker运行环境,安装设置Rust开发编译iOS代码的环境,设置xcode的项目配合,集成FinClip SDK,准备

  • .NET使用结构体替代类提升性能优化的技巧

    目录 前言 现实的案例 内存占用 计算速度 总结 附录 前言 我们知道在C#和Java明显的一个区别就是C#可以自定义值类型,也就是今天的主角struct,我们有了更加方便的class为什么微软还加入了struct呢?这其实就是今天要谈到的一个优化性能的Tips使用结构体替代类.那么使用结构体替代类有什么好处呢?在什么样的场景需要使用结构体来替代类呢?今天的文章为大家一一解答.注意:本文全部都以x64位平台为例 现实的案例 举一个现实系统的例子,大家都知道机票购票的流程,开始选择起抵城市和机场(

  • Rust use关键字妙用及模块内容拆分方法

    目录 前言 1.rust 中的use关键字 1.1.将模块标识符引入当前作用域 1.2.use特点与习惯用法 1.3.使用pub use 重新导出名称 1.4.使用外部包(package)以及标准库 1.5.使用嵌套路径清理大量 use 语句 1.6.通配符 * 2.模块内容拆分 前言 书接上文,本篇补充rust 组织管理中模块的细节知识,比如模块拆分.此外介绍use关键字的习惯用法,快速引用自定义模块内容或标准库,以此优化代码书写. 1.rust 中的use关键字 如果我说use与C/C++中

  • Rust指南之泛型与特性详解

    目录 前言 1.泛型 1.1.在函数中定义泛型 1.2.结构体中的泛型 1.3.枚举类中的泛型 1.4.方法中的泛型 2.特性 2.1.默认特性 2.2.特性做参数 2.3.特性做返回值 前言 在上篇Rust 文章中涉及到了泛型的知识,那么今天就来详细介绍一下Rust 中的泛型与特性.泛型是一个编程语言不可或缺的机制,例如在C++ 语言中用模板来实现泛型.泛型机制是编程语言用于表达类型抽象的机制,一般用于功能确定.数据类型待定的类,如链表.映射表等. 1.泛型 泛型是具体类型或其他属性的抽象代替

  • Rust开发WebAssembly在Html和Vue中的应用小结(推荐)

    目录 我最大的感受 Rust在web上的应用 本文主题 应用工具:HBuilder.CLion 1.创建一个wasm 2.在Html中的应用 4.最近遇到的问题 最初是由Mozilla研究院的Graydon Hoare设计创造,然后在Dave Herman, Brendan Eich以及很多其他人的贡献下逐步完善的.Rust的设计者们通过在研发Servo网站浏览器布局引擎过程中积累的经验优化了Rust语言和Rust编译器. 我最大的感受 开始我是抵触它的,原因很简单,它太难学了!!!好害怕语法上

  • 为什么要使用 Rust 语言、Rust 语言有什么优势

    Rust 是一种采用过去的知识解决将来的问题的技术.” ——Graydon Hoare Rust 是一种快速.高并发.安全且具有授权性的编程语言,最初由 Graydon Hoare 于2006 年创造和发布.现在它是一种开源语言,主要由 Mozilla 团队和许多开源社区成员共同维护和开发. 虽然 Rust 是一种通用的多范式语言,但它的目标是 C 和 C++占主导地位的系统编程领域.这意味着你可以使用 Rust 编写操作系统.游戏引擎和许多性能关键型应用程序.同时,它还具有足够的表现力,你可以

随机推荐