Zespół rdzenny pnpm udostępnił wersję alpha 12, która działa jako natywny plik binarny Rust, obiecując czasy instalacji o rząd wielkości szybsze niż obecna wersja oparta na Node.js. Zmiana ta jest istotna, ponieważ zadania CI będą kończyć się znacznie szybciej.
Dlaczego przepisanie kodu ma znaczenie
pnpm już teraz wyróżnia się na tle npm i Yarn dzięki zastosowaniu magazynu adresowalnego treścią (content-addressable store) oraz rygorystycznej strukturze node_modules. Mimo to każda komenda wciąż uruchamia proces Node.js, co wiąże się z określonym kosztem startowym, zanim rozpocznie się jakakolwiek praca z plikami. Przenosząc najbardziej wymagające operacje do języka Rust, zespół eliminuje ten etap inicjalizacji i wykorzystuje zdolność Rusta do równoległego wykonywania wielu operacji na plikach – czego pojedynczy wątek JavaScript nie jest w stanie osiągnąć.
Liczby stojące za tymi zapewnieniami
Benchmarki dostarczone przez zespół pnpm wykazują drastyczne spadki czasu w trzech powszechnych scenariuszach:
- Warm install (powtarzalne uruchomienie): z 381 ms do 12 ms.
- No-cache install (bez pamięci podręcznej): z 460 ms do 40 ms.
- Clean install (pełne drzewo zależności): z 6,5 s do 2,2 s.
30-krotna poprawa w przypadku „warm install” przekłada się bezpośrednio na szybsze zadania CI i krótsze pętle zwrotne dla programistów.
Co pozostaje bez zmian
Przepisanie kodu to port, a nie całkowita zmiana projektu. Wszystkie istniejące flagi, format pliku lockfile oraz rygorystyczna struktura node_modules pozostają nienaruszone. Projekty mogą nadal uruchamiać pnpm install dokładnie tak samo jak wcześniej; jedyną zauważalną różnicą powinna być prędkość. Ponieważ publiczne API nie ulega zmianie, proces migracji ma być bezproblemowy.
Jak wypróbować to już teraz
Przejście odbywa się etapami. W obecnej linii v11 programiści mogą zdecydować się na eksperymentalne zaplecze (backend) w Rust, włączając flagę „pacquet” backend. W wersji v12 silnik Rust stanie się domyślny do pobierania pakietów i linkowania ich w obszarze roboczym (workspace). Wersja alpha została opublikowana pod tagiem next-12; nie jest ona jeszcze zalecana do użytku produkcyjnego, ale każdy zainteresowany może ją zainstalować za pomocą jednej komendy i rozpocząć testy.
Ryzyka i kontrargumenty
Nawet przy czystym interfejsie API, plik binarny w wersji alpha niesie ze sobą typowe zastrzeżenia: ograniczoną liczbę testów oraz potencjalne regresje w nietypowych przypadkach (edge cases).
Szerszy trend
Ruch pnpm odzwierciedla rosnący trend w narzędziach front-endowych. Projekty takie jak Biome i Oxc również przepisały swoje kluczowe komponenty na języki kompilowane, aby zaoszczędzić milisekundy w codziennej pracy programistów.
