|
| 1 | +--- |
| 2 | +date: 2026-07-28 |
| 3 | +repo: pnpm/pnpm |
| 4 | +size: L |
| 5 | +title: "pnpm gets faster, quieter dedupe and parity fixes" |
| 6 | +excerpt: "Major resolver and CLI work speeds up safe override installs, preserves peer contexts, and aligns dedupe/license output with pnpm." |
| 7 | +commits: 15 |
| 8 | +authors: [zkochan] |
| 9 | +commit_authors: {"9821162": zkochan, "3e6f930": zkochan, "2b03cea": zkochan, "0457ad9": zkochan, "b2f42ee": zkochan, "1e6f6f4": zkochan, "539c83c": zkochan, "09b7bbe": zkochan, "e7ec776": zkochan, "7fd2197": zkochan, "d472ffb": zkochan, "3563b13": zkochan, "1c1442a": zkochan, "43e6a4a": zkochan} |
| 10 | +--- |
| 11 | + |
| 12 | +### **Safe override updates now reuse locked resolutions** (2b03cea) |
| 13 | +pnpm can now fast-path certain override changes instead of fully re-resolving the graph. Exact version replacements and dependency-removal overrides reuse compatible lockfile entries, prune obsolete edges, and only resolve what’s truly needed, which should make many override-heavy installs noticeably faster. |
| 14 | + |
| 15 | +### **Dedupe keeps locked peer contexts intact** (b2f42ee) |
| 16 | +This fixes a class of peer-deduping regressions where reused dependencies could lose their original optional peer suffix context. The resolver now tracks hoisted providers per importer so shared leaves don’t leak peer choices across workspaces. |
| 17 | + |
| 18 | +### **pacquet finishes more output parity work** (1e6f6f4) |
| 19 | +The Rust CLI’s license, dedupe, and pre-run verification commands were brought closer to pnpm’s output conventions. That includes better collation and report spacing, progress accounting, and status rendering so tooling sees more pnpm-like behavior. |
| 20 | + |
| 21 | +### **Verifier-triggered installs preserve the current lockfile** (539c83c) |
| 22 | +pnpm now routes pre-run verification installs through the normal install path without rewriting an already-fresh lockfile. This keeps lifecycle scripts running before the target command while avoiding unnecessary peer-graph regeneration. |
| 23 | + |
| 24 | +### **Catalog dedupe no longer clobbers valid pins** (09b7bbe) |
| 25 | +Dedupe now preserves catalog snapshots while rebuilding dependency edges, and only reuses a catalog version when the recorded specifier still matches. That prevents valid catalog pins from being lost during a dedupe pass. |
| 26 | + |
| 27 | +### **Dedupe check reporting now matches pnpm** (7fd2197) |
| 28 | +The lockfile-only dedupe check now emits progress and structured error events instead of ad hoc output. This makes default, NDJSON, and silent reporters behave consistently while keeping the same exit status. |
| 29 | + |
| 30 | +### **License reports keep the right metadata** (d472ffb) |
| 31 | +pacquet now normalizes author strings, derives repository-based homepages, and preserves pnpm’s package-first license grouping order. That improves report stability and makes the generated metadata more accurate. |
| 32 | + |
| 33 | +### **Recursive script runs print the filtered command** (9821162) |
| 34 | +The recursive runner now carries reporter silence state correctly so filtered runs still echo the script command unless `--silent` is set. This closes a long-standing CLI parity gap. |
| 35 | + |
| 36 | +### **Locked peers survive dedupe re-resolution** (3563b13) |
| 37 | +Peer-provider names encoded in lockfile suffixes are now protected during workspace lockfile rebuilding. That keeps importer-local optional peer contexts stable when `pnpm dedupe` rewrites the tree. |
| 38 | + |
| 39 | +### **Alias-aware license scanning avoids collisions** (1c1442a) |
| 40 | +The license scanner now keys nodes by dependency path so aliased packages with the same name don’t overwrite each other. `pnpm licenses list` should now report every installed version correctly. |
| 41 | + |
| 42 | +### **Hoisted dependency metadata now matches pnpm** (43e6a4a) |
| 43 | +Hoisted dependencies are serialized with insertion-order semantics instead of sorted maps, and the hoist walker now mirrors pnpm’s ownership/order rules more closely. This fixes mismatches in `.modules.yaml` output. |
| 44 | + |
| 45 | +### Other misc changes |
| 46 | +- Test fixture made platform-independent for override-status checks (3e6f930) |
| 47 | +- pacquet beta release lane move (0457ad9) |
| 48 | +- Dependency / workflow bumps and lockfile refreshes (e7ec776) |
0 commit comments