Назад

Вышел pnpm 12 на Rust 🚀

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

Вышел pnpm 12 на Rust 🚀

Главный по скорости пакетный менеджер стал ещё быстрее. В стабильном 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

пошутил Зольтан Кочан

Читать пост на Socket

Читать пост в официальном блоге

Уже успели протестить 12-ю версию на своих монорепах?

Скопировано