Rust一生坎坷,团队几度解散,如今却正冲击C/C++的统治地位

几天前谷歌宣布推出全新的、更安全的嵌入式操作系统KataOS,使用seL4作为为内核,几乎完全用Rust实现。

谷歌官 发布KataOS

一直以来嵌入式系统绝大部分都是由C和C++写的,谷歌此次释放的信 ,加上之前开始用Rust构建Android开源项目的部分内容,这个较为年轻的语言似乎真的在以其更高的安全性撼动老牌C/C++语言的统治地位。

与出身豪门的C不一样,Rust一路走来并不顺利。

01

Rust – 起源

相比C和C++,Rust的出生似乎并没有那么传奇。

一个业余爱好项目

Graydon Hoare最开始是Mozilla的语言工程师,他的主要工作是为其他语言开发编译器或者工具。似乎每一个程序员都有一个因为喜爱而开发的业余项目?Hoare也不例外,2006年开始他着手创建开发一个语言原型——Rust。正是基于对编译器和编程语言的激情,他一直没有放弃Rust这个个人项目,工作之余都会花些心思去改进它。

2009年他决定向当时的经理展示这个原型,并很快吸引了其他人的注意,获得了Mozilla的资金支持并专门成立了一个团队。他担任团队领导,和其他同事一起研究Rust,以期让它变得比C++更安全、更并发、更简单

欲代替C++拯救浏览器

当时Mozilla正在准备建立开发实验性浏览器引擎Servo项目,Rust便是该项目重要的一部分,用来重建浏览器堆栈。当时几乎所有的浏览器,包括IE、Firefox、Chrome、Opera、和Safari的核心渲染引擎都是用C++写的。

当越来越多的由C++内存模型引发的安全漏洞无法根除,安全问题被一次又一次地提及之后,开发一个拥有当前引擎功能但具备更高内存安全的Web浏览器引擎被提上了日程,而Rust让大家看到了希望。

Rust的目标是能提供与C++的底层系统具有相似的控制级别——也就是系统编程语言——但更简单,最重要的是更安全。Hoare对此充满信心,他相信Rust。

02

Rust – 演化

但事情并不如他想的那么简单。

Rust项目困境

随着Servo项目的发展,Rust的野心也变得越来越大,它不再满足最初简单的目标,想要从 C++
/Lisp/Haskell/Scala/Cyclone 中吸收更高级的特性,追求成为“世界上最快”性能的语言。

此外,Hoare在团队的领导位置上也坐得不是很舒服,他不太擅长担任这种职位,也不太会协调团队保持内部的统一性和正确性。担任项目负责人,似乎耗尽了他的能量与激情。正如他2016年被邀请去苹果开发Swfit的时候说得一样:(去苹果工作)我很喜欢,因为那是一个非领导职位。

巨大的技术压力和团队压力,让Hoare一度将完成Rust称之为“西西弗斯的任务”——不可能完成的任务。2013年中期的时候,他选择休息一下,离开了Rust团队。

Rust坎坷后看到希望

在Hoare离开前,Rust经历了数个小版本,依次引入了类、析构函数和多态性等特性。因为Rust“在不牺牲安全性的情况下,像C++一样高效和便携”的目标难度不小,开发进度一拖再拖,直到Hoare离开两年后的2015年5月才发布1.0版本。

和许多编程语言一样,后期的开发和研究往往是整个团队努力的结果。Hoare为Rust付出了近8年的时光,尽管最后与Rust相伴的日子并没有那么快乐,甚至让他感到筋疲力尽和崩溃,但他依然认为Rust将永远在他心中占有特殊的位置。他非常喜欢Rust,因为它在安全问题上做出了很大的贡献。

相比以前的实验项目,现在的Rust已经变得更简单,也更强大。标准库的确立,让维护使用Rust编写的项目变得更轻松,这意味着构建可靠、高效的系统变得更加容易。2016年后,火狐浏览器中的大部分C++代码已经被Rust代替了。

此后,微软、亚马逊、谷歌等一众科技巨头纷纷加入Rust项目,共同研究开发这个更安全的编程语言。2019年微软也公布了他们使用Rust来作为C、C++的代替方案计划。

03

Rust – 向前

一切似乎又好起来了,几年下来Rust的发展有目共睹,Stack Overflow的调查显示Rust连续5年是程序员“最喜爱的语言”(截至2020年)。

但命运似乎又对Rust开了个玩笑。

曾经团队解散,Rust再遇危机

2020年Mozilla开始了大规模的裁员,Servo整个团队都没了,而其中就有不少Rust核心开发人员。尽管Rust 区的贡献已经很大了,但Rust的基础建设和核心人才还是依托于Mozilla,包括Rust包管理器、crates.io。

人们又开始为Rust未来开始担忧了。

官方关于Mozilla裁员对Rust的影响说明

5巨头联手救Rust

还好诸多企业、个人一直以来都关注着Rust,这次风波之后,他们马上将2019年创立Rust基金会的想法重新捡了起来。基金会对于Rust的稳定具有决定性的作用,也是为Rust未来发展奠定基础。

Rust基金会成立

2021年2月8日,ASW、华为、谷歌、微软和Mozilla联手成立Rust基金会,Rust又一次度过危机。合法性和稳定性获得确定后,Rust的未来也愈发明朗,越来越多的大型项目开始引入或者直接使用Rust。

Rust向C/C++发起冲击

随着Rust基金会的建立,它已经向C/C++发起了冲击:

2021年4月6日,谷歌宣布在Android开源项目中支持Rust作为C/C++的替代品;

微软和亚马逊都发布了他们新的官方支持的Rust库,用于与Windows和AWS进行交互;

cURL 项目发布了新版本,这些版本为使用 Rust 库处理 HTTP/s 和 TLS 通信提供了选择加入支持;

Tokio(用Rust编写的异步运行时)发布了其1.0版本。

加上文章开始谷歌新发布的KataOS,我们似乎能在任何可以看到C/C++的地方看到Rust了。

Rust 区同样是一片欣欣向荣,在2021年的调查中显示,96%的受访者是因为可以“构建相对正确且无bug的软件”而选择Rust;92%的受访者是因为性能选择它;89%的受访者是因为它的安全。

官方关于为“为什么使用Rust”的调查

在系统编程上良好表现使得Rust更受欢迎的同时,它同样面临一个问题:过于复杂,且不容易学——这同样是许多受访者的一致观点,并认为改善文档和培训是必需的。

现在这个问题现在有了很好的解决,经典的“In Action”系列迎来了Rust版本,学习Rust不再是望而生畏的事情了。

开启Rust实战!

04

学习Rust的正确姿势

Rust Wellington信息

作为Rust布道者,他在线上开展了无数次Rust培训,并接受Rust官方的邀请向更多的人介绍如何正确、高效地学习Rust。

Rust官方邀请蒂姆·麦克纳马拉开设Rust学习课程

如此丰富的Rust使用和教学经验,让他知道每个阶段的Rust学习者想要和需要做什么,所以他编写了这本《Rust实战》,告诉那些已经接触过Rust开源资料,但是不知道“接下来该学些什么”的读者学习Rust的正确姿势。

正如其名,本书重点在于使用Rust进行系统编程。当然在开始,他会向读者介绍多个必要的系统编程概念和Rust语言的基础信息,然后深入探索计算机工作原理,帮助读者了解Rust的所有权系统、Trait、包管理、错误处理、条件编译等概念,并通过源自现实的示例来帮助读者了解Rust中的内存模型、文件操作、多线程、 络编程等内容。

书中10多个示例都是源自现实项目,不仅容易理解,并且可以直接操作,从理论到动手充分地体验和理解Rust语法,了解Rust的实际运用。

当然,更推荐有一定编程经验的读者阅读本书,至少要有编程的基本概念。

05

Rust是未来

相比C/C++来说,Rust的确是一个年轻的语言,但是越来越多的科技巨头和大型项目对Rust的态度,告诉我们学习Rust会是一条好路。

但就像Graydon Hoare说的:我与语言的关系就像一个喜欢各种各样的积木、乐器或塑料恐龙的孩子。

语言不是唯一,只有手中喜欢的“玩具”越多,我们玩得才会越开心,在未来也会有更多的选择。

选择Rust,选择未来

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月5日
下一篇 2022年10月5日

相关推荐