차세대 TypeScript 네이티브 코드 포팅 - 성능 10배 향상
안녕하세요! 오늘은 TypeScript와 프로젝트 Corsa에 대해 함께 알아보겠습니다. TypeScript는 이미 많은 개발자들에게 사랑받고 있는 프로그래밍 언어죠. 초기부터 가져온 여러 이점에도 불구하고, 성능과 기술적인 측면에서 몇 가지 과제를 가지고 있었습니다. 그래서 Microsoft에서는 TypeScript 컴파일러와 도구 세트를 네이티브 코드로 포팅하는 프로젝트인 Corsa를 진행하게 되었습니다. 이 프로젝트는 TypeScript의 성능을 획기적으로 개선하기 위한 시도로, 기존의 JavaScript의 한계를 넘어서기 위해 시작되었습니다. 특히, 이번 프로젝트를 통해 TypeScript의 느린 컴파일 시간과 메모리 이슈를 해결하는 것을 목표로 하고 있습니다. Corsa 프로젝트는 TypeScript를 완전히 재작성하는 것이 아닌, 기존의 TypeScript 코드를 그대로 다른 환경에 맞게 옮기는 것을 목표로 합니다. 이렇게 함으로써 기존 시스템이 갖는 의미와 기능을 유지하고, 새로운 환경에서도 성능을 대폭 향상시킬 수 있습니다.
네이티브 코드 포팅의 필요성
네이티브 코드로 포팅하는 이유는 성능 향상 외에도 여러 가지가 있습니다. 첫째, JavaScript가 가진 내재적인 한계들 때문입니다. TypeScript는 JavaScript 기반으로 되어 있지만, 대규모 프로젝트에서는 JavaScript의 런타임 제약이 발목을 잡는 경우가 많습니다. 특히 메모리 부족 문제는 지속적으로 보고되는 주요 문제 중 하나였죠. 컴파일러들은 고도의 계산과 메모리 관리가 필요하지만, JavaScript는 UI나 브라우저 사용에 더 최적화되어 있습니다. 그래서 네이티브 코드로의 포팅은 TypeScript의 성능을 활성화시키기 위한 필수 선택으로 떠올랐습니다. 네이티브 코드로 포팅함으로써 더 낮은 수준의 하드웨어 접근이 가능해졌고, 동시성 및 메모리 관리에서 우위를 점할 수 있게 되었습니다. 이는 결국 전체적인 개발 경험을 개선하는 데 크게 기여할 것입니다.
성능 비교 및 결과
성능 면에서 이번 포팅은 정말로 획기적이었습니다. Visual Studio 코드 프로젝트의 전체 컴파일을 예로 들어 비교해보면, 기존 컴파일러는 1분이 걸리던 작업이 새로운 네이티브 코드 컴파일러에선 5초 정도로 줄어들었습니다. 이는 단순한 숫자의 변화가 아니라, 실제로 작업 흐름을 크게 바꿀 수 있는 정도의 변화입니다. TypeScript 도구 세트가 더 빨라질 수 있는 부분은 단순히 네이티브 코드 포팅 때문만이 아닙니다. Go 언어로 전환하면서, 동시성을 최대로 활용할 수 있게 된 것도 큰 이유였습니다. 즉, 멀티스레딩 환경에서 여러 작업을 동시에 처리할 수 있게 되어 작업이 병렬로 진행되니까 시간 절약이 극대화된 거죠. 일반 프로젝트에서도 10배 이상의 성능 개선은 사용자 경험을 획기적으로 다르게 만듭니다.
Go 언어의 장점과 선택 이유
많은 분들이 TypeScript 포팅 시 왜 Go 언어를 선택했는지 궁금하실 텐데요. Go 언어는 여러 장점으로 인해 선택되었습니다. 첫째로, Go는 간단하면서도 강력한 메모리 제어를 제공합니다. 이는 우리가 성능을 극대화하고 싶을 때 중요한 요소 중 하나입니다. 가비지 컬렉션은 물론이고, 동시성에서 뛰어난 성능을 보여 줍니다. 특히, 메모리를 효율적으로 관리하면서도 다양한 플랫폼에 최적화된 코드를 작성할 수 있다는 점에서 큰 이점을 가지고 있습니다. 다양한 프로토타입을 만들어 본 결과, Go 언어가 TypeScript 프로젝트의 요구를 가장 잘 충족시킨다는 결론에 도달했습니다. 그렇기에 이번 프로젝트에서 Go를 사용하게 되었고, 이는 C나 C++ 또는 Rust가 아닌 Go가 가장 적합하다고 본 이유입니다.
미래의 TypeScript 도구와 AI 기능 전망
Corsa 프로젝트 이후, TypeScript는 더욱 발전된 도구 세트를 제공할 예정입니다. 특히, AI 기능과의 통합을 통해 사용자 경험을 한 단계 더 끌어올릴 계획인데요. 예를 들어, LLM의 출력 데이터를 즉각적으로 검사하고, AI 지원 리팩토링 기능을 강화할 예정입니다. 이는 단순히 한두 기능의 추가가 아니라, AI와의 밀접한 연동을 통해 개발의 효율성을 비약적으로 높이는 시도가 될 것입니다. 앞으로는 TypeScript가 가지는 가능성이 정말 무궁무진할 것으로 보입니다. AI 기반 기능이 통합된다면, 우리는 코드 작성 과정에서 더 많은 예측과 추천을 받을 수 있게 될 것입니다. 이는 개발자들이 코드를 작성하고 수정하는 데 들어가는 시간을 크게 줄여줄 것입니다. TypeScript의 네이티브 코드 포팅이 미래 개발 환경에 미칠 긍정적인 변화가 기대되네요.
제목
A 10x faster TypeScript
설명
Anders Hejlsberg, lead architect of TypeScript and Technical Fellow at Microsoft, introduces a new port of TypeScript that will deliver the next generation of high-performance developer tooling. Learn More Here ➡️ https://devblogs.microsoft.com/typescript/typescript-native-port/ Build and Run the Go code from this repo ➡️ https://github.com/microsoft/typescript-go