Redian新闻
>
前端研发的新基础设施 - Rust 🦀️

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

科技


最开始关注到 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、前端基础设施领域

  • 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:零配置构建工具,特点是快速编译和不需要配置

2、数据可视化领域

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

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

3、Rust 和 Node 生态

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

4、Web3 领域

由于 Web3 协议在处理数千万个不可信输入时需要快速且强大的性能,Rust 具有明显的优势。可以以很好的性能处理功能复杂的任务,同时还减少了与内存、边界、空变量、初始化变量或整数溢出相关的错误。

使用 Rust 创建更强大的 DApp(分布式应用),它可以减少许多常见的错误,使 DApp 在发布后按预期运行。Rust 的性能优势和安全性,使得 Rust 成为 Web3 应用程序的理想选择。其中币安的撮合引擎就是以 Rust 作为主语言,Solana 社区更是有很多基于 Rust 开发的 DApp。

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

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


Rust 的优势



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

Rust 帮助开发者开发节约内存的快速软件。它是同样关注代码安全、简洁语法的 C++ 或者 C 的一种现代的替换选择。

Rust 和 JavaScript 非常不一样。JavaScript 会去找到不用的变量和对象,然后自动清除它们。这个机制叫做垃圾回收,Rust 希望开发者自己去规划手动的内存管理。

1、高性能

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

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

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


2、可靠性

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

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


Rust 陡峭的学习曲线



Rust 有一个陡峭的学习曲线,这也是目前 Rust 在大规模使用中面临的困难。很多朋友会开玩笑说 Rust 入门并不难,我已经入门亿次了。

网上流传的一个段子,很形象的讲述了 Rust 的技术复杂度。

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

图为 Rust 的学习曲线:

随着前端基础设施逐渐被 Rust 化,预估 2 年后,想从事前端基础设施的研发,Rust 将成为必选项,招聘时,也会越来越看重 Rust。

在前端工具的各项对比中,使用 Rust 改造都得到了 10 倍以上的性能提升。

Rust 成为前端研发的基础设施已经是不可阻挡的趋势,可以从现在开始学习,一起吃 Rust 这只螃蟹 🦀️。

附录链接

  • 微软关于云安全性的文章,最佳工业级应用产品:https://thenewstack.io/microsoft-rust-is-the-industrys-best-chance-at-safe-systems-programming/?spm=ata.21736010.0.0.d39550b8KKeE88
  • Rust 是 JavaScript 基础设施的未来 https://mp.weixin.qq.com/s?__biz=MzkxNDIzNTg4MA==&mid=2247485792&idx=1&sn=682a4dee7ce4d3b47a81baf9ebd7a98a
  • 仅仅过去 4 年,微软最终放弃了 Electron https://mp.weixin.qq.com/s/EeOd-Ln9RUNmeWLlMkJmIg
  • Solidity、Go、Haskell、Rust,Web3 开发者掌握哪种编程语言更具优势?https://foresightnews.pro/article/detail/7250
  • Rust是未来前端基础设施:https://github.com/i5ting/rust-fe






关注「Alibaba F2E」微信公众号把握阿里巴巴前端新动向



微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
罗氏两连败,揭开新药研发的残酷真相关于 LowCode&ProCode 混合研发的思考知网涉嫌垄断遭立案调查 知网:彻底整改,承担起知识基础设施的社会责任押注长期价值,商汤如何打造「下一个时代的 AI 基础设施」【微报告】中国充电基础设施行业简析 | 甲子光年智库使用 rustup 管理你的 Rust 工具链 | Linux 中国中国人能用上自己研发的彩色胶卷,多亏了这位刚去世的大佬。a16z分析师深度文章:元宇宙时代,游戏基础设施有哪些新机会?前端质量|基于业务驱动的前端性能有效实践案例春天的鸟儿疫情之下浮现的新基建,需要时才知道究竟有多重要新冠病毒Omicron BA.4/5正导致疫苗研发的新一轮竞赛。我们该等新疫苗吗?适度超前建设数字基础设施,夯实数字经济底座——推动数字经济持续健康发展系列述评之一神奇!波士顿这家公司研发的小药丸,居然能让40%重度秃头星人恢复浓密秀发...新赛道、交叉学科、下沉市场、数据基础设施……4家企业获近12亿融资 | FreeS Family融资新闻·Vol10里尔克诗译:我在这个世界上太过孤独- I am Much Too Alone in This World案例 | Paxos:受监管的区块链基础设施提供商She Made Up Russian History for a Decade. Wikipedia Just Noticed53人在塌房中遇难归罪于贪婪美国“新冠疫苗的未来”大会,传递出疫苗研发的三个关键方向巴西飞机Embraer 190数据跨境安全网关条款评注(二): “互联网接入”、“线路”与“服务器托管”——翻墙产业“关键”基础设施美国近半死于新冠的人都患有糖尿病(ZT)“天临四年,知网被查”:这个“知识基础设施”是如何变成过街老鼠的?俄罗斯立法,要求所有手机预装RuStore应用商店,中国手机厂商被截胡?案例 | Alchemy:区块链基础设施提供商独立游戏开发者分享:单人研发的神秘、现实与生存策略疫情下,AI正在打造药物研发的新常态,加速新冠口服药研发Linus Torvalds 暗示很快就可以在内核中看到对 Rust 的支持 | Linux 中国13亿!国寿投资助力成渝经济圈交通基础设施建设酷暑难熬:缺乏基础设施的欧洲与脆弱的工作者2022 Rust 入门指南 | Linux 中国案例 | Flutterwave:为非洲建立数字支付基础设施硬核观察 #645 JavaScript 和 Python 继续统治编程语言,但 Rust 在崛起以机房B级建设标准满足等保2.0三级要求 | 混合云基础设施
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。