微软解释为什么 Rust 是系统编程的最佳选择
上周,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 有一个最小的可选“运行时”。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 工程的问题需要弄清楚,但我们鼓励其他人一同加入,认真考虑这门语言,以满足他们的系统编程需求。”
MSRC 博客原文:https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
直接在 DNA 上执行 SQL 操作,已通过 PostgreSQL 验证
法国通信系统工程师学校与研究中心(Eurecom)数据科学系助理教授 Appuswamy 和伦敦帝国理工学院 SCALE 实验室负责人 Heinis 等人近期发表了一篇关于在 DBMS 存储层操作DNA 的论文《OligoArchive: Using DNA in the DBMS storage hierarchy》。 论文研究了在数据库存储层次结构中集成 DNA 的问题。更具体地,其提出了以下两个问题: 数据库经验如何帮助优化 DNA 编码和解码? 生化机制如何应用于对 DNA 操作进行体外、近数据的 SQL 查询处理? 为了回答这两个问题,该研究引入了一个叫 OligoArchive 的架构,这是一种使用基于 DNA 的存储系统作为关系数据库归档层的架构。 DNA 的存储系统简单讲也就是指基于ATCG 这些碱基所组成的一套存储信息的方案,类比 0/1 二进制,这种存储系统具有四进制。用 DNA 作为存储介质,优势是容量大与存储时间长,有数据指出 1 克 DNA 能够存储大约 2 拍字节,相当于大约 300 万张 CD;同时用 DNA 存储数据保存时间可能长达数千年;此外与硬盘、磁...
- 下一篇
育碧宣布加入 Blender 开发基金会
知名游戏公司育碧宣布它将以企业黄金会员的身份加入 Blender 基金会的 Development Fund。育碧表示它不仅可以帮助为 Blender 开发者提供在线支持,旗下的动画工作室 Ubisoft Animation Studio(育碧电影电视部门)也将使用 Blender 制作产品,并分配开发者为 Blender 的开源项目贡献代码。 谈及为什么育碧会选择使用开源软件时,Ubisoft Animation Studio 的产品总监Pierrot Jacquet在接受采访中表示,考虑到育碧自身的目标和愿景,Blender 是十分自然的选择,因为 Blender 拥有一个强大且活跃的社区在背后提供支持,并且还是市场上发展最迅速的数字内容创作工具(DCC,Digital Content Creation)之一。更重要的是,Blender 作为一个开源项目,允许公司参与进来,和社区一同进行交流和分享。这种基金会、社区和企业相互合作和交流的方式最终能让各方从中受益。 PJ 还说到,即将发布的Blender 2.80 将改变 CGI 行业的规则,而在过去的一年里,育碧公司越来越多的艺术家...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker快速安装Oracle11G,搭建oracle11g学习环境