Rust 10 周年:一部破电梯如何彻底改变了软件
开源软件的创始人之一埃里克-雷蒙德(Eric S. Raymond)有一句名言:“每一款优秀的软件作品都是从搔到开发者个人的痒处开始的”。Mozilla 软件开发人员格雷顿-霍尔(Graydon Hoare)在开始研发 Rust 编程语言时无疑就是这样。
2006 年,Hoare 因公寓楼的电梯老是出故障而苦恼。他后来说:”我们计算机专业的人竟然连一部能正常运行而不发生故障的电梯都做不出来,这太荒唐了!” 他怀疑电梯故障的原因是控制软件的内存错误,而控制软件很可能是用 C 或 C++ 编写的。这两种语言都是流行的系统语言,但却很难编写代码–这在很大程度上是因为编写带有内存错误的半功能代码太容易了。
因此,厌倦了每天拖着疲惫的身躯爬上 21 层楼梯的 Hoare 开始设计一种新的计算机语言。他想创造一种小而快的编程语言,同时又不会出现内存错误。他将这种语言命名为 Rust,取自一种被他称为 “为生存而过度设计 ”的坚韧真菌。
转折点
他的目标是创建一种安全的并发语言。与 C 和 C++ 不同,Rust 通过其独特的所有权系统来实现内存安全。它通过确保每块数据只有一个所有者,并在超出范围时自动释放,来防止空指针反引用和缓冲区溢出等常见错误。这种方法可以在编译时消除所有类型的内存错误。Rust 的并发模型通过在代码运行前捕获数据竞赛,进一步增强了安全性,使开发人员更容易编写既安全又高效的并发程序。
这并不容易。虽然一开始只是一个家庭项目,但 Mozilla 看到了它的潜力,并于 2009 年开始正式赞助 Rust。该语言于 2010 年公开发布,经过多年迭代,Rust 1.0 于 2015 年 5 月 15 日正式发布。
那是 10 年前的事了。
Rust 编程语言的第一个稳定版本悄然标志着软件开发世界的一个转折点。如今,Rust 不仅仅是一项技术成就,更是社区驱动创新力量的见证,从 Mozilla 支持的实验转变为科技巨头和开源社区共同拥护的主流工具。
刚刚开始
Rust 的第一个稳定版本只是一个开始。在此后的十年中,该语言取得了突飞猛进的发展。仅 Rust 的软件包注册表 crates.io 就从 1.0 版本时的约 2000 个软件包(“crate”)激增到现在的 18 万多个。标准库的规模扩大了两倍,工具链也日趋成熟,如支持集成开发环境的 rust-analyzer 和强大的软件包管理器 Cargo。
与此同时,Rust 致力于非破坏性发布和定期六周的发布周期,从而在不牺牲可靠性的前提下实现了快速创新。自 1.0 版发布以来,已经合并了 246,000 多处修改,每次发布都有 6,700 名贡献者和近 600,000 个公共 crates 接受测试。
Hoare 最近承认了这一点,他说:”Rust 是一个由利益相关者组成的大型社区共同设计、构建、维护和扩展共享技术基础设施的故事。这是一个有许多参与者的故事。这些参与者包括开发者、语言设计者、作者和教育者,以及支持 Rust 的机构。霍尔说,将他们聚集在一起的是 “对基础设施的共同兴趣”。
霍尔所说的基础设施是指 “构建其他基础设施的工具:网络协议、网络服务器、负载平衡器、遥测系统、数据库、编解码器、密码学、文件系统、操作系统、虚拟机、解释器等”。
Hoare 补充说:”世界需要强大而可靠的基础设施,而我们现有的基础设施无法胜任这项任务。简单地说:它经常出现故障,而且故障率高,代价昂贵。最好的情况是崩溃和停机,最坏的情况是安全漏洞。高效的’基础架构构建’语言是存在的,但它们非常难用,而且几乎不可能安全地使用,尤其是在编写并发代码时。Rust 就是 Hoare 的答案。
我称之为系统编程。
基础管道
与 Python、JavaScript 或 Java 等其他流行语言不同,Rust 并不是用来编写最终用户使用的高级程序,而是用来创建所有软件运行所需的底层管道。
这并不是每个人都会做的编程工作。不过,对于那些从事软件、管道和配件工作的人来说,Rust 非常受欢迎。因此,根据 Stack Overflow 开发人员调查,连续八年,“Rust 是最受推崇的语言;超过 80% 使用过它的开发人员希望明年再次使用它”。
我承认我也是其中之一。虽然我已经有很多年没有认真从事开发工作了,但最近当我编写代码时,Rust 是我的首选。它就是好用,我不需要像以前用 C 语言时那样为内存细节费神。
我并不孤单。Rust 的采用者就像现代计算机界的名人录。例如,Mozilla 在火狐浏览器中使用了 Rust;谷歌在 Android、Chrome OS 和 Fuchsia 中使用了 Rust;微软在其 Windows 核心库和 Azure Confidential Compute 中使用了 Rust。
离我最近的是,Linux 内核现在也采用了 Rust。这一路走来并非一帆风顺。正如 Linus Torvalds 最近所说:”我本以为(Rust)更新会更快,但问题的部分原因在于老一代内核开发人员习惯于使用 C 语言,而不了解 Rust。他们对必须学习一种在某些方面截然不同的新语言并不感到兴奋。因此,Rust 遭到了一些反对。” 不过,Torvalds 仍然是 Rust-in-Linux 的坚定支持者。
学习 Rust
尽管如此,使用和学习 Rust 也并非没有障碍。它的学习曲线,尤其是借用检查器和生命周期,对于新手来说仍然很陡峭。就我个人而言,我并不觉得它有多难。如果你想自学 Rust,我建议你从《Rust 编程语言》(又名《Rust 书》)开始,然后再学习《Rust for Rustaceans》。Rust by Example 和 Google’s Welcome to Comprehensive Rust 网站也很有帮助,而且都是免费的。
就这样,在 Rust 1.0 发布十年之后,Rust 实现了曾经看似不可能实现的目标:让系统编程变得既安全又愉快。
正如 Hoare 在 Rust 10 周年纪念时所说的那样,“Rust 是一个由利益相关者组成的大型社区共同设计、构建、维护和扩展共享技术基础设施的故事”。在一个越来越依赖安全、可靠和高性能软件的世界里,Rust 的下一个十年看起来比以往任何时候都更加光明。
你也许感兴趣的:
- 在 Rust 中写入未初始化的缓冲区
- Rust 和 C 文件系统 API
- 使用 Rust 真的能让软件更安全吗?
- 两年的 Rust 使用感悟
- 嵌入式 Rust 开发
- 氧化 Ubuntu:默认采用 Rust 实用工具
- “unsafe”是否会破坏 Rust 的保证?
- Rust 泛型 – 这是什么?
- 编程语言的选择
- 使用中的CSS :is 选择器
你对本文的反应是: