️前端研发的新基础设施 - Rust

2022年07月15日12:06:25 科技 1887

作者:伍林辉(五灵) 阿里交付技术团队

最开始关注到 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 在相关领域的应用

1.1 前端基础设施领域

  • SWC: (Speedy Web Compiler) 基于 Rust 的前端构建工具,可以理解为 Rust 版本的 Babel,但是性能有 10 倍提升。目前被 Next.js、Deno 使用。
  • Tauri:Tauri 是目前最流行的 Electron 替代方案,通过使用 Rust 和 Webview2 成功解决了 Electron 的包体积大和内存占用高的问题。具体可以参见底部参考文章,微软为什么最终放弃了 Electron。相信 Atom 团队也是看到了 Tauri 的成功,才决定基于 Rust 去做 Zed 编辑器。
  • Rome:可以理解为 Babel 作者的新作品,Rome 旨在取代许多现有的 JavaScript 工具,集代码检测、打包、编译、测试等功能于一身。
  • Parcel:零配置构建工具,特点是快速编译和不需要配置

1.2 数据可视化领域

  • Wgpu:是 WebGPU API 标准的 Rust 实现。WebGPU 是由 W3C 发布的规范,目标是让网页代码能安全可靠地访问 GPU 功能。其实现方式借鉴了 Vulkan API,会翻译到宿主硬件所用的各式 API(如 DirectXMetalVulkan 等)上执行。
  • Bevy:基于 Rust 语言开发,数据驱动的游戏引擎。同时支持 2D 和 3D 图形渲染,以及图可视化的渲染。
  • Cube.js: cube.js 是开源的 BI 分析工具框架,其中的 Cube Store 用于分析查询的性能优化以及通过跨数据库连接的数据联合等附加功能,就是由 Rust 来实现的。

Rust 的高性能以及与 WebAssembly 结合,是非常适合用在需要大数据量处理的数据可视化领域的。

1.3 Rust 和 Node 生态

  • Deno:Deno 是一个简单、先进且安全的 JavaScript 和 TypeScript 运行时环境,其基于 V8 引擎并采用 Rust 编程语言构建。
  • Napi-rs:用 Rust 和 N-API 开发高性能 Node.js 扩展,可以替代之前用 C++ 开发的 Node.js 扩展

1.4 Web3 领域

由于 Web3 协议在处理数千万个不可信输入时需要快速且强大的性能,Rust 具有明显的优势。可以以很好的性能处理功能复杂的任务,同时还减少了与内存、边界、空变量、初始化变量或整数溢出相关的错误。
使用 Rust 创建更强大的 DApp(分布式应用),它可以减少许多常见的错误,使 DApp 在发布后按预期运行。Rust 的性能优势和安全性,使得 Rust 成为 Web3 应用程序的理想选择。其中币安的撮合引擎就是以 Rust 作为主语言,Solana 社区更是有很多基于 Rust 开发的 DApp。

1.5 Rust 作为汽车软件主语言探索

Rust 的硬实时性和完美的内存机制,同样适合汽车场景的软件开发,在 RustChinaConf 上就有国汽智控关于 Rust 在汽车软件开发的探索分享。

二、Rust 的优势

️前端研发的新基础设施 - Rust - 天天要闻

早在 2015 年,Mozilla 员工就发布了 Rust,它是一种专注于安全和性能的多范式编程语言,其构建考虑到了速度和效率,这意味着它可以提供零成本的抽象、继承和功能特性。

Rust 帮助开发者开发节约内存的快速软件。它是同样关注代码安全、简洁语法的 C++ 或者 C 的一种现代的替换选择。
Rust 和 JavaScript 非常不一样。JavaScript 会去找到不用的变量和对象,然后自动清除它们。这个机制叫做垃圾回收,Rust 希望开发者自己去规划手动的内存管理。

2.1 高性能

所有程序都必须管理其运行时使用计算机内存的方式。一些语言(比如:JavaScript)中具有垃圾回收机制,在程序运行时不断地寻找不再使用的内存,在另一些语言中,程序员必须亲自分配和释放内存。
Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。正是这种内存管理机制,使得 Rust 有惊人的内存利用率。

let s1 = String::from("hello");
let s2 = s1;   // s2 借用了 s1, s1 不再有效

println!("{}, world!", s1); // 这里 Rust 会报错,s1 是无效的引用

2.2 可靠性

Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让你在编译期就能够消除各种各样的错误。

  • 内存安全:通常内存不安全的情况包含:空指针、野指针、悬空指针、使用未初始化的指针、非法释放、缓冲区溢出、执行非法函数指针、数据竞争等。Rust 通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查,如果违反了任何这些规则,程序都不能编译。
  • 线程安全:线程安全是程序设计中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。Rust 通过一整套基础设施和类型检查,强迫这些线程问题暴露在编译阶段,相比花费大量时间尝试重现运行时并发 bug 出现的特定情况,Rust 会拒绝编译不正确的代码并提供解释问题的错误信息。

三、Rust 陡峭的学习曲线

Rust 有一个陡峭的学习曲线,这也是目前 Rust 在大规模使用中面临的困难。很多朋友会开玩笑说 Rust 入门并不难,我已经入门亿次了。
网上流传的一个段子,很形象的讲述了 Rust 的技术复杂度。

小王是一个大型项目下的 C++ 工程师,今天他上班触发了一个全量编译便回家了,明天再来。
小张是一个深度神经网络Python 工程师,今天他上班改了一个参数开始训练便回家了,三天后再来。
小李是一名资深的 Rust 工程师,今天他上班只花了一小时就完成了需求的开发。
然后连续加班了三个晚上才使得编译通过。

图为 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是未来前端基础设施

科技分类资讯推荐

怪兽级别的三防手机 - 天天要闻

怪兽级别的三防手机

那就是来自unihertz的Tank3,个人在无意看到它的相关评测,结果让我大吃一惊。图上是pro版,实际配置大同小异unihertz是国内的一个手机品牌,主要做小众手机,比如最小的智能手机啥的,也做三防手机Tank系列。现在来看,Tank
微软关闭全国所以线下门店 - 天天要闻

微软关闭全国所以线下门店

微软关闭全国所有线下门店。惊人消息,微软或要告别中国市场的线下实体店面了。从郑州到北京,微软线下门店正在悄然关闭。据派财经报道,微软决定关闭全国所有线下授权门店,仅保留官网商城与京东旗舰店。微软发言人表示,这是为了满足客户不断变化的需求而对
华为MatePad SE 2024款发布:1299元起 搭载骁龙685 - 天天要闻

华为MatePad SE 2024款发布:1299元起 搭载骁龙685

站长之家(ChinaZ.com)7月1日 消息:华为今日正式发布了MatePad SE2024款平板电脑,凭借其亲民的价格和全面升级的配置,再次引发了市场的关注。这款平板提供8GB128GB和8GB256GB两种配置,预售价分别为1299元和1499元,将于今天10:08开启预售,并在7月4日10:08正式首销。在外观设计上,华为MatePad SE2024
三星Galaxy Tab S9系列:学霸们的期末复习利器 - 天天要闻

三星Galaxy Tab S9系列:学霸们的期末复习利器

每到7月期末考试季都会有很多“黑马”脱颖而出,Ta们看似在平日的学习中状态平平,但却在考试时有非常不错的表现。细究其成绩提升的秘诀,其实是科学的复习方法在帮忙。尤其是在今年,很多同学都开始借助三星Galaxy Tab S9系列这样的AI大屏平板来辅助学习,其多元的AI功能与S Pen带来的记录体验,能让学习效率飙升。标配S ...
全系搭载麒麟5G处理器 华为Nova 13系列即将发布 - 天天要闻

全系搭载麒麟5G处理器 华为Nova 13系列即将发布

随着智能手机市场新一轮的竞争加剧,华为公司宣布即将推出备受瞩目的Nova 13系列手机。据悉,此次Nova 13系列将全系搭载华为自主研发的麒麟5G处理器,这一重磅消息迅速在业界引起了广泛关注。华为Nova系列一直以来以其时尚的设计和出色的性能受到年轻消费者的喜爱。而此次Nova 13系列的发布,更是华为在技术创新和用户体验...
华为方舟壹号:智能家居引领者,将撬动百万亿新房产! - 天天要闻

华为方舟壹号:智能家居引领者,将撬动百万亿新房产!

华为出手,果然不凡!当数百家车企在新能源汽车行业拼的焦头烂额之时,华为已孑然一身跳出了无底炼狱。华为以他独领全行业的高精尖科技和他高瞻远瞩的独特眼光,又一次引领了一个全新的耀眼领域。宽广的眼界和胸怀天下的格局,总使华为处于领跑者的地位。
水质检测仪的精度是多少? - 天天要闻

水质检测仪的精度是多少?

水质检测仪水质检测仪的精度主要取决于其设计、传感器类型以及校准方法。以下是对养殖水质检测仪精度的一些详细分析:    1.传感器类型:    ·水产养殖水质检测仪配备了高精度传感器,这些传感器能够实时监测水体中的关键指标,如PH值、溶解氧、