比 Vite+ 快 5.4 倍的前端工具链!正式发布!
前端工具链这几年真的卷疯了。
esbuild 用 Go 打破性能天花板。
SWC、Oxc、Rolldown 又把 Rust 推到了前台。
现在,新的玩家来了。
这一次不是 Rust,而是 Zig。
它叫 Yuku。
一个用 Zig 编写的 JavaScript / TypeScript 编译器工具链。
更夸张的是:
它的性能测试直接超过了很多人熟悉的 Oxc。
而 Oxc 作者 Boshen Chen 也公开认可了 Yuku 的性能表现,并称赞它采用的 Data-Oriented Design(数据导向设计)。
要知道,Oxc 可不是普通项目。
它正是当前前端工具链新时代的重要基础设施之一。
包括未来的 Vite+、Rolldown,都大量依赖 Oxc 提供的底层能力。
那么问题来了:
一个刚出现的 Zig 工具链,凭什么跑赢 Rust?
前端工具链的新战争
以前前端开发,大家关注的是:Vue、React、Next.js。
但现在真正决定开发体验的,越来越底层。
比如:
代码解析 AST 转换 类型分析 压缩优化 Lint 格式化
这些事情每天都在发生。
项目越大,工具链速度越重要。
所以近几年出现了一场基础设施重构:
Babel
↓
esbuild (Go)
↓
SWC (Rust)
↓
Oxc / Rolldown (Rust)
↓
Yuku (Zig)
前端正在逐渐进入“系统语言时代”。
Yuku 到底快在哪里?
很多人看到 benchmark 会疑惑:
为什么一个 Parser 能影响这么大?
原因很简单:现代前端工具链,本质就是不断处理代码,处理大致分为四步-
## 第一步:
把源码解析成 AST。
## 第二步:
分析 AST。
## 第三步:
修改 AST。
## 第四步:
重新生成代码。
所以 Parser 是整个链路最核心的一环。
Yuku 的核心优势:
就是它重新设计了这一套流程。
关键优化:Data-Oriented Design
传统 AST 通常是:
Node
├── Node
│ ├── Node
│ └── Node
大量对象嵌套。
对于 JavaScript 来说,这种结构很自然。
但对于高性能工具链来说:
它有一个问题。
内存访问效率低。
大量对象分散在内存里,会导致:
Cache miss GC 压力 序列化成本增加
Yuku 选择了另一种方式:
Data-Oriented Design
数据导向设计。
简单来说:
不要围绕对象设计。
而是围绕数据布局设计。
让 CPU 更容易读取和处理。
这也是为什么它在大规模代码解析场景里表现非常强。
npm 场景直接拉开差距
官方 benchmark 中,一个非常关键的数据:
解析 typescript.js(约 7.8MB)。
结果:
Yuku 49ms
Acorn 133ms
Babel 184ms
Oxc 265ms
SWC 480ms
相比:
Babel:约快 3.7 倍 Acorn:约快 2.7 倍 Oxc:约快 5.4 倍 SWC:约快 9.8 倍
这也是 Yuku 最有价值的地方。
因为很多时候大家只看 native benchmark:
Rust 比 Go 快。
Zig 比 Rust 快。
但真实前端环境不是这样。
最终你需要的是:
Node.js 可以直接使用。
插件可以快速调用。
AST 可以高效传输。
Yuku 针对的正是这个环节。
社区关注度非常高
因为 Vite+ 背后的方向,就是重新打造下一代前端工具链。
现在这条路线:
Vite+
│
▼
Rolldown
│
▼
Oxc
│
├── Parser
├── Transformer
├── Minifier
├── Analyzer
└── Linter
大量能力都来自 Oxc 生态。
而 Yuku 做的事情,刚好也是这个方向:底层编译能力。
所以它最大的想象空间不是:“替代某个 npm 包”。
而是未来有没有机会成为下一代:
BundlerIDEAI Coding AgentCode Intelligence
的底层引擎。
写在最后
过去几年,大家以为 Rust 会成为终点。
但现在看来可能只是开始。
Go 带来了 esbuild。
Rust 带来了 SWC、Oxc、Rolldown。
现在:Zig 又来了。
更低层、更快、更接近硬件。
前端工具链的新战争,开始了。
Yuku官网: https://yuku.fyi/