Rust正在吃掉JavaScript

上周,TypeScript 的创始人 Anders Hejlsberg 宣布了一个重大消息:TypeScript 的核心工具将迁移到 Go语言

我知道你可能会觉得奇怪,心想:“Rust 明明就在那儿,为啥不用呢?”作为你们的 Rust 忠实推广者,我来和大家聊聊 Rust 是如何悄悄改变 JavaScript 生态的。

JavaScript 工具是现代网页开发的支柱,但它们已经有点“老”了。像 Webpack 和 Babel 这样的工具,虽然曾经是革命性的,但现在却因为构建速度慢和单线程瓶颈而拖累性能,尤其是在项目规模变大时。
这些问题的根源在于 JavaScript 的设计:它是解释型语言,而且是单线程的,不适合处理解析、打包和转译大型代码库这样的繁重任务。

而 Rust 凭借其速度、内存安全性和与 WebAssembly(WASM)的无缝集成,为 JavaScript 生态注入了新的活力,带来了开发者无法忽视的优势。

Rust 的崛起引发了一股“用 Rust 重写”的潮流,席卷了整个 JavaScript 生态。我们并没有看到太多阻力,反而发现许多 JavaScript 工具正在用 Rust 重写,以利用其性能优势。正如你所料,工具链正在复兴,性能不再是奢侈品,而是新标准。

以下是一些部分或完全用 Rust 重写的 JavaScript 工具,证明这不仅仅是炒作。
大牌工具

  • Deno.:一个现代的 JavaScript 和 TypeScript 运行时,由 Node.js 的创始人 Ryan Dahl 用 Rust 从头构建。
  • Speedy Web Compiler (SWC):一个基于 Rust 的可扩展平台,用于下一代快速开发者工具。Next.js、Parcel 和 Deno 等工具,以及 Vercel、字节跳动、腾讯和 Shopify 等公司都在使用它。
  • Rspack:一个用 Rust 编写的高性能 JavaScript 打包工具。它与 webpack 生态兼容性很强,可以无缝替换 webpack,并提供闪电般的构建速度。
  • Rolldown:一个用 Rust 编写的 JavaScript/TypeScript 打包工具,旨在成为 Vite 未来的打包工具。它提供 Rollup 兼容的 API 和插件接口,但在功能上更接近 esbuild。
  • Turborepo:一个为 JavaScript 和 TypeScript 优化的增量打包工具,用 Rust 编写,并内置在 Next.js 中。你可以将 Turborepo 与 Pages 和 App Router 一起使用,以获得更快的本地开发体验。
  • Oxc (The Oxidation Compiler).:这是一个雄心勃勃的项目,是一套用于 JavaScript 和 TypeScript 的高性能工具。Oxc 包括解析器、代码检查器、格式化工具、转换器、压缩器和解析器,提供了一个模块化、一体化的解决方案,既快速又多功能。
  • Neon.:用于编写安全且快速的本地 Node.js 模块的 Rust 绑定。
新工具除了这些大牌工具,还有一些新兴的基于 Rust 的工具,为 JavaScript 开发者提供了创新的解决方案。
  • Biome:一个快速的格式化工具,支持 JavaScript、TypeScript、JSX、TSX、JSON、CSS 和 GraphQL,与 Prettier 的兼容性达到 97%,节省了 CI 和开发者的时间。
  • Lightning CSS:一个极快的 CSS 解析器、转换器和压缩器。它可以与 Parcel 无缝协作,也可以作为独立库、CLI 或其他工具的插件使用。对于厌倦了缓慢 CSS 处理的人来说,这是一个改变游戏规则的工具。
  • Boa:一个可嵌入的实验性 JavaScript 引擎。
  • Parcel:一个零配置的网页构建工具。
  • Ezno:一个快速且正确的 TypeScript 类型检查器和编译器,附带一些实验性功能。
  • Nova:一个用 Rust 编写的 JavaScript(ECMAScript)和 WebAssembly 引擎,遵循数据导向设计原则。
  • Canvas:高性能的 Skia 绑定到 Node.js。零系统依赖,纯 npm 包,无需任何安装后脚本或 node-gyp。
  • Volta:无烦恼的 JavaScript 工具管理器。
用 Rust 编写的 JavaScript 工具正在迅速流行起来。像 Next.js 这样的大型项目使用 SWC 来加速构建,而 Vite 也在考虑使用 Rolldown 来实现同样的目标。

开发者们喜欢这种性能提升,但并不是所有人都买账。一些 JavaScript 粉丝希望工具继续用 JavaScript 编写,因为这样更容易调整,也更符合生态系统。另一些人则因为觉得学习 Rust 很难,担心会搞乱现有的设置而持保留态度。不过,随着 Rust 证明其价值,越来越多的人正在转向它。

虽然 Rust 不太可能完全取代 JavaScript 工具,但它很可能会在速度和性能至关重要的领域占据主导地位。

WebAssembly(WASM)是另一个巨大的优势,它让 Rust 可以在浏览器中与 JavaScript 一起运行,从而实现协作。Rust 可以处理像代码处理这样的繁重任务,而 JavaScript 则保持界面的流畅。这种组合可以让网页开发更快、更直观,两种语言各展所长。

随着 Rust 凭借其速度和内存安全性“吃掉”JavaScript 工具,这不仅仅是一时的潮流,它正在改变我们构建网页的方式。