[번역] A 10x Faster Typescript

세니·2025년 3월 12일
0
post-thumbnail

GPT o3-mini-high를 이용해서 번역한 타입스크립트 관련 신상 글이다. 유튜브 영상도 보면 좋다.

A 10x Faster Typescript

TypeScript의 핵심 가치 제안은 탁월한 개발자 경험입니다. 코드베이스가 커질수록 TypeScript의 가치도 함께 증가하지만, 대부분 TypeScript는 가장 큰 규모의 코드베이스까지 확장되지는 못했습니다. 대규모 프로젝트에서 작업하는 개발자들은 오래걸리는 로드와 확인하는 시간을 경험하며, 합리적인 에디터 시작 시간과 소스 코드 전체를 완벽하게 확인하는 것 사이에서 선택해야 합니다. 개발자들은 자신 있게 변수 이름을 변경하고, 특정 함수의 모든 참조를 찾아내며, 코드베이스를 쉽게 탐색하고, 이러한 작업을 지연 없이 수행할 수 있을 때 큰 만족을 느낍니다. AI가 지원하는 새로운 경험은 더 엄격한 지연 시간 제약 조건에서 대용량의 semantic 정보를 활용할 수 있어야 합니다. 또한, 전체 코드베이스가 정상임을 검증하기 위한 빠른 명령줄 빌드 역시 필요합니다.

이러한 목표를 달성하기 위해, 우리는 TypeScript 컴파일러와 도구들의 네이티브 포트 작업을 시작했습니다. 네이티브 구현은 에디터 시작 속도를 획기적으로 개선하고, 대부분의 빌드 시간을 10배 단축하며, 메모리 사용량을 크게 줄일 것입니다. 현재 코드베이스를 포팅함으로써, 2025년 중반까지 명령줄 타입 검사가 가능한 tsc의 네이티브 구현을 미리 볼 수 있을 것으로 기대하며, 올해 말까지는 프로젝트 빌드와 언어 서비스를 위한 기능이 완벽하게 갖춰진 솔루션을 제공할 계획입니다.

새로운 작업 리포지토리에서 Go 코드를 빌드하고 실행할 수 있으며, 이 리포지토리는 기존 TypeScript 코드베이스와 동일한 라이선스 하에 제공됩니다. tsc와 언어 서버를 빌드 및 실행하는 방법, 그리고 지금까지 구현된 내용의 요약은 README 파일을 참고하세요. 새로운 기능이 테스트 가능해지면 정기적으로 업데이트를 게시할 예정입니다.

How Much Faster?

우리의 네이티브 구현은 이미 TypeScript 컴파일러 자체를 포함해 많은 인기 있는 TypeScript 프로젝트를 로드할 수 있습니다. 다음은 GitHub의 다양한 규모의 인기 코드베이스에서 tsc를 실행한 시간입니다.

CodebaseSize (LOC)CurrentNativeSpeedup
VS Code1,505,00077.8s7.5s10.4x
Playwright356,00011.1s1.1s10.1x
TypeORM270,00017.5s1.3s13.5x
date-fns104,0006.5s0.7s9.5x
tRPC (server + client)18,0005.5s0.6s9.1x
rxjs (observable)2,1001.1s0.1s11.0x

비록 아직 모든 기능이 완성된 상태는 아니지만, 이 수치들은 대부분의 코드베이스를 검사할 때 경험할 수 있는 대략적인 성능 향상을 잘 보여줍니다.

우리는 이 엄청난 속도 향상이 만들어내는 기회에 대해 매우 기대하고 있습니다. 한때 도달하기 어려웠던 기능들이 이제는 실현 가능해졌습니다. 이 네이티브 포트는 전체 프로젝트에 걸쳐 즉각적이고 포괄적인 오류 목록을 제공하고, 보다 향상된 리팩토링을 지원하며, 이전에는 계산 비용이 너무 높아 불가능했던 깊은 insight를 제공하게 될 것입니다. 이 새로운 기반은 오늘날의 개발자 경험을 뛰어넘어, 학습하고 적응하며 코딩 경험을 개선할 차세대 AI 도구들을 지원할 것입니다.

Editor Speed

대부분의 개발자 에디터에서 시간을 보내며, 에디터에서의 성능이 가장 중요합니다. 우리는 에디터가 대규모 프로젝트를 빠르게 로드하고, 모든 상황에서 신속하게 반응하기를 바랍니다. Visual Studio와 Visual Studio Code와 같은 최신 에디터는, 기본 언어 서비스가 빠르기만 하면 뛰어난 성능을 보여줍니다. 우리의 네이티브 구현을 통해 믿을 수 없을 만큼 빠른 에디터 경험을 제공할 수 있게 될 것입니다.

Visual Studio Code 코드베이스를 벤치마크로 사용할 경우, 빠른 컴퓨터에서 에디터가 전체 프로젝트를 로드하는 데 걸리는 현재 시간은 약 9.6초입니다. 네이티브 언어 서비스를 사용하면 이 시간이 약 1.2초로 줄어들어, 에디터 내 프로젝트 로드 시간이 8배 개선됩니다. 이는 에디터를 열고 TypeScript 코드베이스에서 첫 번째 키를 누르기까지의 작업 경험이 훨씬 빨라진다는 것을 의미합니다. 모든 프로젝트가 이 수준의 로드 시간 개선을 경험할 것으로 기대됩니다.

전체 메모리 사용량도 현재 구현 대비 대략 절반 수준으로 보입니다. 아직 이 부분에 대한 최적화 조사는 적극적으로 진행하지 않았으나, 앞으로 추가적인 개선이 이루어질 것으로 기대됩니다. 또한, 완성 목록, 빠른 정보, 정의로 이동, 모든 참조 찾기 등 모든 언어 서비스 작업에서 에디터의 응답성이 크게 향상될 것입니다. 더불어, 다른 언어들과의 구현 정렬을 위해 오랫동안 진행해온 Language Server Protocol(LSP)로 전환할 예정입니다.


Versioning Roadmap

가장 최근의 TypeScript 릴리스는 TypeScript 5.8이었으며, 곧 TypeScript 5.9가 출시될 예정입니다. 자바스크립트 기반 코드베이스는 6.x 시리즈로 계속 개발될 것이며, TypeScript 6.0에서는 다가오는 네이티브 코드베이스와 맞추기 위해 몇 가지 폐기(deprecation) 및 호환성 깨짐(breaking changes)이 도입될 예정입니다.

네이티브 코드베이스가 현재의 TypeScript와 충분히 동등한 수준에 도달하면, 이를 TypeScript 7.0으로 출시할 계획입니다. 이는 아직 개발 중이며, 안정성과 기능 관련 마일스톤이 달성될 때마다 차례로 발표할 것입니다.

명확성을 위해, 앞으로는 단순히 TypeScript 6 (JS)와 TypeScript 7 (네이티브)로 구분하여 부를 것입니다. 내부 토론이나 코드 주석에서는 “Strada”(기존 TypeScript 코드네임)와 “Corsa”(이번 작업의 코드네임)라는 용어도 사용될 수 있습니다.

일부 프로젝트는 출시와 동시에 TypeScript 7로 전환할 수 있겠지만, 다른 프로젝트는 특정 API 기능, 레거시 구성 또는 기타 제약 사항 때문에 TypeScript 6을 사용해야 할 수도 있습니다. TypeScript가 JS 개발 생태계에서 중요한 역할을 하고 있음을 인식하여, TypeScript 7+가 충분한 성숙도와 채택을 이루기 전까지는 6.x 라인의 JS 코드베이스를 계속 유지할 예정입니다.

장기적인 목표는 이 두 버전을 최대한 밀접하게 정렬하여, 여러분이 필요에 따라 TypeScript 7로 업그레이드하거나 필요 시 TypeScript 6으로 되돌릴 수 있도록 하는 것입니다.


Next Steps

앞으로 몇 달 동안, 성능에 대한 심도 있는 분석, 새로운 컴파일러 API, LSP 등 이 흥미로운 작업에 대한 더 많은 정보를 공유할 예정입니다. 예상되는 질문들에 대한 FAQ는 GitHub 리포지토리에 정리해 두었으니 참고하시기 바랍니다. 또한, 3월 13일 오전 10시 PDT | 오후 5시 UTC에 TypeScript 커뮤니티 Discord에서 진행되는 AMA(질의응답 세션)에 여러분을 초대합니다.

10배의 성능 향상은 TypeScript와 JavaScript 개발 경험에 있어 거대한 도약을 의미합니다. 여러분도 이 작업에 대해 저희와 같이 큰 기대를 가지시길 바랍니다!

링크

https://devblogs.microsoft.com/typescript/typescript-native-port/

profile
세니는 무엇을 하고 있을까

0개의 댓글