过去几年。
前端工具链几乎进入了 Rust 时代。
从 SWC、Rspack、Turbopack、Rolldown,到 Oxc…… 越来越多项目开始用 Rust 重写。
原因只有一个:性能。
就在最近,一个用 Zig 写的 JavaScript 工具链,开始在开发者社区刷屏。
作者甚至公开表示:
Yuku 已经比 Oxc 更快。
如果你最近刷到这个名字。
别怀疑,它就是今天要聊的主角:Yuku
官方地址:yuku.fyi/
GitHub: github.com/yuku-toolch…
很多开发者第一次看到后都会问:Zig 做前端工具链?还能比 Rust 快?答案可能真的出乎你的意料。
又一个 Oxc?
第一眼看到 Yuku,很多人的反应都是:又一个 Parser? 或者:又一个 Babel 替代品? 其实都不准确。
官方给它的定位是:
一个使用 Zig 编写的高性能 JavaScript / TypeScript Compiler Toolchain。
注意,不是 Parser,不是 Formatter。
而是:
Parser
+
Analyzer
+
Codegen
+
Compiler Toolchain
目标很明确:打造完整的新一代 JavaScript 基础设施。
为什么大家突然开始关注它?
原因只有一个:快。
最近作者公开分享了一组基准测试,直接把大家看懵了。
官方表示:在 Native Benchmark 下。
Yuku 已经超过:
- Oxc
- SWC
在 npm 环境下,相比主流解析器。
速度可以达到 3 ~ 10 倍。
甚至作者还专门发文解释:为什么某些 npm 场景下,Oxc 会比大家想象得慢,原因并不是 Parser 本身。而是:Rust 与 JavaScript 之间 AST 传输产生了额外开销。
而 Yuku 从设计之初,就把 AST 做成了更适合跨语言传输的数据结构。
它为什么这么快?
官方把原因总结成一句话:Data-Oriented Design(数据导向设计)。
什么意思?简单理解就是:不是围绕对象设计,而是围绕 CPU Cache 设计。
尽可能:
- 连续内存
- 更少分配
- 更少跳转
- 更少缓存失效
这种思路,其实近年来很多高性能项目都在采用。
例如:
- 游戏引擎
- 数据库
- 编译器
而 Yuku 几乎把这种理念贯彻到了整个工具链。
不是只有 Parser
很多项目,只有 Parser。而 Yuku 已经开始布局完整生态。
目前已经包含:Parser
支持:JavaScript、TypeScript、JSX、TSX
输出兼容:ESTree / TS-ESTree AST。
Codegen
官方提供:
print()
strip()
minify()
不仅可以重新生成代码,还能:去除 TypeScript 类型、压缩代码、同时生成 Source Map
官方数据显示,开启 Source Map 时。
速度约为 Babel Generator 的 2.5 倍。
Analyzer
这是很多人最惊喜的部分。
Analyzer 内置:
- Scope
- Symbol
- Reference
- Closure
- Module Linking
也就是说,它不仅知道:
变量在哪声明
还能知道:
变量在哪里引用
属于哪个作用域
来自哪个模块
官方表示,这一部分相比传统方案,最高可达到 15 倍性能提升。
对 TypeScript 支持非常完整
官方特别强调,Yuku 并不是:能解析 TS 这么简单。而是完整支持现代 JavaScript 特性。
包括:TypeScript、JSX、TSX、Decorators、using、await using、Source Phase Imports、Deferred Imports 等等。
对于未来 ECMAScript 新特性,也保持持续跟进。
最狠的是测试
很多工具——快,但是兼容性一般。
Yuku 反而把:Correctness(正确性) 放到了第一位。
官方介绍:Parser 每天同步测试数据。
测试集来自:Test262、TypeScript Compiler、Babel 累计数万条测试用例。
目前:零失败、零 AST 不一致
这意味着:它不是为了 Benchmark 而快,而是在保证规范兼容的前提下追求性能。
Zig 为什么开始进入前端?
过去几年,Rust 几乎统治了前端基础设施。
例如:SWC、Oxc、Rspack、Turbopack、Rolldown
但 Zig 正开始成为另一股力量,原因很简单,很多开发者认为 Zig 拥有:更简单语言设计、更低抽象成本、更好的内存控制、更强编译期能力 非常适合编译器。
而 Yuku,正是目前 Zig 阵营最有代表性的 JavaScript 基础设施之一。
它会挑战 Oxc 吗?
目前来说,还谈不上。
因为 Oxc 已经拥有:
- Linter
- Formatter
- Transformer
- Minifier
- Language Server
整个生态更加成熟。
但 Yuku 已经证明了一件事:Zig 同样可以构建顶级 JavaScript 工具链。
未来几年,我们看到的竞争可能不再只是:
Rust vs Rust
而会变成:
Rust vs Zig
这对整个 JavaScript 工具链生态来说,未必是坏事,竞争越激烈,开发者受益越多。
最后
过去十年,JavaScript 工具链一直由:Babel、TypeScript、ESLint主导。
如今,新的基础设施正在快速迭代。Rust 没有停下、Zig 也开始发力、Yuku 或许还很年轻,GitHub Star 也远没有 Oxc 那么高。但它已经展示了一个值得关注的方向: 重新思考 JavaScript 编译器该如何设计。
如果你正在关注:
- JavaScript Compiler
- TypeScript
- Zig
- Oxc
- 新一代前端工具链
那么 Yuku 值得加入你的收藏夹。
GitHub: github.com/yuku-toolch…
官方文档: yuku.fyi/
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在前端的海洋里乘风破浪!