字节跳动开源前端模块打包工具 Rspack:基于 Rust、主打高性能


字节跳动开源了一款采用 Rust 开发的前端模块打包工具:Rspack(读音为/'ɑrspæk/)。

据介绍,Rspack 是一个基于 Rust 的高性能构建引擎,具备与 Webpack 生态系统的互操作性,可以被 Webpack 项目低成本集成,并提供更好的构建性能。

特性

  • 启动速度极快: 基于 Rust 实现,构建速度极快,带给你极致的开发体验。
  • 闪电般的 HMR: 内置增量编译机制,HMR 速度极快,完全胜任大型项目的开发。
  • 兼容 webpack 生态: 针对 webpack 的架构和生态进行兼容,无需从头搭建生态。
  • 内置常见构建能力: 对 TypeScript、JSX、CSS、CSS Modules、Sass 等提供开箱即用的支持。
  • 默认生产优化: 默认内置多种优化策略,如 Tree Shaking、代码压缩等等。
  • 框架无关: 不和任何前端框架绑定,保证足够的灵活性。

从官方的描述来看,他们创建此项目并非是强行造轮子。而是当前的技术方案无法满足他们的需求,所以才决定自研 Rspack。

开发团队表示,字节跳动内部存在非常多的大型前端应用,它们有着非常复杂的构建配置,生产环境构建需要耗费十几分钟,甚至超过半小时;开发环境的耗时也超过十几分钟。

他们在 Webpack 上尝试了多种方法去优化这些项目的编译速度,但是社区内存在的方案都或多或少存在一些问题,在对这些问题总结后,他们理解到工程师对构建工具的诉求是:

  • 良好的 Dev 启动性能
  • 良好的 Build 性能
  • 足够灵活的配置
  • 生产环境的产物优化能力

在确定了这四个需求后,团队调查了社区中的所有技术方案,它们通常都能很好地满足其中个别需求,但没有一个方案能同时满足所有条件。因此,他们决定自研 Rspack。

开发团队还说道,到今天(2023 年 3 月)为止,Rspack 已经开发了 11 个月,虽然仍处于比较早期的状态,且缺失了一些 Webpack 的功能,但根据二八原则,目前的功能已经能够满足大多数项目的需求。而且根据他们的验证,Rspack 可以给项目带来 5 ~ 10 倍的编译效率提升,并且随着内置越来越多的常见 features,性能也在逐步地提升。

构建速度对比(模块数量:50000)

查看 Benchmark 详情

目前 Rspack 已经完成了 Webpack Loader 架构的支持,开发者可以在 Rspack 中使用之前见到的 Loader,如 babel-loader、less-loader、svgr 等等。团队表示长期的目标是完整支持 Loader,未来可以直接在 Rspack 中使用社区内的 vue-loader。


去年 Vercel 公司也开源了一款基于 Rust 的打包工具:Turbopack。Turbopack 是面向 JavaScript 和 TypeScript 优化的增量打包工具和构建系统,采用 Rust 编写,声称是 Webpack 的继任者,也是以“高性能”作为卖点。

Rspack 开发团队也表示他们从 Turbopack 汲取了灵感,启发了 Rspack 里基于 AST 的路径重写逻辑

虽然 Rspack 和 Turbopack 都是基于 Rust 实现的 bundler,且都发挥了 Rust 语言的优势。但与 Turbopack 不同的是,Rspack 选择了对 Webpack 生态兼容的路线

开发团队认为,这些兼容可能会带来一定的性能开销,但在实际的业务落地中,对于大部分的应用来说,这些性能开销是可以接受的,另一方面,这些兼容也使得 Rspack 可以更好地与上层的框架和生态进行集成,能够实现业务的渐进式迁移。

团队还提到,他们已经和 Webpack 团队确立了合作关系,Rspack 作为 Webpack 通过 Rust 进行性能优化的一个尝试,未来会和 webpack 团队一起探索优化 webpack 的更多可能性。当 Rspack 达到一定的成熟度时,webpack 团队将尝试以实验特性方式将 Rspack 集成到 webpack 中。


相關推薦

2023-03-25

微拓扑,基于更细粒度的微拓扑信息完成资源分配,满足高性能业务的 QoS 要求。 详细的功能规划请参考 roadmap。 虽然混部技术在字节内部已经经历了几次的技术迭代,但是一个通用、标准化的平台底座必然要经过各种场景

2023-02-08

源项目前 100。 国内 腾讯、华为、阿里巴巴、美团、字节跳动、百度、京东、网易、快手、圆通 等 和 国外 Google, Microsoft, Amazon, Paypal, IBM, Shopee 等数百名知名大厂员工点了 Star, 也有 腾讯、华为、字节跳动、Microsoft、Zoom、

2022-10-28

10月26日,字节跳动宣布开源BitSail数据集成引擎。BitSail意为“数据航行”,可支持二十余种异构数据源间的数据同步,提供离线、实时、全量、增量场景下的全域数据集成解决方案,从而打通困扰企业数字化转型的“数据孤岛”

2023-03-10

3月7日,由字节跳动主办,英特尔、OCP-OSF(Open System Firmware)、OSFF(Open System Firmware Foundation) 社区联合举办的“云固件交流沙龙”在北京召开。会上,字节跳动正式发布了新一代云固件 Cloud Firmware 2.0,这是首次在 X86 服务器中产品化

2024-10-14

Tauri 都会使用本地系统 webview 组件,应用可以以最小几兆字节的捆绑包形式交付。 Tauri 原生支持大量流行框架:Vue.js、Svelte、React、SolidJS、Angular、Preact、Yew、Leptos 和 Sycamore。用户还可以将现有的 Web 项目迁移到 Tauri 的后端。

2022-10-20

近日,CNCF 发布了最新版本的云原生全景图。字节跳动多租户网关项目 KubeZoo 被收录,在 Provisioning-Automation & Configuration 领域占有一席之地。这意味着 KubeZoo 正式成为 CNCF 认可的构建云原生最佳实践中的一环。 Landscape

2023-04-27

为 Primus 解决的问题。   日均作业百万核的字节跳动实践 经过字节跳动在不断实践中调整打磨的 Primus,拥有以下能力支撑业务需求: 自研训练框架:目前除了业界开源的 Tensorflow、Pytorch,为了满足用户的

2024-06-26

有消息称字节跳动为削减采购成本并确保高端 AI 芯片供应稳定,与美国博通(Broadcom)合作开发先进AI处理器。针对该消息,字节跳动方面对第一财经记者回应称:消息不实。 据媒体报道,字节跳动与博通合作开发的处理器为

2023-11-18

在近日举办的 Linux Plumbers Conference 上提出,字节跳动 Linux 内核工程师 Cong Wang 发表了一个“Linux Kernel Autotuning”的主题演讲,提议可以使用人工智能(AI)和机器学习(ML)来调整 Linux 内核,从而为特定工作负载带来

2024-09-25

字节跳动今天在深圳举办2024火山引擎 AI 创新巡展,并发布豆包·视频生成模型以及豆包·音乐模型、豆包·同声传译模型等产品。 据悉,豆包·视频生成模型能遵从复杂 prompt,解锁时序性多拍动作指令与多个主体间的交互能力

2024-10-21

近日,有消息称字节跳动发生大模型训练被实习生“投毒”事件。 据悉,该事件发生在字节跳动商业化团队,因实习生田某某对团队资源分配不满,利用HF(huggingface)的漏洞,通过共享模型注入破坏代码,导致团队模型训练成

2022-10-24

经出现,包括AssemblyScript、Grain、Motoko和凹语言等。 3.1.2 高性能的网络应用 已经有一些公司使用Wasm来显著提高他们的网络应用程序的性能。例如,Figma(刚刚被Adobe以200亿美元收购),一个基于浏览器的协作界面设计工具,使

2024-06-25

字节跳动正在与美国芯片设计公司博通公司(Broadcom)合作开发一款先进的人工智能处理器,此举将有助于TikTok的所有者在中美关系紧张之际确保高端芯片的充足供应。 消息人士补充说,5纳米芯片是一种定制产品,被称为特

2023-12-21

React/Vue/Nerv 等框架来开发微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。 此版本具体更新内容如下: 修复 小程序 修复了小程序 Input 组件在使用 async onInput 回调时导致输入框闪烁的问题 修复了 Webpack5 Reac