作者:伍林辉(五灵) 阿里交付技术团队
最开始关注到 Rust ️,是因为 Atom 团队放弃维护 Atom,转身投入到一个新的轻量级、更快的编辑器 Zed 的开发,而这个编辑器最大的特点就是将全部基于 Rust 来构建。而为什么基于 Rust 来开发可以更快呢,这成功吸引了我的好奇心,也是写这篇文章的原因。
这两年 Rust 正在快速占领前端基础设施领域,Webpack、Babel、Prettier 这些热门工具都已有了 Rust 替代方案,且性能有着 10~100 倍的提升。亚马逊和 FaceBook 都认可它是其系统中 C / C++ 的最佳替代品,微软更是认为 Rust 作为工业级的开发语言,在云的基础设施领域应该是首选。Figma、Dropbox 也已经在客户端中使用 Rust。甚至有说法:任何能够用 Rust 实现的应用系统,最终都必将用 Rust 实现。
在今年的 StackOverflow 开发者调查中,Rust 连续 7 年成为最受开发者喜欢的语言。但是 Rust 并不止于此,在相关领域有更多的应用,让我们先看看 Rust 在相关领域的应用,再来关注为什么大家都不约而同地选择了 Rust。
Rust 的高性能以及与 WebAssembly 结合,是非常适合用在需要大数据量处理的数据可视化领域的。
由于 Web3 协议在处理数千万个不可信输入时需要快速且强大的性能,Rust 具有明显的优势。可以以很好的性能处理功能复杂的任务,同时还减少了与内存、边界、空变量、初始化变量或整数溢出相关的错误。
使用 Rust 创建更强大的 DApp(分布式应用),它可以减少许多常见的错误,使 DApp 在发布后按预期运行。Rust 的性能优势和安全性,使得 Rust 成为 Web3 应用程序的理想选择。其中币安的撮合引擎就是以 Rust 作为主语言,Solana 社区更是有很多基于 Rust 开发的 DApp。
Rust 的硬实时性和完美的内存机制,同样适合汽车场景的软件开发,在 RustChinaConf 上就有国汽智控关于 Rust 在汽车软件开发的探索分享。
早在 2015 年,Mozilla 员工就发布了 Rust,它是一种专注于安全和性能的多范式编程语言,其构建考虑到了速度和效率,这意味着它可以提供零成本的抽象、继承和功能特性。
Rust 帮助开发者开发节约内存的快速软件。它是同样关注代码安全、简洁语法的 C++ 或者 C 的一种现代的替换选择。
Rust 和 JavaScript 非常不一样。JavaScript 会去找到不用的变量和对象,然后自动清除它们。这个机制叫做垃圾回收,Rust 希望开发者自己去规划手动的内存管理。
所有程序都必须管理其运行时使用计算机内存的方式。一些语言(比如:JavaScript)中具有垃圾回收机制,在程序运行时不断地寻找不再使用的内存,在另一些语言中,程序员必须亲自分配和释放内存。
Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。正是这种内存管理机制,使得 Rust 有惊人的内存利用率。
let s1 = String::from("hello");
let s2 = s1; // s2 借用了 s1, s1 不再有效
println!("{}, world!", s1); // 这里 Rust 会报错,s1 是无效的引用
Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让你在编译期就能够消除各种各样的错误。
内存安全:通常内存不安全的情况包含:空指针、野指针、悬空指针、使用未初始化的指针、非法释放、缓冲区溢出、执行非法函数指针、数据竞争等。Rust 通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查,如果违反了任何这些规则,程序都不能编译。
线程安全:线程安全是程序设计中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。Rust 通过一整套基础设施和类型检查,强迫这些线程问题暴露在编译阶段,相比花费大量时间尝试重现运行时并发 bug 出现的特定情况,Rust 会拒绝编译不正确的代码并提供解释问题的错误信息。
Rust 有一个陡峭的学习曲线,这也是目前 Rust 在大规模使用中面临的困难。很多朋友会开玩笑说 Rust 入门并不难,我已经入门亿次了。
网上流传的一个段子,很形象的讲述了 Rust 的技术复杂度。
小王是一个大型项目下的 C++ 工程师,今天他上班触发了一个全量编译便回家了,明天再来。
小张是一个深度神经网络的 Python 工程师,今天他上班改了一个参数开始训练便回家了,三天后再来。
小李是一名资深的 Rust 工程师,今天他上班只花了一小时就完成了需求的开发。
然后连续加班了三个晚上才使得编译通过。
图为 Rust 的学习曲线:
随着前端基础设施逐渐被Rust化,Rust在前端基础设施的研发工作中愈发重要,招聘时也会越来越看重 Rust。
在前端工具的各项对比中,使用 Rust 改造都得到了 10 倍以上的性能提升。Rust 成为前端研发的基础设施已经是不可阻挡的趋势,可以从现在开始学习,一起吃 Rust 这只螃蟹 ️。
[01] 微软关于云安全性的文章,最佳工业级应用产品:Microsoft: Rust Is the Industry’s ‘Best Chance’ at Safe Systems Programming – The New Stack
[02] Rust 是 JavaScript 基础设施的未来 Rust 是 JavaScript 基础设施的未来
[03] 仅仅过去 4 年,微软最终放弃了 Electron 仅仅过去 4 年,微软最终放弃了 Electron
[04] Solidity、Go、Haskell、Rust,Web3 开发者掌握哪种编程语言更具优势?Solidity、Go、Haskell、Rust,Web3 开发者掌握哪种编程语言更具优势? - Foresight News
[05] Rust是未来前端基础设施:GitHub - i5ting/rust-fe: Rust是未来前端基础设施