pnpm、pacquet による Rust 再実装ロードマップ

390文字
2分
編集

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-onlypnpm-lock.yaml を生成し、pacquet install --frozen-lockfilenode_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 へ拡大する想定である。

#参考文献