Rust会成为JavaScript未来的基础设施吗? – thenewstack


Rust最初由 Mozilla 创建,是一种快速、可靠、内存效率高且非常流行的编程语言,专为提高性能和安全性而设计。
如被广泛使用的Facebook,苹果,亚马逊,微软和谷歌用于系统基础设施、加密和虚拟化。Rust 现在正在取代 JavaScript Web 生态系统的部分内容,例如缩小 (Terser)、转译 (Babel)、格式化 (Prettier)、捆绑 (webpack)、linting (ESLint) 等等。让我们深入探讨一下为什么这种趋势越来越受欢迎和被广泛采用。
JavaScript 是使用最广泛的编程语言,可在每个带有网络浏览器的设备上运行。在过去的 10 年里,围绕 JavaScript 构建了一个庞大的生态系统:

  • Webpack:开发人员希望将多个 JavaScript 文件捆绑为一个。
  • Babel:开发人员希望在支持旧浏览器的同时编写现代 JavaScript。
  • Terser:开发人员希望生成尽可能小的文件大小。
  • Prettier:开发人员想要一个可以正常工作的固执己见的代码格式化程序。
  • ESLint:开发人员希望在部署之前发现他们的代码存在的问题。

已经编写了数百万行Rust代码,并且修复了更多错误,为当今的 Web 应用程序提供了基础。所有这些工具都是用 JavaScript 或 TypeScript 编写的。这工作得很好,但我们已经达到了 JS 的最佳优化。这激发了一类新的工具,这些工具旨在大幅提高 Web 构建的性能。
 
SWC
SWC创建于 2017 年,是一个基于 Rust 的可扩展平台,适用于下一代快速开发工具。它被 Next.js、Parcel 和 Deno 等工具以及 Vercel、ByteDance、腾讯、Shopify 等公司使用。SWC 可用于编译、缩小、捆绑等 - 并且旨在进行扩展。您可以调用它来执行代码转换(内置或自定义)。通过 Next.js 等更高级别的工具运行这些转换。
 
Deno
Deno创建于 2018 年,是一个简单、现代且安全的 JavaScript 和 TypeScript 运行时,它使用V8并使用 Rust 构建。它试图取代由 Node.js 的原始创建者编写的 Node.js。虽然它是在 2018 年创建的,但直到 2020 年 5 月才发布v1.0。Deno 的 linter、代码格式化程序和文档生成器是使用 SWC 构建的
 
esbuild
esbuild创建于 2020 年 1 月,是一个 JavaScript 捆绑器和压缩器,比用 Go 编写的现有工具快 10-100 倍。
在 esbuild 发布之前,使用 Go 和 Rust 等系统编程语言构建 JavaScript 工具是相当小众的。在我看来,esbuild 激发了人们更广泛的兴趣,试图让开发者工具变得更快。
 
Rome
Rome于 2020 年 8 月创建,是一个用于 JavaScript、TypeScript、HTML、JSON、Markdown 和 CSS 的 linter、编译器、捆绑器、测试运行器等。他们的目标是替换和统一整个前端开发工具链。它是由Sebastian McKenzie创建的,他也创建了 Babel。
Rome 目前使用 TypeScript 编写并在 Node.js 上运行。但是他们现在正在使用 RSLint 解析器和他们自己的访问者系统来重写 Rust以进行 AST 遍历。
 
NAPI
Rust 与 Node.js 的集成优于其他低级语言。napi-rs允许您使用 Rust 构建预编译的 Node.js 插件。它提供了交叉编译和发布本地的二进制文件NPM一个彻头彻尾的现成的解决方案,而无需node-gyp或postinstall脚本。您可以构建一个可以直接从 Node.js 调用的 Rust 模块,而无需创建像 esbuild 这样的子进程。
 
Rust + WebAssembly
WebAssembly (WASM) 是 Rust 可以编译成的一种可移植的低级语言。它在浏览器中运行,可与 JavaScript 互操作,并在所有主要的现代浏览器中均受支持。
对于开发人员来说,这意味着您可以拥有 Rust(相对于 Go)的性能优势,同时仍然为 Web 编译(使用 WASM)。
 
在可预见的未来,Rust 的受欢迎程度将继续增长,并对 JavaScript 生态系统产生重大影响。想象一下,Next.js 中使用的所有构建工具都是用 Rust 编写的,从而为您提供最佳性能。然后可以将 Next.js 作为从 NPM 下载的静态二进制文件分发。对我来说,那将是一个生活(和发展)的理想世界。