期間: 2026-09-28 〜 2026-09-30 · PR 51 件(新機能 0 / 変更・修正 28 / その他 23)

この回について

取り込み期間は 2026-09-28T07:23:07Z 〜 2026-09-30T00:33:17Z。maxPrs: 30 を超えたため、詳しく確認したのは 30 件で、残り 21 件はタイトルだけの簡易情報(brief: true)として「その他」に 1 行ずつ載せている。詳しく確認した 30 件のうち、CI・ドキュメント公開ワークフローだけの修正 2 件(#16314、#16389)は「その他」に回した。

期間中に安定版 v12.8.0・v12.8.1・v11.28.1・v11.28.2・v10.34.6 とプレリリース pnpr@0.1.0-alpha.14 が公開された。各 PR の収録状況は inbox の表記をそのまま書いている。

新機能

なし

変更・修正

local ディレクトリ依存のファイルが実行ビットを失う問題を修正(#16318)

Before

pnpm 12.8.0 では、file: のディレクトリ依存や injected なワークスペースパッケージのファイルを、ストアの -exec 接尾辞から実行可否を判断してコピーしていた。プロジェクトのファイルにはその接尾辞が無いため、0755 のスクリプトが 0644 で配置されていた。

After

pnpm 11 と同じく、CAFS の配置(files/<2 桁の 16 進>/<digest>[-exec])を持つファイルだけにストアのモードを適用し、それ以外は元のモードを保つ。

📦 v12.8.1 · トピック: インストール

インストールするものが無いプロジェクトで pnpm run/exec 前のインストールを省略(#16317)

Before

ワークスペースの状態ファイルが無いと、pnpm run・pnpm exec は必ずインストールを起動し、インストールするものが無いプロジェクトでも node_modules と pnpm-lock.yaml を書いていた。

After

依存(engines.runtime/devEngines.runtime を含む)、autoInstallPeers で取得する peer、インストール系のライフサイクルスクリプト、読み込まれる pnpmfile のどれも無ければ「最新」とみなし、インストールせずに実行する。

📦 v12.8.1 · トピック: タスク実行・並行処理

ハッシュ化された peer 接尾辞で pnpm dedupe が収束しない問題を修正(#16335)

Before

peer 接尾辞が長くハッシュ化されたパッケージでは、lockfile から読み戻す peer の固定が明示的な接尾辞より少なく、pnpm dedupe を実行するたびにキーが 2 通りに入れ替わっていた(pnpm dedupe --check が常に失敗)。

After

ハッシュ化された接尾辞からも、スナップショットの transitivePeerDependencies と各 peer 提供元の peer を使って同じ固定を復元する。pnpm v11 は影響なし。

📦 v12.8.1 · トピック: 依存関係解決

プロジェクトの共通の祖先がファイルシステムのルートのとき何もインストールしない問題を修正(#16334)

Before

共有 lockfile のワークスペースで、プロジェクトの共通の祖先が / や C:\ だと、is-subdir の判定ですべてのプロジェクトが除外され、pnpm install/add/remove/update/import が何もせずに成功を報告していた。

After

修正された is-subdir@2.0.1 に更新し、これらのプロジェクトもインストールされる。影響を受けるのは TypeScript 版の pnpm v11 のみ。

📦 v12.8.1 · トピック: ワークスペース

pnpm update -g --latest が保存済みの範囲を超えて更新するように(#16325)

Before

グローバルパッケージの更新候補が既存のマニフェストの範囲を引き継ぐため、新しいバージョンがあっても Already up to date と表示されることがあった。

After

レジストリのパッケージは @latest で解決する。レジストリ以外の指定やダウングレードの固定はそのまま保つ。

📦 v12.8.1 · トピック: CLI コマンド

injected なワークスペース依存の peer がワークスペースのリンクでも frozen install を通すように(#16346)

Before

12.7.0 以降、injected なワークスペースパッケージの peer を利用側がワークスペースから提供すると(link:<dir> として記録)、pnpm install --frozen-lockfile が生成したばかりの lockfile を local dependency "lib" at "lib" is outdated で拒否していた。満たされない peer でも同じく失敗した。

After

鮮度チェックは、宣言された peer の範囲と peerDependenciesMeta だけを packages: の記録と比較する。v12 のみの修正。

📦 v12.8.1 · トピック: ワークスペース

フィルタ付きインストール後に verifyDepsBeforeRun が誤って再インストールする問題を修正(#16324)

Before

フィルタ付きインストールの後、pnpm-lock.yaml の更新時刻が新しくなるだけで(内容が同じでも)依存が古いと判定され、pnpm run がスクリプト有効でワークスペース全体を再インストールしていた(Docker の COPY 後など)。

After

ワークスペースの状態が filteredInstall を記録していれば、そのインストールで実際に配置したものと lockfile を比較する。v11・v12 の両方を修正。

📦 v12.8.1 · トピック: タスク実行・並行処理

変種の統合後に peer 依存側のキーを付け直し、pnpm dedupe を冪等に(#16359)

Before

dedupe_peer_dependents が変種を統合したあとも他のノードのキーを変えないため、キーが実在しない peer を名指しし続け、pnpm dedupe の直後の pnpm dedupe --check が失敗していた(12.4.2 から)。

After

統合後に残ったノードの peer 接尾辞を、実際に解決している peer の名前で付け直す。

⏳ 未リリース · トピック: 依存関係解決

不明なオプションを拒否する前に、固定された pnpm へ引き渡すように(#16360、#16362)

Before

別バージョンの pnpm を固定したプロジェクトで、グローバルの pnpm が知らないオプションを切り替え前に拒否していた。例えばグローバルの pnpm 11 では、固定された pnpm 12 が対応する pnpm install --auto-dedupe が失敗した(逆方向も同様)。

After

v11 は切り替えが起きなかったときだけ不明なオプションを報告し、v12 は clap が不明な引数を報告したときに argv から切り替えを再試行する。続く #16362 で、c(config)や ic/clean-install/install-clean(ci)の別名と、-gE のようなまとめた短縮フラグ内の -g を正しく扱うようにした。

⏳ 未リリース · トピック: ランタイム管理

injected なワークスペース依存を peer 変種の統合後に重複排除(#16361)

Before

injectWorkspacePackages: true の新規インストールで、pnpm 11 なら link: になるワークスペース依存が、peer 接尾辞付きの file: コピーとして importers に記録されることがあった。

After

peer 依存側の重複排除を先に実行してから injected 依存の重複排除を行い、link: として記録する。v12 のみの修正。

⏳ 未リリース · トピック: 依存関係解決

undici を 7.29.1 に更新(#16363)

Before

lockfile が undici 7.29.0 を固定しており、GHSA-3wwx-pv8p-q78v(moderate、>=7.28.0 <7.29.1)の対象だった。

After

カタログの範囲を ^7.29.1 に上げた。undici を同梱する TypeScript 版 CLI が対象で、Rust 版 CLI は undici を使わない。

⏳ 未リリース · トピック: セキュリティ

frozen install で古い Cargo.lock を拒否(#16357)

Before

cargo.enabled: true のとき、Cargo.lock が Cargo.toml の要求を満たさなくなっていても pnpm install --frozen-lockfile が成功していた(ファイルの存在しか確認していなかった)。

After

各ワークスペースメンバーの依存と Cargo.lock の依存辺を照合し、合わなければ ERR_PNPM_OUTDATED_LOCKFILE でメンバー・クレート・要求・固定バージョンを示して失敗する。Rust 版 v12 のみ。

⏳ 未リリース · トピック: マルチエコシステム設定

CA 証明書の無いシステムでも NODE_EXTRA_CA_CERTS を追加扱いに(#16367)

Before

node:24-slim のように CA 証明書の無い Linux で NODE_EXTRA_CA_CERTS を設定すると、その CA だけを信頼するクライアントになり、レジストリへのリクエストが UnknownIssuer で失敗していた。

After

まず追加のルートなしでシステムのストアを確認し、失敗したら同梱の Mozilla ルートに追加のルートを加えて使う。

⏳ 未リリース · トピック: インストール

git 依存の準備で pmOnFail を尊重(#16382)

Before

pnpm のバージョンを固定した git 依存は、--pm-on-fail=ignore でも pnpm dlx --package pnpm@x pnpm install で準備されていた。NixOS ではダウンロードした汎用バイナリが起動できず、インストールできなかった。

After

pmOnFail が download 以外なら、実行中の pnpm を直接呼ぶ pnpm シムを使い、何もダウンロードしない。設定は入れ子の pnpm install にも pnpm_config_pm_on_fail として渡る。v12 のみ。

⏳ 未リリース · トピック: ランタイム管理

重複排除された injected ワークスペースパッケージの peer を pnpm deploy で束縛(#16381)

Before

injectWorkspacePackages: true で、peer を dev dependency にも書いたワークスペースパッケージがあり、デプロイ対象にその peer の別バージョンもあると、pnpm deploy が ERR_PNPM_DEPLOY_AMBIGUOUS_PEER で失敗していた。

After

injected なワークスペースでは、デプロイ対象のグラフに含まれていれば、その peer をパッケージ自身の dev dependency の解決に束縛する。TypeScript 版・Rust 版の両方を修正。

⏳ 未リリース · トピック: パック・公開

ppc64le のリリースバイナリが起動時にクラッシュする問題を修正(#16384)

Before

Linux ppc64le 向けのリリースバイナリが、pnpm --version の出力前にクラッシュしていた(公開済みの v12.8.1 で再現)。古い binutils が gettid などの呼び出しを誤ってリンクしていた。

After

この対象だけ Rust 同梱の LLD でリンクし、新しい libc の QEMU 上でのスモークテストをリリース工程に追加した。

⏳ 未リリース · トピック: ランタイム管理

Windows 以外では Path ではなく PATH だけをスクリプトに渡す(#16371)

Before

pnpm 12 はどのプラットフォームでも PATH を大文字小文字を区別せずに探していた。macOS・Linux で PATH と Path の両方があると、どちらがスクリプトに渡るかが一定せず、exec: node: not found で失敗するスクリプトがあった。

After

Windows 以外では PATH だけに一致させる(Windows は従来どおり区別しない)。pnpm exec などでも POSIX の Path を消さずに子プロセスへ渡す。

⏳ 未リリース · トピック: タスク実行・並行処理

シムのヘルパーが command -p で見つからないとき PATH にフォールバック(#16379)

Before

Nix のビルドサンドボックスのように command -p がヘルパーを見つけられない環境で、シムが動かなかった。

After

フィルタ済みの PATH にフォールバックする(PATH にある場合のみ)。POSIX のシムと pnpm/pn/pnpx/pnx ランチャー、v11 の cmd-shim が対象。

⏳ 未リリース · トピック: インストール

スクリプトのプロセスグループに残ったゾンビを待ち続けないように(#16372)

Before

12.6.0 以降、pnpm を PID 1 にしたコンテナで pnpm run が入れ子になると、SIGTERM でスクリプトが終わっても pnpm が終了せず、SIGKILL まで残っていた(docker stop が終了コード 137)。

After

プロセスグループに残ったゾンビを待たずに終了し、スクリプトの終了直後に終了コード 143 で止まる。

⏳ 未リリース · トピック: タスク実行・並行処理

childConcurrency の既定値を 5 に(#16369)

Before

Rust 版(pacquet)では childConcurrency の既定値が min(4, availableParallelism()) で、pnpm 11 とドキュメントの 5 と食い違っていた。

After

既定値を 5 にした。workspaceConcurrency の既定値は min(4, コア数) のまま。

⏳ 未リリース · トピック: タスク実行・並行処理

プロジェクトの pnpm-workspace.yaml の globalShims を無視(#16368)

Before

ドキュメントではプロジェクトのファイルは無視されるとしているのに、プロジェクトの pnpm-workspace.yaml の globalShims が設定に取り込まれ、pnpm config get globalShims や pnpm shim list などに反映されていた。

After

プロジェクトのマニフェストの globalShims は捨てる。pnpm home にある pnpm-workspace.yaml は信頼できる場所として引き続き読む。

⏳ 未リリース · トピック: セキュリティ

pnpm store prune が期限切れの dlx キャッシュを先に削除(#16387)

Before

期限切れ(dlxCacheMaxAge、既定 1 日)の pnpm dlx キャッシュをストアの削除の後で消していたため、それらだけが使うパッケージが次の pnpm store prune まで残っていた。

After

v11・v12 とも dlx キャッシュを先に削除する。v11 では、期限切れの dlx エントリがストアの唯一の登録プロジェクトだった場合は残る制限がある。

⏳ 未リリース · トピック: ストア

injected なワークスペース依存でも再インストールの高速経路を使う(#16404)

Before

v12.7.0 以降、自分のプロジェクトを inject するワークスペース(injectWorkspacePackages: true または dependenciesMeta.*.injected)では、何も変わっていなくても毎回フルインストールして injected プロジェクトをコピーし直していた。

After

高速経路をスキップするのは sharedWorkspaceLockfile: false のときだけにし、鮮度チェックはインストール対象のプロジェクト一覧のマニフェストを先に使う。変更が無ければ「Already up to date」になる。

⏳ 未リリース · トピック: ワークスペース

flate2 の zlib-rs バックエンドを有効化(#16235)

Before

tarball の gzip 展開に flate2 の既定のバックエンドを使っていた。

After

zlib-rs 機能を有効にし、パッケージの展開を速くする。利用者から見える挙動の変更は無い。

⏳ 未リリース · トピック: インストール

autoDedupe と frozen install で pnpm run のたびにインストールが走る問題を修正(#16396)

Before

autoDedupe: true のワークスペースを frozen lockfile でインストールすると、記録された dedupe の基準が失われ、verifyDepsBeforeRun が pnpm run/pnpm exec のたびにインストールを起動していた。CI ではそのインストールも frozen なので基準が記録されず、毎回繰り返した。

After

何もしない frozen install でも記録済みの autoDedupe を引き継ぎ、起動するインストールが frozen の場合はこの項目を比較しない。

⏳ 未リリース · トピック: タスク実行・並行処理

minimumReleaseAge で latest が新しすぎるとき、同じメジャーのプレリリースに戻るように(#16407)

Before

minimumReleaseAge で安定版の dist-tag が指すバージョンが隠れると、タグは他の安定版にしか移れなかった。1.0.0-beta.x を latest にしてきたパッケージが 1.0.0 を出した直後は、latest が 0.0.1 に戻っていた(pnpm create vinext-app@latest が ERR_PNPM_DLX_NO_BIN で失敗)。

After

候補を段階で順位付けし、同じメジャーの安定版が無ければ、そのメジャーのプレリリース(対象より前)を下位メジャーの安定版より優先する。v11・v12 の両方を修正。

⏳ 未リリース · トピック: 依存関係解決

Unix でユーザーごとのロックファイルを XDG_RUNTIME_DIR に置く(#16406)

Before

pnpm v12 はストア操作のロックなどを /tmp に置くため、セッションごとのディレクトリにしか書けないサンドボックス(コーディングエージェントが使う macOS Seatbelt など)では、ストアに触れるコマンドが ERR_PNPM_STORE_DIR_OPEN_OPERATION_LOCK で失敗していた。

After

$XDG_RUNTIME_DIR が現在のユーザーが所有する絶対パスのディレクトリなら、そこをロックの置き場所にする(他ユーザーが書き込める・所有者が書き込めないディレクトリは使わない)。変数が無ければ従来どおり /tmp。v12 のみ。

注意

XDG_RUNTIME_DIR のあるプロセス(ログインシェル)と無いプロセス(cron の pnpm store prune など)は、互いのロックを待たなくなる。

⏳ 未リリース · トピック: ストア

その他

  • Windows でも Rust のドキュメントをビルドし CI で確認(#16314)📦 v12.8.1
  • ドキュメントに変更が無いときは公開の push を省略(#16389)⏳ 未リリース
  • perf(cli): rayon のグローバルプールを 16 スレッドに制限(#16316)📦 v12.8.1
  • chore(release): 11.28.2、pacquet 12.8.1(#16349)📦 v12.8.1
  • chore: 依存関係・Node.js・pnpm・GitHub Actions の更新(#15869)⏳ 未リリース
  • perf(cli): インストールの高速経路の前に rayon プールのサイズを決める(#16344)⏳ 未リリース
  • perf(registry): 繰り返しのバージョン選択の時間を 66〜82% 削減(#16351)⏳ 未リリース
  • docs: 製品ドキュメントを実装の隣に移動(#16385)⏳ 未リリース
  • perf(resolver): 走査と peer の処理でパッケージ ID を共有(#16345)⏳ 未リリース
  • docs: 移行したドキュメントへの貢献をまとめる(#16393)⏳ 未リリース
  • docs: v11・v12 のサイドバーの Introduction カテゴリを平坦化(#16400)⏳ 未リリース
  • perf(deps-resolver): 同時に起きた最初のキャッシュミスを wanted キーごとに 1 回だけ実行(#16370)⏳ 未リリース
  • docs(changeset): #16370 のパッチリリースノートを追加(#16402)⏳ 未リリース
  • test(package-manager): lockfile ディレクトリ外の宣言済み・未宣言の importer のテスト(#16401)⏳ 未リリース
  • perf(package-manager): hoisted の新規インストールでディレクトリクローンのキャッシュを使う(#16399)⏳ 未リリース
  • fix(npm-lifecycle): 他のスレッドがまだ動いているゾンビは待ち続ける(#16392)⏳ 未リリース
  • fix: allowBuilds 設定を検証(#16398)⏳ 未リリース
  • docs: 設定した scriptShell が shellEmulator より優先されることを明記(#16391)⏳ 未リリース
  • test: エコシステム e2e の cron で StackBlitz WebContainer 上の pnpm を実行(#16260)⏳ 未リリース
  • fix(cli): プロジェクトのマニフェストにあるマシン単位の設定を拒否(#16366)⏳ 未リリース
  • fix(publish): npm の README ファイル名を認識(#16352)⏳ 未リリース
  • fix(deploy): ワークスペースルートのパッケージマネージャー固定をデプロイ先のマニフェストにコピーしない(#16405)⏳ 未リリース
  • chore(release): pacquet 12.8.2(#16412)⏳ 未リリース