️前端研发的新基础设施 - 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是未来前端基础设施

科技分类资讯推荐

中国首个独立研发在美获批的全球首创新药,来自无锡高新区! - 天天要闻

中国首个独立研发在美获批的全球首创新药,来自无锡高新区!

7月3日无锡高新区企业迪哲医药宣布舒沃哲的新药上市申请正式获得美国食品药品监督管理局批准成为全球首个且唯一在美国获批的表皮生长因子受体(EGFR)20号外显子插入突变(exon20ins)非小细胞肺癌(NSCLC)国创新药同时也是中国首个独立研发在美获批的全球首创新药舒沃哲是一款口服、不可逆、针对多种EGFR突变亚型的高...
百度前副总裁璩静开医美诊所,人均消费2218元,曾因 “霸道女总裁” 言论道歉辞职 - 天天要闻

百度前副总裁璩静开医美诊所,人均消费2218元,曾因 “霸道女总裁” 言论道歉辞职

红星资本局7月2日消息,百度前副总裁璩静在华为总部坂田基地附近开了一家医美诊所。据公开资料,璩静名下新增一家存续企业——深圳大为诊所。该诊所成立于2024年12月23日,璩静持股比例为100%,认缴出资额为100万元,经营范围为诊所服务等。企查查显示,根据璩静关联的任职历史,她曾任深圳市星光健康管理有限公司(以下简...
推荐数商云B2B撮合交易平台,搭建企业间合作桥梁 - 天天要闻

推荐数商云B2B撮合交易平台,搭建企业间合作桥梁

来源:数商云引言:企业数字化转型与B2B撮合交易平台的崛起在全球经济一体化与数字经济深度融合的背景下,企业间的合作模式正经历深刻变革。传统供应链中信息不对称、交易成本高、协同效率低等问题,已成为制约企业发展的核心痛点。
当无人机 “飞” 入生活,数字低空如何重构我们的出行与未来? - 天天要闻

当无人机 “飞” 入生活,数字低空如何重构我们的出行与未来?

交汇点讯 近日,苏州国际博览中心的展厅里人头攒动,2025数字低空大会在此隆重举行。作为第三届低空(苏州)产业创新生态大会的重要组成部分,这场由未来移动通信论坛与鹏城实验室联合主办的盛会,承载着特殊的行业意义——继2024年在深圳首次提出“数字低空”概念并引发广泛共鸣后,它既是对过去一年行业探索的总结,更是...
雷军披露小米 YU7 销售数据;特斯拉 Q2 交付汽车 38.4 万辆;荣耀 Magic V5 发布|Do早报 - 天天要闻

雷军披露小米 YU7 销售数据;特斯拉 Q2 交付汽车 38.4 万辆;荣耀 Magic V5 发布|Do早报

Hello,大家早上好,又是元气满满的一天,先来浏览新鲜的早报吧~【微信多端正式更新】7 月 2 日,微信 iOS / 安卓 8.0.61 正式版携手登场;而在 7 月 1 日,微信在官网也上架了 PC 的新版本,Windows / Mac 4.0.6 迎来全新发布。【多地开放往届高考成绩网上查询功能】河北、浙江、陕西、山东等地都开放了往届高考成绩的查...
长城为何不做增程?详解Hi4背后的技术和战略逻辑 - 天天要闻

长城为何不做增程?详解Hi4背后的技术和战略逻辑

在中国新能源汽车产业迈入智能化与电动化深水区的当下,动力技术路线的选择,不仅关乎产品体验,也在重塑车企的技术底盘与品牌认知。与越来越多自主品牌押注增程技术不同,长城汽车选择走另一条更具挑战性的路线——全场景智能四驱电混技术体系Hi4。这个选择背后,是对效率、安全与技术普适性的权衡与押注。Hi4,一种技术“...
解码“民生答卷”丨如何“唤醒”沉睡的养老资源 - 天天要闻

解码“民生答卷”丨如何“唤醒”沉睡的养老资源

湖北日报全媒记者 方琳 李光正 张华“幸福食堂、健身房、阅览室、娱乐室、理疗室一应俱全,可没多少人来。”6月19日,在鄂东南某镇,一家开业一个多月的养老服务综合体经营者王先生望着冷清的门厅,难掩焦虑。截然不同的是,在武汉众多社区养老中心,唱歌、跳舞等活动日程排得满满当当,老人们排队“抢位”,养老床位更是“...
YU7爆火是雷军营销太强?张全蛋贴脸开大车企大佬,遮羞布都撕了 - 天天要闻

YU7爆火是雷军营销太强?张全蛋贴脸开大车企大佬,遮羞布都撕了

6月26日,小米YU7正式公布售价,很多人都预料到小米YU7会非常火,但是完全没有料到小米YU7能那么火,3分钟大定破20万辆,18小时锁单24.8万辆,可以说创造了国内汽车市场前所未有的新纪录。这也让之前那些攻击小米汽车的车企大佬和业外人士的表述显得苍白无力,小米YU7的价格不便宜,现在整个汽车行业的需求量也呈现疲软态势...