The performance improvements are most pronounced when caches or node_modules already exist. In pnpm's own benchmarks, a clean install of a file-heavy fixture dropped from 8.2 seconds under the previous implementation to 5 seconds with Rust. A repeated install with cache, lockfile and node_modules warm fell from 472 milliseconds to 15 milliseconds.
Independent testing by Socket on Vercel's 21-project Turborepo workspace — containing 1,670 packages — recorded median install-time reductions of 64.4% to 90.5% across six scenarios. However, the native Corepack artifact was larger, making its first uncached startup 11.1% slower, though cached startup improved by 74.7%.
The release introduces project-aware global binaries, allowing a globally installed Node.js, Deno or Bun to follow the runtime pinned by the current project. pnpm can also provision npm, Yarn and Bun itself, including the package manager requested by a Git-hosted dependency. Deterministic cycle handling produces byte-identical lockfiles.
Developers can install pnpm 12 using "pnpm self-update next-12". The latest npm tag still points to pnpm 11, and Homebrew, winget, Scoop and Chocolatey did not offer version 12 at launch.
Teams should review pnpm's compatibility guide before upgrading. The most likely CI-breaking change is the removal of "pnpm install --resolution-only", now replaced by "pnpm peers check". Git dependencies hosted on GitHub, GitLab or Bitbucket now resolve through canonical HTTPS URLs, while private SSH access should be configured through Git URL rewriting. Linux now tries hardlinks before reflinks, and unknown keys in pnpm-workspace.yaml are reported instead of silently ignored.