$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 类排序以及插件可扩展性是否会阻碍全面采用。
  • 人们对工具链中的“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 是否算是这类工作的“一笔划算交易”。