为什么用 Zig

2026-10-22,source nvm 的热启动多 113 ms,冷启动多 121 ms。ZNVM 是一个 Zig 二进制:没有垃圾回收,也没有异步运行时。nvm use 解析版本,并打印给 shell eval 的导出。

在这台 Linux 虚拟机上,shell 里的命令比 NVM 和 fnm 快。shell 启动比 NVM 快,比 fnm 慢。

测量

配对中位数,2026-10-22 15:38-15:40 UTC。4 核 KVM(Intel Xeon),Ubuntu 24.04。ZNVM ReleaseSafe,3.73 MiB,未 strip。方法:benchmarks/measure.py。样本:benchmarks/results/2026-10-22-cold-warm.json。冷启动每次丢掉页缓存,共 20 次。冷命令在已打开的 shell 里丢掉文件缓存。

管理器热启动冷启动list 热list 冷use 热use 冷
nvm113 ms121 ms559 ms557 ms158 ms221 ms
fnm1.58 ms4.70 ms1.26 ms6.10 ms1.35 ms6.19 ms
znvm3.31 ms5.01 ms0.61 ms3.18 ms0.84 ms3.44 ms

.nvmrc 中位数,热 / 冷:NVM 166 / 222 ms,fnm 1.41 / 5.20 ms,ZNVM 0.86 / 3.06 ms。shell 启动 p95,热 / 冷:NVM 115 / 128 ms,fnm 1.76 / 6.67 ms,ZNVM 3.64 / 9.28 ms。fnm 的 init 当时已经激活 Node v22.14.0。更早的 Node 22.13.1 安装(含下载,3 次:ZNVM 1241 ms,fnm 2317 ms,NVM 2327 ms)在 benchmarks/results/2026-10-22.json,这次没有重跑。

只支持 macOS 和 Linux。