几天前谷歌宣布推出全新的、更安全的嵌入式操作系统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进行处理,非常感谢!