$20k 奖金已被领取
一个用于构建与 Prettier 兼容的基于 Rust 的 JavaScript 格式化器的 $20k 奖金,已被 Biome 项目领取;它在匹配 Prettier 大部分输出的同时带来了惊人的速度提升(通常快数十倍)。评论者认为,这既能推动原始 JavaScript 版 Prettier 的性能优化,也能通过独立实现发现边缘情况 bug,并通过共享工具链减少“配置地狱”。讨论的很大一部分集中在 Prettier 高度强势的格式化风格上——尤其是激进换行以及移除括号之类会改变语义的行为——同时也涉及生态碎片化、Rust 在工具链中的作用,以及核心维护者相对于其工作影响而言报酬过低等更广泛的问题。
Biome / Rust 移植与性能
- Biome(基于 Rust,最初是 Rome)达到了与 Prettier 测试套件约 95% 的兼容性,并领取了这笔 $20k 奖金。
- 讨论重点提到显著的速度提升:线程中的基准测试显示,Biome 在某些仓库上比 Prettier 快数十倍,并且在使用多核时也比 dprint 更快。
- 一些人认为,Rust 在解析/字符串密集型工作负载上天然就能带来很大的收益;另一些人则认为“Rust = 快”部分只是炒作,性能仍取决于实现细节。
奖金的动机与效果
- 设立这笔奖金的目的被概括为:
- 获得一个高性能、与 Prettier 兼容的替代方案。
- 用外部实现作为“健全性检查”,找出 Prettier 中的 bug 和可疑决策。
- 通过真正的竞争,推动 JS 实现进行性能优化。
- 据说有一位维护者因此被“nerd-sniped”,转而疯狂分析并加速了 Prettier 本身。
格式化哲学与痛点
- 许多人喜欢“无配置”的强观点格式化,以消除无休止的争论,类似 gofmt/Black。
- 也有人强烈不喜欢 Prettier 的行为,尤其是:
- 基于打印宽度的激进换行,导致 diff 很吵、代码评审更困难。
- 拒绝尊重作者选择的换行与语义分组(链式调用、模板字面量、数学表达式)。
- 以会掩盖意图的方式修改括号和布局。
- 有些人会使用
// prettier-ignore注释,或干脆禁用 Prettier;另一些人则更喜欢替代格式化器(dprint、编辑器格式化器、deno fmt)。
生态、兼容性与采用
- Biome 因进展迅速且兼容性接近而受到称赞,但用户也在询问:
- Prettier 配置(
.prettierrc)兼容性和迁移路径。 - Tailwind CSS 类排序以及插件可扩展性是否会阻碍全面采用。
- Prettier 配置(
- 人们对工具链中的“Rust 浪潮”普遍感到兴奋(类比 Python 里的 Ruff 等),同时也担心基于 Rust 的工具吸引到的贡献者可能比 JS 工具更少。
WASIX / Wasmer 支线讨论
- 一条很长的分支讨论了通过 Wasmer 将 Biome 编译到 WASIX:
- 支持方:沙箱化、接近原生的执行,以及可控的文件系统/网络访问;更完整的类 POSIX API(线程、socket、子进程)。
- 批评方:认为 WASIX 是从 WASI 标准努力中分裂出来的、可能具有“敌意”的分叉,并对治理和激励机制表示担忧。
- 双方都同意 WASI Preview 2 目前还缺少一些必要功能;争议点在于是否有理由分叉,以及这会如何影响生态系统的一致性。
开源资助与价值
- 评论者指出,关键维护者每月大约拿到 ~$1.5k,与 Prettier 提供的价值(在 JS/TS 项目中的无处不在)相比非常低。
- 线程中有相当一部分在讨论现实中的外包费率($100–$500+/小时),以及 $20k 是否算是这类工作的“一笔划算交易”。