Вышел pnpm 12 на Rust 🚀
pnpm 12 переносит движок установки на Rust: быстрый старт, ускоренные установки, детерминированные циклы и breaking changes.

Главный по скорости пакетный менеджер стал ещё быстрее. В стабильном pnpm 12 движок установки полностью перенесли с TypeScript/Node.js на Rust.
Это не переосмысление интерфейса, а 1:1 порт. Команды, флаги, настройки, формат локфайла и структура node_modules остались прежними — вы просто обновляетесь и получаете ускорение без боли миграций.
Главные изменения:
- Мгновенный холодный старт: pnpm поставляется как нативный бинарник под вашу платформу без оверхеда на запуск рантайма Node.js.
- Ускорение до 30 раз на «тёплых» установках: Повторная проверка и линковка уже скэшированных зависимостей упала с ~470 мс до 15 мс. Холодная установка монорепозиториев ускорилась в 2–3 раза.
- Детерминированные циклические зависимости: pnpm 12 строго и нативно разруливает циклы в пакетах. Локфайлы теперь байт-в-байт одинаковые независимо от порядка обхода, а резолв peer-зависимостей стал в 2–3 раза быстрее с меньшим потреблением памяти (-25%).
- Project-aware global bins: Глобальные бинарники (
node,deno,bun) теперь умеют автоматически подстраиваться под версию, зафиксированную в конкретном проекте.
Breaking Changes: Выпилили устаревшие CLI-флаги (например, --prefer-offline), убрали молчаливый игнор неизвестных ключей в pnpm-workspace.yaml и повысили минимальные требования к ОС.
Обновиться можно через pnpm self-update или npm i -g pnpm@12.
Переписать pnpm на Rust оказалось быстрее, чем мигрировать на ESM
пошутил Зольтан Кочан
Читать пост в официальном блоге
Уже успели протестить 12-ю версию на своих монорепах?