Typescript 팀이 네이티브 포트 개발을 통한 성능 개선 계획을 발표했습니다. 아래는 마이크로소프트 Dev Blog ‘A 10x Faster Typescript’ 글의 전문 번역본입니다.
TypeScript 성능 혁신의 시작
TypeScript의 핵심 가치는 뛰어난 개발자 경험을 제공하는 것입니다. 코드베이스가 성장할수록 TypeScript의 가치도 커지지만, 초대형 코드베이스에서는 종종 확장성 문제에 부딪히는 경우가 많았습니다. 대규모 프로젝트에서 개발자들은 긴 로딩 시간과 코드 검사를 경험하며, 대개 편집기의 빠른 시작 속도와 코드의 전체 검사를 선택해야 하는 상황에 놓입니다.
우리는 개발자들이 변수를 자신 있게 변경하고, 특정 함수의 모든 참조를 찾고, 코드 편집기를 신속하게 탐색하며, 이러한 작업을 지연 없이 수행할 수 있기를 바랍니다. AI 기반의 새로운 개발 환경은 더욱 신속한 응답이 필요하며, 전체 코드베이스를 빠르게 검증할 수 있는 커맨드라인 빌드 속도도 중요합니다.
이러한 목표를 달성하기 위해, 우리는 TypeScript 컴파일러와 도구의 네이티브 포트를 진행하고 있습니다. 네이티브 구현을 통해 편집기 실행 속도가 획기적으로 빨라지고, 대부분의 코드베이스에서 빌드 속도가 10배 향상되며, 전체적인 메모리 사용량도 크게 줄어들 것입니다. 현재 코드베이스를 포팅하는 작업을 진행 중이며, 올해 중반까지 커맨드라인 타입 검사를 지원하는 tsc의 네이티브 버전을 미리보기로 제공하고, 연말까지 프로젝트 빌드 도구와 언어 서비스도 완성할 예정입니다.
새로운 작업 저장소에서 Go로 작성된 코드의 빌드 및 실행이 가능하며, 기존 TypeScript 코드베이스와 동일한 라이선스로 제공됩니다. 레포지토리의 README 파일을 참고하면 tsc 및 언어 서버를 빌드하고 실행하는 방법과 현재 구현된 기능을 확인할 수 있습니다.
얼마나 빨라졌을까?
네이티브 TypeScript는 이미 여러 인기 있는 대형 프로젝트를 로드 및 실행할 수 있습니다. GitHub의 다양한 코드베이스를 대상으로 tsc 실행 속도를 비교한 결과는 다음과 같습니다.
코드베이스 | 코드 크기 (LOC) | 기존 속도 | 네이티브 속도 | 속도 향상 배율 |
---|---|---|---|---|
VS Code | 1,505,000 | 77.8s | 7.5s | 10.4배 |
Playwright | 356,000 | 11.1s | 1.1s | 10.1배 |
TypeORM | 270,000 | 17.1s | 1.1s | 15.5배 |
RxJS | 2,100 | 1.1s | 0.1s | 11.0배 |
아직 모든 기능을 구현한 것은 아니지만, 위의 숫자는 대부분의 코드베이스에서 10배 이상의 성능 향상을 체감할 수 있음을 보여줍니다.
IDE 성능 개선
개발자의 대부분의 시간은 편집기에서 보내지므로, 편집기의 속도는 매우 중요합니다. 최신 코드 편집기(예: Visual Studio Code)는 기본적으로 빠르지만, 내부에서 실행되는 언어 서비스의 속도가 병목이 될 수 있습니다.
현재 VS Code 프로젝트 전체를 로드하는 데 걸리는 시간은 약 9.6초인데, 네이티브 언어 서비스를 사용하면 1.2초로 단축됩니다. 이는 프로젝트 로딩 시간이 8배 이상 향상되는 결과입니다. 즉, 편집기를 열고 첫 번째 키 입력을 하기까지 걸리는 시간이 대폭 줄어들어 더욱 빠르고 부드러운 개발 환경을 제공하게 됩니다.
또한, 네이티브 구현은 기존 대비 메모리 사용량을 절반 정도로 줄일 것으로 예상됩니다. 코드 자동 완성, 참조 검색, 정의 이동과 같은 언어 서비스 기능도 크게 향상될 예정이며, 우리는 LSP (Language Server Protocol)로 이동하여 다른 프로그래밍 언어와의 호환성을 더욱 강화할 계획입니다.
향후 로드맵
가장 최근 출시된 TypeScript 버전은 5.8이며, 곧 5.9가 출시될 예정입니다. JavaScript 기반 코드베이스는 TypeScript 6.x로 계속 발전할 것이며, TypeScript 7.0에서 네이티브 구현이 본격적으로 도입됩니다.
우리는 이 새로운 네이티브 TypeScript를 “Corsa”라는 코드명으로 부르고 있으며, 기존 TypeScript는 “Strada”라는 명칭을 사용하게 됩니다. 이 두 가지 버전은 가능한 한 동일한 기능을 유지하도록 할 것이며, 기존 JS 기반 TypeScript 6도 TypeScript 7이 충분히 성숙할 때까지 계속 유지·관리될 예정입니다.
TI Tech Lab 이유진 연구원
Add comment