微软详解Rust为何是系统编程最佳选择

2019年07月24日|作者:速骑士|分类:IT资讯|来源:www.suqishi.com

7月24日消息 微软安全响应中心(MSRC)前些天曾透露,为了改善应用程序的安全状况,他们正在探索使用Rust编程语言作为C、C++和其他语言的替代方案!而据最新消息显示,MSRC团队首席云开发倡导者Ryan Levick近日也在一篇文章中解释了为什么认为Rust编程语言目前是业界采用的最佳选择。
微软详解Rust为何是系统编程最佳选择


  “首先,已经有很多出色的内存安全语言在微软内外广泛使用,包括.NET语言(像是C#或F#)和其他语言(例如Swift、Go和Python)。我们鼓励目前使用C或C++的人将其中任意一种语言纳入考虑。不过现在谈论的是对安全的系统编程语言的需求,此类工作负载需要C、C++和Rust能够提供的速度和可预测的性能。通过垃圾回收实现内存安全的语言不是系统编程的理想选择,因为它们的运行时间会导致不可预测的性能和不必要的成本。”
  性能和控制
  Levick指出,最好先考虑一下无法从 C和C++放弃的东西——性能和控制,就能更清楚地明白 Rust为什么是一个好的选择。像C和C++一样,Rust有一个最小的可选“运行时”。Rust的标准库同样依赖于libc,但标准库也是可选的,因此在没有操作系统的平台上运行也是可能的。
  仍然像C和C++一样,Rust为程序员在何时分配内存以及分配内存的多少上提供了精细的控制,使程序员能够非常清楚地知道程序每次运行时的确切执行方式。在原始速度、控制和可预测性方面,这对于性能来说意味着什么?那就是,“Rust、C和C++可以用类似的术语来思考”。
  安全
  Rust与C和C++的区别在于其强大的安全保障,某种程度上来说Rust完全是内存安全(memory safe)的。正如之前那篇文章提到的,微软大约70%的安全问题是内存安全问题。如果这些软件用Rust编写,那么这 70%的安全问题很可能就不存在。
  在系统编程中,有时程序员必须执行无法静态验证为安全的操作。Rust为程序员提供了将这些操作封装在安全抽象中的工具,这意味着曾经降级为代码注释或约定的东西可以由Rust编译器静态强制执行。
  不仅仅是性能与安全
  Rust最初引起MSRC的兴趣正是由于上述性能与安全方面的特性。但它的的魅力不止于此,已经有其他微软团队开始采用Rust,主要出于以下原因:
  根据微软内部调查,采用它的最主要原因是“精密性”(correctness)——“if it compiles, then it works”。
  Rust静态地强制执行程序的许多属性,已经远超内存安全性,还包括空指针安全性和数据争用安全性(即没有来自两个或多个线程的一块内存的不同步访问)。
  Rust的丰富类型系统使编写富有表现力的程序成为可能。 具有相关数据的枚举和强大的trait系统等概念进一步强化了Rust的目标,即尽可能使程序无错误。
  Rust现有的社区对该语言有很大益处。虽然Rust仍然是一种年轻语言,但它拥有一个健康的生态系统,既能够促进开源社区发展强大,又能够支持生产用户。
  Levick表示有足够的理由相信Rust会有一个光明的未来,“虽然现在大规模采用Rust还为时过早,但早期采用Rust通常是非常积极且正面的”。他们相信Rust在编写安全的系统软件时会改变游戏规则。Rust提供编写底层系统所需的性能和控制,同时使软件开发人员能够编写更健壮、安全的程序。
  另外,MSRC在研究Rust时发现了一些问题,其中包括如何规范Rust的“不安全”(unsafe)超集的使用,缺乏与C++的一流互操作性,以及与现有Microsoft工具的互操作性!当然,这确实对微软采用Rust提出了挑战,但MSRC还是满怀期待,“我们对这些可能性感到兴奋。虽然还有许多关于Rust如何适应整个Microsoft工程的问题需要弄清楚,但我们鼓励其他人一同加入,认真考虑这门语言,以满足他们的系统编程需求。”
如果您有什么不懂的欢迎加入速骑士QQ交流群:速骑士官网群
速骑士一键重装( www.suqishi.com ) 版权所有 粤ICP备19037620号-2
速骑士官网群