pnpm 12: полная переработка на Rust с обратной совместимостью
Pnpm 12.0
Вышел pnpm 12 — стабильная версия, полностью переписанная на Rust. Это не миграция: все команды, флаги, настройки и формат lockfile из pnpm 11 сохранены. Среди ключевых изменений — каноническое разрешение циклических зависимостей, ускорение peer resolution в 2–3 раза, поддержка ревизий реестра для замены артефактов без изменения версий, установка других пакетных менеджеров (npm, Yarn, Bun), а также улучшенная обработка git-зависимостей и распознавание опечаток в настройках.
Каноническое разрешение peer-зависимостей теперь делает lockfile чистой функцией графа зависимостей: перестановка импортеров, изменение порядка зависимостей и повторные установки дают байт-идентичные lockfile, чего раньше не было.
- BlueGreenMagick
> Это переписывание pnpm на Rust
Их бенчмарки[0] показывают, что чистая установка с lockfile примерно в 3 раза быстрее (7с -> 2.2с), а установка без изменений — примерно в 29 раз быстрее (517мс -> 18мс)
- 1matin
Когда видишь много длинных тире (—) в тексте, есть большая вероятность, что это написал Claude.
- deanc
Мне интересно, так как это не упоминается, есть ли какие-то улучшения производительности в рамках этого переписывания?
- norman784
Я пришел к выводу, что скучное — это достаточно хорошо. Для меня NPM — лучший инструмент: он не такой быстрый, но скорость установки не так уж плоха, учитывая, как часто мне нужно запускать с нуля, разница не имеет значения. Он стабилен и является менеджером пакетов по умолчанию в Node, так что мне не нужно заморачиваться с установкой других инструментов в CI и т.д. Мой опыт для долгоживущих проектов — придерживаться стандартных решений, потому что через несколько лет сторонние инструменты меняются. Так случилось с моей командой с Yarn classic; теперь, когда мы на ванильном Node и NPM, нет проблем. То же самое с сторонними зависимостями: просто используй как можно меньше.
- fwlr
Пришлось проверить календарь, чтобы убедиться, что это не первое апреля. Нет, сейчас август. Хм.
Я не понимаю, как мейнтейнеры pnpm могут не знать историю с bun и переписыванием на Rust через ИИ... так что я озадачен, сбит с толку и вообще не могу понять это решение.