上周,MSRC(微软安全响应中心)透露出拥抱 Rust 的打算,随后他们将这个话题扩展为一个系列,进一步阐述了使用安全的系统编程语言的的必要性,以及选择 Rust 的原因。

在该系列最新一篇文章中,MSRC 团队首席云开发倡导者 Ryan Levick 解释了为什么他们认为 Rust 编程语言目前是业界采用的最佳选择,不仅仅是因为它能够以内存安全的方式编写系统级程序。

“首先,已经有很多出色的内存安全语言在微软内外广泛使用,包括 .NET 语言(像是 C# 或 F#)和其他语言(例如 Swift、Go 和 Python)。我们鼓励目前使用 C 或 C++ 的人将其中任意一种语言纳入考虑。不过现在谈论的是对安全的系统编程语言的需求,此类工作负载需要 C、C++ 和 Rust 能够提供的速度和可预测的性能。通过垃圾回收实现内存安全的语言不是系统编程的理想选择,因为它们的运行时间会导致不可预测的性能和不必要的成本。”

性能和控制

Levick 指出,最好先考虑一下无法从 C 和 C++ 放弃的东西——性能和控制,就能更清楚地明白 Rust 为什么是一个好的选择。像 C 和 C++ 一样,Rust 有一个最小的可选“运行时(runtime)”。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 工程的问题需要弄清楚,但我们鼓励其他人一同加入,认真考虑这门语言,以满足他们的系统编程需求。”

开源中国征稿啦!

开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。

现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿

推荐阅读

Oracle Linux 8.0 发布

最权威编程语言排行榜发布6月更新,TS首进前十

微软拥抱 Rust,以作为 C 和 C++ 的安全替代方案

GitHub Trending 被国人霸榜,国外开发者不满

这款数据库将企业版功能100%开源还不收费,why?

微软解释为什么Rust是系统编程的最佳选择相关推荐

  1. 微软解释为什么 Rust 是系统编程的最佳选择

    上周,MSRC(微软安全响应中心)透露出拥抱 Rust 的打算,随后他们将这个话题扩展为一个系列,进一步阐述了使用安全的系统编程语言的的必要性,以及选择 Rust 的原因. 在该系列最新一篇文章中,M ...

  2. 为什么Python是数据可视化编程的最佳选择?

    前言 统计信息的图形显示被称为数据可视化.编程数据可视化工具提供了一种直接的方法,通过利用图表.图形和地图等视觉组件来检查和理解数据中的趋势.异常值和模式.(文末送福利) [Python]提供的[数据 ...

  3. C++和Rust_Rust 是系统编程的未来,C 是新的 Assembly

    作者丨Bhagyashree R 译者丨平川 策划丨王文婧 在 2019 年开源技术峰会(OSTS)上,英特尔首席工程师 Josh Triplett 详细介绍了英特尔为将人们喜爱的 Rust 变成和 ...

  4. C语言嵌入式系统编程修炼之道——背景篇

    C语言嵌入式系统编程修炼之道--背景篇 作者:宋宝华  e-mail:[email]21cnbao@21cn.com[/email] 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势 ...

  5. [转]C语言嵌入式系统编程修炼之背景篇

    http://www.2ed.cn/Article-150-21922.shtml 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑, ...

  6. 浅谈C语言嵌入式系统编程注意事项

    C语言嵌入式系统编程注意事项之背景篇   本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上 ...

  7. C语言在嵌入式系统编程时的注意事项

    C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供了许多低级处理的功 ...

  8. C语言嵌入式系统编程修炼(经典中的经典)

    C语言嵌入式系统编程修炼      http://blog.chinaunix.net/u/25764/showart_326589.html转载自这里,真是太经典了. C语言嵌入式系统编程修炼   ...

  9. C语言嵌入式系统编程

    不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发 ...

最新文章

  1. oracle数据库登录失败触发器,oracle数据库登录、DDL触发器的应用
  2. 关于bitnami redmine 的一些问题
  3. python global 变量_python 全局变量和局部变量 (例子)
  4. 牛客多校8 - Enigmatic Partition(二阶差分)
  5. 阿里云天池 Python训练营Task1:从变量到异常处理
  6. Python面试题总结(8)--操作类
  7. leetcode —— 209. 长度最小的子数组
  8. Python字典常用函数使用详解(内附详细案例)
  9. 数据结构上机实践第八周项目7—对称矩阵的压缩存储及基本运算
  10. 查看CentOS系统配置情况命令
  11. linux 8t的硬盘格式化,linux 新添加的硬盘格式化并挂载到目录下
  12. element 修改主题方法
  13. 19年恶意软件排行榜
  14. HTML、CSS学习总结
  15. 支付宝小程序uni-app的map多边形polygons不显示问题解决
  16. 中国SAP 产品的客户名单
  17. 计算机无法打开这个应用,win10照片应用打不开提示“无法打开这应用”如何解决...
  18. 30多种磁芯优缺点对比
  19. 一起学习C语言:C语言发展历程以及定制学习计划
  20. 推荐几款好用的UI设计工具

热门文章

  1. solidworks小金球_如何在没有电缆的情况下传送第77届年度金球奖
  2. bzoj3160(FFT+回文自动机)
  3. HealthKit有名无实,疑点重重
  4. command not found Operation not permitted
  5. Ubuntu 每日技巧- 自动备份Ubuntu 14.04到Box云存储上
  6. 《 线性代数及其应用 (原书第4版)》——1.2 行化简与阶梯形矩阵
  7. 下载 infoq 网站视频
  8. 基于开源流程引擎Activiti5的工作流开发平台BPMX3
  9. CacheManager - 用 C# 编写的 .NET 的开源缓存抽象层
  10. 星跃计划 | 新项目持续招募中!MSR Asia-MSR Redmond 联合科研计划邀你申请!