日前,美国总统拜登公开表示:出于安全考虑,大力发展Rust项目,拒绝支持“非Rust”项目。美国力挺的“Rust”到底是个啥?为啥它在国内不火?
Rust的发展历史
公开资料显示,Rust是一种现代系统编程语言,它的设计目标是提供与C和C++等低级语言相媲美的性能,专注于安全、并发和性能,同时提供更高级别的内存安全保证。Rust最初由美国Mozilla Research(曾开发Firefox 火狐浏览器并至今运营着Mozilla社区)推出,由 web 领域领军人物、JavaScript 之父 Brendan Eich、Dave Herman 、Graydon Hoare 合力开发。
Mozilla 用Rust开发了实验性的渲染引擎 Servo,并将其部分 Css 渲染组件如 Quantum Style 整合到 Firefox 浏览器中。Mozilla 的最初计划是用 安全性较高的 Rust完全重写 Firefox 的 C++ 代码。但由于疫情原因,Mozilla 在 2020 年的裁员中把 Rust 团队和大部分 Rust 核心开发者给裁员了。而后 Rust 项目宣布独立并创建 Rust 基金会,而 Servo 引擎成为 Linux 基金会托管项目。Mozilla 的 Rust 重写计划也被搁置。如今在 Firefox 的代码中, Rust 比例仅为 9.9%,而 C++ 语言占比26.8%,C 语言占比13.4%,JavaScript 占比27.5%,HTML 占比16%,Python占 比4.8%。
自2010年以来,Mozilla Research一直在积极开发,并于2015年正式发布了Rust1.0版本。其官方描述是:“运行速度极快,防止了几乎所有崩溃,并消除了并发数据安全问题”。
历经多年发展,在2022年的美国StackOverflow开发者调查中,Rust连续四年被开发者评为最受欢迎的编程语言,但有趣的是,97%的被调查者表示从未使用过Rust,对Rust语言的热爱还停留在想学的阶段。
Rust在美国的发展势头强劲,目前它得到了包括Google、Microsoft、Amazon等许多科技公司的关注和支持。一些公司已经开始在生产环境中使用Rust,并将其用于系统编程、网络服务、游戏开发和嵌入式系统等领域。
比如,Rust分别进入了Windows系统和Linux系统内核开发序列。以前操作系统的开发语言是万年不变的C/C++,甚至 Linux的内核开发者都瞧不上C++。而Rust轻易就进入了内核开发领域,可见其技术优势,因此可以称得上“里程碑事件”。Rust也因其可靠性和性能而受到开源社区的欢迎,拥有一个活跃且不断增长的开发者社区。
随着Rust的稳定性和生态系统的成熟,预计其未来发展趋势继续向好,更多企业和开发者可能会采用Rust来替代或配合现有的系统编程语言。尤其是Rust在安全性和性能方面的优势可能会推动它在操作系统、浏览器引擎、游戏开发、区块链和物联网等领域的应用。
Rust的两大安全特性
有专业网友总结:“相当于站在前人的肩膀上,Rust很大程度上解决了很多其他编程语言的痛点。”Rust具有以下特性。
首先,Rust发挥了静态语言的优势。相较动态语言在调试和运行时的不确定性,静态类型的语言允许对数据及其行为预先进行编译器级别的检查和约束,在运行时只保留少量的类型检查,这极大地避免了程序员的麻烦,同时有益于鼓励长期的可维护性。
同时解决了并发条件下的数据竞争问题。当两个线程同时访问同一内存时,会发生数据竞争,从而导致某些不可预测的行为。Rust从编译阶段就将数据竞争解决在了萌芽状态,保障了并发条件下的数据安全。用户可以用库的形式实现各种高效且安全的并发编程模型,进而充分利用多核时代的硬件性能。
其次,Rust可以实现更好的内存安全特性。在内存管理上,常见的方式有两种:要么如Java、Python一样使用垃圾回收算法,要么像C++一样手工管理内存。但垃圾自动回收必然影响性能,手工管理内存则可能会出现内存泄漏和悬停指针之类的问题。Rust的所有权系统在编译时就分析程序的内存管理,而且没有额外的运行时开销。这种无垃圾回收器的内存安全机制是Rust经典且核心的设计之一。
作为系统级编程语言,Rust的基本理念是“零成本抽象”。这一理念让Rust具备高级语言表达能力的同时,又不会带来性能损耗。与其他系统级编程语言(如C或C++)相比,Rust不需要程序员将所有时间都花在细节上,而是通过添加更高层次的编程概念,确保使用的抽象几乎没有运行时开销,这种抽象与等效的手写代码具有同等的性能。
总的来说,在性能方面,Rust内存利用率极高,能够胜任对性能要求特别高的服务;在安全性上,Rust丰富的类型系统和所有权模型保证了内存安全和线程安全,在编译期就能够有效阻断各种错误的发生。
总之,Rust在安全性、可靠性和性能上碾压所有C语言,唯一的缺点就是目前其开发门槛高。
两个原因导致它在国内不火
相对于美国来说,Rust在国内正逐渐受到关注,一些技术公司和开发者社区对Rust的兴趣正日益增长,有些公司已经开始探索和实验性地使用Rust进行项目开发。中文Rust社区和文档资源也在逐渐丰富,但笔者登录有关Rust社区后发现,社区不太活跃,网页功能不够完善,部分社区甚至没有持续更新,由此可见,国内rust尚需普及和教育。
谈到国内外的明显差别以及rust为啥在国内不火,业内人士分析,主要原因有以下两个。
其一,国内外的开发环境存在明显差异:由于历史原因,国内科技公司更侧重于业务应用方面的开发,传统C、C++、JAVA等语言比rust具有较长的应用历史,而更适合rust语言的国产操作系统、互联网大厂里的基础设施与中间件,以及嵌入式linux、重型桌面应用等基础领域的开发需求没有那么多,或者说国内专注于操作系统内核等互联网“基建”开发的公司比较少,因此国内对rust的需求不足,导致其较难得到快速推广应用。
其二,Rust语言的学习难度较大:Rust语言的设计思路是将安全性放在第一位,其语法和规则相对严格,学习难度较大。而被rust用户瞧不上的go语言以及低代码开放平台等因为学习简单,率先得到推广,尤其是其在云原生的互联网后端表现不错。
7.1%的被调查者表示,在使用Rust后又停用。他们停止使用Rust的最大原因是公司不再使用Rust,学习难度大、缺少所需的库和缺少IDE支持也是常见的障碍。更多用户希望Rust与C、C++语言有更好的互操作性。
尽管Rust目前在国内还不火,但随着全球软件行业对安全性和性能的需求日益增长,Rust内存级别的安全特性使其成为一种理想的安全开发语言选择。国内外企业都会继续探索Rust在不同领域的应用,同时会有更多的开发者加入到Rust的学习和应用中。随着国内开发者对Rust的认识加深,未来会出现更多基于Rust的开源项目和企业级解决方案,国内Rust也将呈现出良好的发展态势。