Vercel은 Turbopack의 소스 코드를 독립 저장소(vercel/turbo)에서 Next.js 모노레포(vercel/next.js)로 이전한다. 두 저장소의 릴리즈 주기와 의존성 동기화 마찰을 해소해 개발 속도를 높이는 것이 목적이다. 현재 Next.js 개발 테스트 스위트 100%와 상위 300개 npm 패키지 호환성을 통과한 상태다.
핵심 포인트- Turbopack은 Rust로 작성된 함수 단위 세분화 캐싱 아키텍처를 갖춰 변경된 파일의 영향 범위만 재계산한다
- 저장소 분리로 인한 릴리즈 주기 불일치, 커스텀 동기화 도구 유지, IDE 플러그인 업스트림 수정 등의 마찰이 이전 결정 배경이다
- 이전 방법은 git-subtree와 git-filter-branch를 조합해 커밋 이력을 보존하며 이관한다
- 메모리 소비 감소를 위한 캐시 축출 개선과 온디스크 영속 캐싱이 현재 우선 개발과제다
- 프로덕션 빌드(next build --turbo)는 트리 셰이킹 등 최적화 완료 후 안정화 예정이다
상세 정리- Turbopack 현황: next dev --turbo로 개발 서버 적용 가능. Next.js 개발 테스트 100% 통과, 상위 300개 npm 패키지 호환. webpack 로더도 지원.
- 분리 저장소 문제: Turbopack과 Next.js가 각각 독립 릴리즈를 하면서 버전 동기화용 커스텀 도구가 생겼고 IDE 플러그인도 양쪽 소스를 별도 유지해야 했다.
- 이전 결정: 코드 공유와 공동 개발을 빠르게 가능하게 하기 위해 Next.js 모노레포에 합류. 릴리즈 파이프라인도 통합된다.
- 이전 방법: git-subtree와 git-filter-branch를 조합해 커밋 이력 보존하며 Next.js 레포로 이식.
- 빌드 시스템 구조: Rust 컴파일러 설계에서 영감 받은 함수 수준 세분화 캐싱(fine-grained function-level caching). 빌드 중 변경된 파일의 영향 범위만 재계산.
- Cargo 워크스페이스: 이전 후 최상위 레벨에 Cargo 워크스페이스를 도입해 Rust 패키지를 JS 모노레포 방식으로 관리할 계획.
- 메모리 개선: 캐시 축출 전략 개선으로 메모리 사용량을 줄이는 작업이 진행 중.
- 온디스크 캐싱: 프로세스 종료 후에도 캐시를 유지하는 영속 캐시를 프로토타입으로 개발 중. 재시작 후에도 빠른 빌드 가능.
- 프로덕션 빌드: 트리 셰이킹, 청크 최적화 등 프로덕션 수준 최적화 추가 후 next build --turbo 안정화 예정.
왜 읽나Next.js 프로젝트에서 Turbopack 도입 시점을 검토하거나 Rust 기반 JS 빌드 도구의 아키텍처와 로드맵을 이해하려는 프론트엔드·인프라 엔지니어.