pnpm 코어 팀이 네이티브 Rust 바이너리로 실행되는 버전 12의 알파 빌드를 출시했습니다. 이는 현재의 Node 기반 버전보다 10배 더 빠른 설치 시간을 약속합니다. 이 변화는 CI 작업이 훨씬 더 빨리 완료될 수 있다는 점에서 매우 중요합니다.

재작성이 중요한 이유

pnpm은 이미 콘텐츠 주소 지정 가능 저장소(content-addressable store)와 엄격한 node_modules 레이아웃을 사용하여 npm 및 Yarn과 차별화됩니다. 하지만 모든 명령은 여전히 Node.js 프로세스를 시작하므로, 파일 작업을 시작하기 전에 고정된 시작 비용이 발생합니다. 핵심 로직을 Rust로 옮김으로써 팀은 이러한 부트스트랩 단계를 제거하고, 단일 JavaScript 스레드로는 따라올 수 없는 Rust의 병렬 파일 작업 능력을 활용할 수 있게 되었습니다.

수치로 증명되는 성능

pnpm 팀이 제공한 벤치마크 결과에 따르면 세 가지 일반적인 시나리오에서 성능이 극적으로 향상되었습니다:

  • Warm install (반복 실행): 381ms에서 12ms로 단축.
  • No-cache install (캐시 없는 설치): 460ms에서 40ms로 단축.
  • Clean install (전체 의존성 트리): 6.5s에서 2.2s로 단축.

Warm install에서 나타난 30배의 성능 향상은 CI 작업 속도 향상과 더 빠른 개발자 피드백 루프로 직결됩니다.

변하지 않는 것들

이번 재작성은 재설계가 아닌 포팅(port)입니다. 기존의 모든 플래그, lockfile 형식, 엄격한 node_modules 구조는 그대로 유지됩니다. 프로젝트는 이전과 똑같이 pnpm install을 실행할 수 있으며, 눈에 보이는 유일한 차이점은 속도뿐입니다. 공개 API가 변경되지 않으므로 마이그레이션 과정은 매우 매끄러울 것입니다.

지금 바로 사용해 보는 방법

전환은 단계적으로 이루어집니다. 현재 v11 버전에서는 “pacquet” 백엔드 플래그를 활성화하여 실험적인 Rust 백엔드를 선택적으로 사용할 수 있습니다. v12에서는 패키지를 가져오고 워크스페이스에 연결하는 작업의 기본 엔진이 Rust로 변경됩니다. 알파 릴리스는 next-12 태그로 배포되었습니다. 아직 프로덕션 환경에서의 사용은 권장되지 않지만, 관심 있는 사용자라면 단 한 줄의 명령어로 설치하여 테스트를 시작할 수 있습니다.

리스크 및 주의사항

API 구조가 깔끔하더라도, 알파 버전 바이너리는 제한된 테스트와 잠재적인 엣지 케이스(edge-case) 회귀(regression)와 같은 일반적인 주의사항을 수반합니다.

더 넓은 트렌드

pnpm의 이러한 행보는 프론트엔드 툴링 분야에서 증가하고 있는 패턴을 반영합니다. Biome이나 Oxc와 같은 프로젝트들도 개발 워크플로우에서 밀리초(ms) 단위의 시간을 단축하기 위해 핵심 컴포넌트를 컴파일 언어로 재작성하고 있습니다.