Maru@maru

Dev Hub

TypeScript 7.0의 Go 컴파일러 전환, 무엇이 달라졌을까

대규모 프로젝트에서 TypeScript 컴파일러(tsc)를 돌릴 때마다 길어지는 빌드 시간과 메모리 점유율은 오랫동안 개발자들의 고질적인 고민거리였습니다. 코드베이스가 수만 줄을 넘어가면 타입 검사에만 수분이 소요되곤 했습니다. TypeScript 7.0은 이 병목을 해결하기 위해 컴파일러 엔진을 Go 언어로 전면 재작성했습니다. 내부 프로젝트명 코르사(Corsa)로 개발되어 온 새로운 컴파일러가 정식 배포되면서 빌드 생태계에 큰 변화가 찾아왔습니다.

자바스크립트 엔진을 벗어난 네이티브 컴파일러

기존 TypeScript 컴파일러는 TypeScript 자체로 작성된 뒤 JavaScript로 트랜스파일되어 Node.js 런타임 위에서 단일 스레드로 동작했습니다. V8 엔진의 가비지 컬렉션 부담과 싱글 스레드 아키텍처는 프로젝트 규모가 커질수록 명확한 한계를 드러냈습니다.

TypeScript 7.0은 컴파일러의 모든 핵심 로직을 Go 언어로 다시 작성해 네이티브 바이너리로 배포합니다. 런타임 인터프리터 없이 운영체제 위에서 직접 실행되기 때문에 프로세스 시작 시간이 거의 사라졌고 메모리 사용량도 크게 줄어들었습니다. 공식 발표 기준으로 이전 버전 대비 약 8배에서 10배에 달하는 타입 검사 및 빌드 속도 향상을 제공합니다.

멀티코어 병렬 타입 검사 지원

엔진 재작성을 통해 얻은 가장 실질적인 기능적 도약은 멀티코어 병렬 처리입니다. 지금까지 tsc는 CPU 코어가 아무리 많아도 단 하나의 코어만 활용할 수 있었습니다. TypeScript 7.0부터는 별도의 워커 프로세스를 수동으로 구성하지 않아도 내장 플래그를 통해 멀티코어를 활용할 수 있습니다.

bash

이 명령어는 4개의 전용 검사 스레드를 병렬로 띄워 전체 프로젝트 모듈의 타입을 동시에 분석합니다. 로컬 개발 환경뿐 아니라 여러 개의 가상 CPU를 할당받는 지속적 통합(CI) 파이프라인에서 빌드 대기 시간을 획기적으로 줄여줍니다.

도입 전 확인해야 할 프로젝트 환경

컴파일러의 기본 언어가 바뀌었지만 TypeScript 문법 자체가 바뀌는 것은 아닙니다. 기존 프로젝트 코드 대부분은 수정 없이 그대로 동작합니다. 단, 이전 징검다리 버전이었던 TypeScript 6.0에서 예고되었던 설정 정리 작업은 완료되어 있어야 합니다.

레거시 모듈 옵션이나 과거 번들러용 설정은 7.0 컴파일러에서 완전히 제거되었습니다. tsconfig.json 설정이 최신 모듈 표준에 맞춰져 있다면 추가적인 설정 변경 없이 컴파일러 버전 업데이트만으로 속도 향상을 누릴 수 있습니다.

어떤 개발자와 팀에 가장 필요할까

수백 개 이상의 컴포넌트와 비즈니스 로직이 얽혀 있는 대형 모노레포를 운영하는 팀이라면 즉시 도입을 검토할 가치가 충분합니다. 특히 CI 파이프라인에서 PR마다 전체 타입 검사를 수행하느라 개발 흐름이 자주 끊기던 팀에게 가장 즉각적인 개선을 가져다줍니다.

수십 개 미만의 파일로 구성된 소규모 토이 프로젝트나 학습용 환경에서는 이전 버전에서도 컴파일이 순식간에 끝났기 때문에 체감 차이가 크지 않을 수 있습니다. 대규모 엔터프라이즈 코드베이스를 유지보수하고 있다면 다음 스프린트에 테스트 환경부터 tsc 7.0을 적용해 보길 권합니다.

Loading comments…