pnpm、pacquet による Rust 再実装ロードマップ
pnpm チームは GitHub Issue 上で pacquet による Rust 再実装の段階ロードマップを公開した。pacquet は pnpm の TypeScript 実装を Rust に移植するプロジェクトで、コードベースは pnpm モノレポへ統合され、pnpm と pacquet を同時に変更できる体制に移行している。
ロードマップは Stage 0 から Stage 3 まで四段階で構成される。
- Stage 0: pacquet の公開とベンチマーク掲載。pnpm サイトや README への言及は未完了。
- Stage 1(ヘッドレスインストーラ):
pnpm installまたはpnpm install --lockfile-onlyでpnpm-lock.yamlを生成し、pacquet install --frozen-lockfileがnode_modulesを展開する。ワークスペース、ホイスティング、global virtual store、nodeLinker: hoisted、named registries など Tier 1〜4 の主要項目は完了。残りはログイベントの backfill(pnpm/pacquet#347)が中心。 - Stage 2(依存解決):
pacquet installが--frozen-lockfileなしのpnpm installと同等になる段階。bare-specifier 解析、再帰解決、npm/git/tarball/workspace/catalog 各プロトコル、peer 解決、.pnpmfile.cjsフック、add/update/remove/outdated/whyは実装済み。未完了はallowedDeprecatedVersionsの deprecation 警告、allowNonAppliedPatches、ロックファイルのバイト同一再解決、一部ログの出力 parity など。 - Stage 3(非 install コマンド):
run/exec/dlx/store/init/patch系 /rebuild/set-script/runtimeなどは CLI ハンドラあり。audit/publish/list/config/loginなどは未移植。
Stage 1 と Stage 2 の間、および Stage 2 完了後には、pnpm 本体へ opt-in の install バックエンドとして pacquet を組み込む統合マイルストーンが計画されている。例として install-backend=pacquet 設定や @pnpm/headless 境界への Node N-API アドオンが挙げられ、まず --frozen-lockfile、その後通常の pnpm install へ拡大する想定である。