피드로 돌아가기
타입스크립트, 이제 Go로 다시 태어난다: 10배 빨라지는 이유와 커뮤니티 반응까지
개발자스럽다개발자스럽다
Backend

타입스크립트, 이제 Go로 다시 태어난다: 10배 빨라지는 이유와 커뮤니티 반응까지

마이크로소프트가 TypeScript 컴파일러를 JavaScript에서 Go로 포팅해 빌드 시간을 77.8초에서 7.5초로 단축

noreply@blogger.com (Unknown)2025년 3월 17일7intermediate

Context

기존 TypeScript 컴파일러(tsc)는 JavaScript로 작성되어 Node.js에서 동작하며, 대규모 프로젝트에서 느린 빌드 속도, 단일 스레드 동작으로 인한 멀티코어 미활용, Node.js의 가비지 컬렉션과 JIT 컴파일 오버헤드 문제가 있었다. VS Code 규모 프로젝트(약 150만 라인)는 전체 빌드에 최대 1분 이상 소요되어 개발 생산성을 저하시켰다.

Technical Solution

  • TypeScript 컴파일러 언어 변경: JavaScript에서 Go 네이티브 언어로 포팅
  • 멀티스레딩 활용: Go의 고루틴을 이용해 파싱, 바인딩, 타입 검사를 병렬 실행
  • 메모리 효율화: 네이티브 코드 기반 메모리 관리 및 공유 메모리 활용
  • 배포 방식 개선: 정적 컴파일을 통한 단일 바이너리 배포 지원
  • 호환성 유지 전략: 기존 JavaScript 버전(TypeScript 6.x)을 상당 기간 유지하며 점진적 전환 지원

Impact

  • 빌드 성능 개선: VS Code 전체 빌드 시간 77.8초 → 7.5초 (약 10배 단축)
  • 메모리 사용량 감소: 최대 50% 절감

Key Takeaway

기존 코드베이스와의 호환성과 개발자 경험을 우선시하는 것이 성능 최적화만큼 중요하다. Go는 Rust보다 JavaScript의 GC 기반 메모리 모델과 구조적으로 호환되어 공유 가변성 문제를 최소화하면서 10배 성능 향상을 달성할 수 있었다.


대규모 TypeScript 프로젝트를 운영하는 팀에서는 2025년 중반 Go 기반 TypeScript 7.0 프리뷰 버전 테스트를 통해 점진적 마이그레이션을 계획할 수 있다. 특히 빌드 시간이 1분 이상인 프로젝트는 이번 포팅으로 10배 성능 개선을 기대할 수 있으므로, CI/CD 파이프라인 속도 개선의 주요 이점을 얻을 수 있다.

원문 읽기
타입스크립트, 이제 Go로 다시 태어난다: 10배 빨라지는 이유와 커뮤니티 반응까지 | Devpick