BetaWeekly digests are a beta — we're trying something new. Feedback welcome.
pnpm hardens installs and globals while Turborepo tightens cache correctness
October 26 – November 1, 2026
pnpm shipped five releases spanning two majors, closing two security holes, adding dotenv-style env loading and global peer checks, and fixing globals, packaging, and Docker permissions; Turborepo, meanwhile, went after cache hashing correctness.
The week at a glance
Replay the weekpnpm's security and install-integrity week
pnpm spent the week closing holes and shoring up trust in what actually lands on disk. Two vulnerabilities got patched: a registry response with too many content encodings could crash the client — now fixed via an undici bump in the crash-hardening patch — and zstd decompression and signing flaws were closed alongside several features. Install correctness got equal attention: repeat installs now notice changes to local dependencies instead of quietly reusing stale state, the install worker pool sizes itself by the container's CPU quota so CI boxes behave, and workspaces that mix in Cargo crates no longer hang on a cold store.
Globals, stores, and packaging
Global installs had a rough patch and got cleaned up. Globally installed commands now find the dependencies they were hoisted with, and pnpm peers check grew a --global flag so you can audit peer warnings on globally installed packages after an update. A nastier footgun is gone too: store prune no longer wipes sibling stores when cacheDir points at their parent directory. On the publishing side, pnpm pack respects files exclusions by name the way npm does, so a !dist/index.js entry stays excluded even when globs would otherwise pull it in.
Config and environment ergonomics
The feature work landed in the minor release that also fixed a Docker permission bug: a repeatable global --env-file flag loads dotenv-style files before any command runs, with later files overriding earlier ones and existing environment variables preserved. The same line of releases symlinks pnpm-lock.yaml in some cases, adds pnpm setup --no-modify-path for people who manage their own shell config, and adds dependency-group selectors and wildcards to overrides. pnpm outdated and pnpm update also learned to report runtime, package-manager, Cargo, and Python versions, making them a broader staleness check than a JavaScript-only one. And Docker images no longer ship files other users can't read, which matters for anyone running installs as a non-root user.
Turborepo tightens cache correctness
Turborepo's canary focused narrowly on making the cache tell the truth. Its cache-correctness work hashes symlink input contents within repository boundaries, Bun patch contents, tracked outputs used as task inputs, and executable permissions behind a future flag — the kind of detail that decides whether a cache hit is safe or silently wrong. Local restores got sturdier too: the restore manifest is written before returning, and cached symlinks are restored even when outputs already exist on disk. There's also a trust-side cleanup, distrusting a compromised intermediate certificate authority and scoping saved Vercel credentials to Vercel endpoints only.
Together the week reads as maintenance with teeth: pnpm closed the gaps that bite in CI and shared hosts, and Turborepo attacked the class of bugs where a cache makes you faster and wrong at the same time.