澳门新葡萄京所有网站 1

此前,微软表示正探索将 Rust 作为 C 和 C++
的安全替代方案,并且也对外展示了使用 Rust 重写 Windows
组件的体验,根据微软的说法,Rust 是一种从根本上考虑安全性的编程语言,他们将尝试使用
Rust 重写各种产品,因为在过去的十年里,微软 70%
以上的安全补丁都提供了与内存相关的错误,而
Rust 正是解决这个问题的“良药”。

7 月份,我们报道过“微软正探索将 Rust 作为 C 和 C++
的安全替代方案”,根据微软的说法,Rust 是一种从根本上考虑安全性的编程语言,他们将尝试使用
Rust 重写各种产品,因为在过去的十年里,该公司 70%
以上的安全补丁都提供了与内存相关的错误,而
Rust 正是解决这个问题的“良药”。

而根据 ZDNet
的报导,近日在一次演讲中,谈到微软为解决相应内存问题所做的工作,微软研究人员 Matthew
Parkinson 提到了微软正在开发的基于 Rust 的新编程语言 Verona

近日,微软透露了使用 Rust 代替 C/C++ 编写
Windows 组件的实验感受。虽然它并没有具体说明哪些产品将用
Rust 重写,但微软表示将随时向用户报告实验进展情况。

澳门新葡萄京所有网站 2

微软表示,目前的实验工作情况良好,工程师们描述在使用 Rust 上是“妙不可言”的。尽管有一些功能并没有完成,但会推动项目继续向前发展。

演讲中,Matthew 先是分享了微软在
MemGC(Memory Garbage Collector)上所做的工作,MemGC 是指 IE 和  Edge
浏览器上的内存垃圾回收器,它解决了标准浏览器一个特性——文档对象模型(DOM)中的漏洞,DOM
以树结构表述了 HTML 文档内容。 

微软 Hyper-V 团队软件工程师 Adam
Burch 在博文中说:

之后他由此牵出另一个问题:如何构建最安全的产品?不仅仅丢弃已有的东西,而要考虑可以在更加安全的系统中构建一些什么。他介绍了微软正在使用 Rust
重写某些组件,并提出:“如果我们想要隔离,并精简遗留代码,以使攻击者的利用代码无法逃逸出来,那么如何设计语言呢?” 
  

我的任务是对 Windows
代码库的一个低级别系统组件进行实验性重写(目前不能透露是哪个组件),虽然这个项目还没有完成,但总的来说,在
Rust 方面的试验体验是非常好(generally
positive)。新的组件或现有的具有干净接口的组件移植到 Rust 是很容易的。

Matthew 提出了微软正在开发的基于
Rust 的新编程语言 Verona,他表示这是首次讨论该项目,Verona
是用于微软“安全基础设施编程(safe infrastructure
programming)”的一种新语言。

虽然,试验
Rust 的过程进展并不顺利,但话说回来如果预想是顺利的,那也显得不现实。Burch 指出安全转换、对
C
的安全支持、准确的分配以及对大规模单元测试的支持,是微软庞大的代码测试基础设施所需要的。Burch 认为,微软将通过努力塑造语言的未来,以提高其在这些情况下的有用性。

Matthew 介绍,Verona 由 C# 项目经理
Mads Torgensen 与 Microsoft Research Cambridge 研究软件工程师 Juliana
Franco 维护。 

Burch 补充说道,Rust 在单片机和诸如内核和虚拟机监控程序等低级系统上有着光明的前景,在这些系统中,一旦成熟,该语言的安全性第一特性将使其具有相当大的吸引力。而目前,在单片机市场上,主要是英特尔在支持和推动,它正在努力使
Rust 达到与 C 相同的功能。

微软面临的挑战是应对宽广的应用领域,范围从
C# 桌面应用到 C 或 C# Exchange、ASP.NET、Azure
与设备驱动程序,再到内存管理和启动加载器等底层 Windows 组件,以及
Windows 内核硬件抽象层(HAL,hardware abstraction
layer)。 

微软如果想使用
Rust 重写一些 Windows 组件,成为第一个这样做的操作系统制作商的话,那么应该要加快速度了,因为
Linux 项目也在考虑在一些内核驱动程序中使用 Rust。

“执行内存管理确实很困难,如果有任意并发突变,则临时内存安全性将非常困难”,Matthew
介绍了 Verona 的设计思路:“Verona 的所有权模型是基于对象组的,而不是像
Rust 那样基于单个对象的所有权模型。在 C++
中,可以获得指针,并且它是基于对象的。但这与我关于数据和语法的思考不同,我认为数据结构是对象的集合,而对象的集合则是生命周期。 因此,通过在对象的所有权级别获得所有权,我们就可以更接近人们正在使用的抽象级别,它使我们能够构建数据结构而不会超出安全范围。”

来源:ZDNet

So by taking ownership at the level of ownership of objects, then we
get much closer to the level of abstraction that people are using and
it gives us the ability to build data structures without going outside
of safety.

另外,Matthew 还表示 Verona 很快将会开源。

(文/开源中国)