pnpm 核心团队发布了第 12 版的 alpha 构建版本,该版本以原生 Rust 二进制文件运行,承诺安装速度比当前的 Node 版本快一个数量级。这一变化意义重大,因为 CI 任务的完成速度将大大加快。
为什么重写至关重要
pnpm 通过使用内容寻址存储(content-addressable store)和严格的 node_modules 布局,已经使其区别于 npm 和 Yarn。然而,每个命令仍然会启动一个 Node.js 进程,在开始任何文件操作之前都会产生固定的启动成本。通过将繁重的核心代码迁移到 Rust,团队消除了这一启动步骤,并利用了 Rust 并行执行大量文件操作的能力,这是单个 JavaScript 线程无法比拟的。
数据背后的真相
pnpm 团队提供的基准测试显示,在三种常见场景下,耗时均大幅下降:
- 热安装(重复运行): 从 381 ms 降至 12 ms。
- 无缓存安装: 从 460 ms 降至 40 ms。
- 全新安装(完整依赖树): 从 6.5 s 降至 2.2 s。
热安装速度提升 30 倍,将直接转化为更快的 CI 任务和更紧密的开发者反馈循环。
保持不变的部分
此次重写是移植而非重新设计。所有现有的 flag、lockfile 格式以及严格的 node_modules 结构都保持不变。项目可以像以前一样继续运行 pnpm install;唯一可见的区别应该是速度。由于公共 API 没有变化,迁移过程预计将是无痛的。
如何立即尝试
这一过渡是分阶段进行的。在当前的 v11 版本中,开发者可以通过启用 “pacquet” 后端 flag 来选择性使用实验性的 Rust 后端。在 v12 中,Rust 引擎将成为获取包并将其链接到工作区的默认引擎。Alpha 版本已发布在 next-12 标签下;目前尚不建议在生产环境中使用,但感兴趣的用户可以通过单个命令进行安装并开始测试。
风险与注意事项
即便 API 接口保持简洁,Alpha 版二进制文件仍带有常见的局限性:测试有限,且可能存在边缘情况下的回归问题。
更广泛的趋势
pnpm 的这一举动反映了前端工具链中日益增长的一种模式。诸如 Biome 和 Oxc 等项目也已将核心组件用编译型语言重写,以缩短开发者工作流中的毫秒级延迟。
