第178期 | 深受程序员喜爱的Rust(下)
你好,这里是卖桃者说。
书接上回,前文我们提到,Rust 作为系统级编程语言,主要优点有三个:安全、并发、高效。
先来看安全。Rust 是静态的,拥有丰富的类型系统和所有权语义模型,保证了内存安全性和线程安全性。 举个例子,C 语言中很容易出现整数溢出,如果被黑客利用,就会出现安全问题,而 Rust 中的每个值都只能被一个所有者拥有,所以 C 语言常遇到的这类问题,对 Rust 来说都不是问题。
同时,借助类型系统的强大,Rust 编译器可以在编译期就对类型进行检查,及时发现内存不安全的问题,使开发者能在编译阶段就将诸多类型错误扼杀于萌芽之中。当然,凡事都有两面性,之前,我一位从 C++ 转向 Rust 的程序员朋友就吐槽过,“C++ 是调试的时候想撞墙,而 Rust 是编译的时候想撞墙。”
再来看并发。并发和并行是技术圈内永不会过时的话题,而 Rust 在设计层面就提供了一整套机制来保证并发的安全性。举个例子,数据并发在多线程程序中是一个常见的危险因素,而 Rust 通过所有权模型,非常清晰地定义了一个安全的边界,保证你的代码不会出问题。
最后来看高效。Rust 没有运行时机制,也没有垃圾回收机制,所以它非常快并且内存效率极高。同时,Rust 可以为关键性能服务提供支持,还可以轻松地与其他语言集成。
Rust 看起来很好很强大,业界是否已经将其大量投入使用了呢?并非如此。2018 年,JetBrains 发起了其标准的年度调查项目,调查了 6000 名开发人员,以确定开发人员生态系统的状态。结果显示,Rust 在开发者中的热度并没有想象中的高,已经开始使用的只占 2%,而打算使用的也只有 6%。
2018 年年尾,Rust 官方博客发布了 2018 年的 Rust 调查报告。报告的数据也证明了这一点:很多非 Rust 用户表示他们所在的公司本身不使用 Rust,超过三分之一的用户表示,目前还没有考虑在未来一年尝试使用 Rust。
为什么会出现这样的现象?
Rust 的学习曲线比较陡峭,上手难是导致初学者倒在入门阶段的一大原因,对使用其他语言的企业来说,转移成本也是需要考虑的一点,所以这直接影响了 Rust 的使用者数量。再者,Rust 的生产环境偏少,企业招人难,开发者求职也不容易。
作为一门小众语言,Rust 虽然没有大热,但一直保持着缓慢而稳健的增长。2017 年,在 GitHub 上 Star 大于 10 的,使用 Rust 语言开发的项目数是 2139,2019 年 4 月,这个数字增长到了 6131。
不过,2019 年 7 月发生了两件不大也不小的事,让 Rust 语言开始走进了大众的视野。
第一件事,7 月 4 日,社交网络巨头 Facebook 联合其他 100 个行业巨头,对外宣布准备建设 Libra(天秤座)项目。该项目的技术特点是构建于区块链技术之上,并且基于 Rust 实现。
构建于区块链技术之上,说明 Facebook 等巨头认为下一代金融世界是建立在区块链的基础上,因为区块链是信任的未来。选择使用 Rust 语言来构建 Libra 的区块链基建,是因为 Rust 语言能够帮助开发者实现这份信任。In Rust, We Trust。
第二件事,7 月 18 日,微软安全响应中心(MSRC)发文宣称:我们需要更安全的系统编程语言。并且在后面的系列文章中逐步探讨,为什么微软认为 Rust 语言目前是业界的最佳选择。
微软的这一系列文章,看样子比 Facebook 的 Libra 项目更加吸引眼球。大家都认为微软要计划使用 Rust 了,但其实微软早已在内部使用 Rust,比如 Azure IoT Edge 项目,已经在 GitHub 开源。再比如现在 Rust 社区流行的 Web 开发框架 actix-web,就是由微软的工程师 Nikolay 开发,用于 Azure 平台内部。
微软安全响应中心是一个专门负责接收和处理微软安全相关漏洞报告的部门。早在去年 2 月,该部门的工程师在以色列举行的 BlueHat 安全会议上就曾发表过一篇演讲《微软:70% 的安全漏洞都是内存安全问题》。时隔半年左右,该部门官方博客才开始对外宣告 Rust 应该成为业界的最佳选择。这说明微软经过深思熟虑才得出这一结论。
去年 2 月的演讲,还在 Reddit 上引起了一番争论。其中的一个主流观点是:不是编程语言的问题,而是写代码的人水平不够,才出现这种安全问题。然而,没有程序员是全能的,Rust 编译器捕获的错误,有可能超出程序员的经验之外。难道开车上路,有更好的司机,就不需要安全带了吗?非也。我们需要像 Rust 这样带有安全防护的语言来防止错误。
而除了 Facebook 和微软之外,全球还有数百家公司正在使用 Rust,比如亚马逊、Atlassian、Dropbox、谷歌、红帽和 Reddit 等等。在国内,百度安全实验室的 MesaTEE 下一代可信安全计算服务框架、PingCAP 的 TiKV 等项目用到了 Rust 语言,蚂蚁金服、知乎和 SenseTime 内部也不乏用 Rust 语言开发的项目,而字节跳动则将 Rust 用到了今日头条企业级 IM 产品 Lark 的开发之中,它也是国内对 Rust 开发者最为友好的公司之一。
听完了 Rust 的故事,你对 Rust 是否多了一些兴趣呢?你会在未来使用 Rust 吗?
卖桃者说,明天见。
(编辑:夏天)