近日在一次演讲中,谈到微软为解决相应内存问题所作的工做,微软在英国的研究人员 Matthew Parkinson 提到了微软正在开发的基于 Rust 的新编程语言,这个项目,微软内部称为“Verona"。git
此前,微软表示正探索将 Rust 做为 C 和 C++ 的安全替代方案,而且也对外展现了使用 Rust 重写 Windows 组件的体验,根据微软的说法,Rust 是一种从根本上考虑安全性的编程语言,他们将尝试使用 Rust 重写各类产品,由于在过去的十年里,微软 70% 以上的安全补丁都提供了与内存相关的错误,而 Rust 正是解决这个问题的“良药”。编程
演讲中,Matthew 先是分享了微软在 MemGC(Memory Garbage Collector)上所作的工做,MemGC 是指 IE 和 Edge 浏览器上的内存垃圾回收器,它解决了标准浏览器一个特性——文档对象模型(DOM)中的漏洞,DOM 以树结构表述了 HTML 文档内容。vim
以后他由此牵出另外一个问题:如何构建最安全的产品?不单单丢弃已有的东西,而要考虑能够在更加安全的系统中构建一些什么。他介绍了微软正在使用 Rust 重写某些组件,并提出:“若是咱们想要隔离,并精简遗留代码,以使攻击者的利用代码没法逃逸出来,那么如何设计语言呢?”浏览器
Matthew 提出了微软正在开发的基于 Rust 的新编程语言 Verona,他表示这是首次讨论该项目,微软宣称这门语言是用于“安全的基础设施编程 - safe infrastructure programming”,Verona 项目很“快”会开源。安全
Matthew 介绍,Verona 由 C# 项目经理 Mads Torgensen 与 微软剑桥研究院研究软件工程师 Juliana Franco 维护。数据结构
微软面临的挑战是应对宽广的应用领域,范围从 C# 桌面应用到 C 或 C# Exchange、ASP.NET、Azure 与设备驱动程序,再到内存管理和启动加载器等底层 Windows 组件,以及 Windows 内核硬件抽象层(HAL,hardware abstraction layer)。并发
“执行内存管理确实很困难,若是有任意并发突变,则临时内存安全性将很是困难”,Matthew 介绍了 Verona 的设计思路:“Verona 的全部权模型是基于对象组的,而不是像 Rust 那样基于单个对象的全部权模型。在 C++ 中,能够得到指针,而且它是基于对象的。但这与我关于数据和语法的思考不一样,我认为数据结构是对象的集合,而对象的集合则是生命周期。 所以,经过在对象的全部权级别得到全部权,咱们就能够更接近人们正在使用的抽象级别,它使咱们可以构建数据结构而不会超出安全范围。”编程语言
英文报道:https://www.zdnet.com/article...spa
Matthew Parkinson 的演讲视频《Digital Security by Design: Security and Legacy at Microsoft 》设计