TypeScript 7이 이번 주 Go 언어로 완전히 재작성되어 출시되었습니다. 이로 인해 VS Code의 컴파일 시간이 17.5초에서 1.3초 미만으로 단축되었으며, 대규모 프로젝트에서 메모리 사용량은 최대 26%까지 절감되었습니다. 이러한 속도 향상은 일상적인 코딩을 즉각적인 경험으로 만들어주며, 스택 전반에 걸쳐 개발자의 시간을 수 시간씩 절약해 줍니다.

Go로 재작성하는 것이 중요한 이유

Microsoft는 기존의 JavaScript/Node 구현체를 대체하여 컴파일러를 Go로 다시 구축했습니다. 기존 코드베이스는 프로젝트 규모가 커짐에 따라 한계에 부딪혔습니다. 파싱(parsing)과 타입 체크(type-checking) 과정이 CPU와 RAM이 제한된 CI 러너의 속도를 늦췄기 때문입니다. 내장된 동시성을 지원하는 컴파일 언어로 전환함으로써, 새로운 엔진은 파싱과 타입 체크를 병렬로 실행하여 첫 번째 에러가 나타날 때까지의 대기 시간을 대폭 줄였습니다.

실제 성능 향상 사례

몇몇 주요 코드베이스를 대상으로 한 초기 벤치마크 결과는 다음과 같은 영향력을 보여줍니다:

  • VS Code: 컴파일 속도 11.9배 향상, 메모리 점유율 18% 감소.
  • Sentry, Bluesky, Playwright, Tldraw: 7.7배에서 8.9배까지 속도 향상.
  • Bluesky의 경우 메모리 사용량도 26% 감소했습니다.

하루에도 수십 번씩 "run" 또는 "watch"를 실행하는 개발자들은 더 매끄러운 편집 환경과 가벼워진 CI 부하를 체감할 수 있습니다.

새로운 플래그를 통한 제어 기능

이번 재작성 버전에는 팀이 속도와 메모리 사이의 균형을 맞출 수 있는 명령줄 옵션이 포함되어 있습니다:

  • --checkers--builders는 멀티코어 CPU를 활용하여 파싱 및 타입 체크 워커(worker)를 나란히 실행합니다.
  • --singleThreaded는 모든 작업을 단일 스레드로 강제하여, 레이스 컨디션(race condition)이 발생했을 때 디버깅을 재현 가능하게 만듭니다.
  • 타입 체크 워커와 빌더 워커를 별도로 확장할 수 있어, CI 파이프라인이 각 단계에 필요한 만큼의 리소스만 할당할 수 있습니다.
  • 개편된 --watch 모드는 Go 기반의 Parcel 포트를 사용하여, 거대한 node_modules 트리를 비용이 많이 드는 방식으로 폴링(polling)하는 대신 파일 변경 감지를 가볍게 유지합니다.

수혜자와 신중할 대상

Next.js나 Nuxt와 같이 TypeScript에 크게 의존하는 프론트엔드 프레임워크는 더 빠른 재빌드와 긴밀한 피드백 루프를 얻게 됩니다. VS Code 및 Cursor와 같은 IDE는 응답성이 더 좋아져, 개발자들이 터미널 빌드로 전환하는 대신 에디터에 더 오래 머물 수 있도록 유도합니다.

향후 주목할 점

  • 대규모 오픈 소스 프로젝트 및 엔터프라이즈 모노레포(monorepo)에서의 채택률.
  • 안정성 및 숨겨진 성능 저하 구간(performance cliffs)에 대한 커뮤니티 피드백.
  • 컴파일 시간을 추가로 단축하거나 에러 진단을 개선하기 위해 컴파일러 기능을 추가하는 Microsoft의 업데이트.