March 12, 2025 ˑ 5min read
Note아래 링크의 내용을 요약하였습니다. 원문이 궁금하신 분들은 링크를 참고해주세요!
https://devblogs.microsoft.com/typescript/typescript-native-port
마이크로소프트가 TypeScript의 성능을 대폭 향상시키기 위한 네이티브 포트 프로젝트를 공식 발표했습니다.
TypeScript는 강력한 정적 타입 시스템과 뛰어난 개발자 경험을 제공하지만, 대규모 코드베이스에서 빌드 및 검사 속도가 느려지는 문제가 있었습니다. 개발자들은 긴 로드 시간과 높은 메모리 사용량 때문에 불편을 겪었으며, 특히 AI 기반 도구와 결합할 경우 높은 성능이 필수적이었습니다. 이를 해결하기 위해, 기존 JavaScript 기반 TypeScript 컴파일러(tsc)와 언어 서비스를 Go 언어로 포팅하여 빌드 시간 단축, 에디터 성능 개선, 메모리 사용량 절감 등의 효과를 기대하고 있습니다.
기존 tsc의 빌드 속도와 비교했을 때, 최대 10배 이상의 성능 향상이 확인되었습니다. 대규모 프로젝트에서도 빠르게 타입 검사를 수행할 수 있어, 개발자가 더 원활하게 코드를 작성하고 디버깅할 수 있습니다.
에디터에서 TypeScript를 사용할 때, 대형 프로젝트의 경우 파일을 로드하는 데 오랜 시간이 걸리게 됩니다. 네이티브 포트를 적용하면, 프로젝트 로드 시간이 기존 대비 8배 단축되어 개발자가 더 쾌적한 환경에서 작업할 수 있게됩니다.
기존 TypeScript는 코드 크기가 커질수록 메모리 사용량도 증가했으나, Go 언어 포팅은 최적화된 실행 방식을 통해 메모리 사용량을 현재 대비 절반 수준으로 감소시켰습니다. 이는 특히 저사양 환경에서도 TypeScript를 보다 원활하게 실행할 수 있다는 것을 의미합니다.
마이크로소프트는 다양한 오픈소스 프로젝트에서 네이티브 포트 tsc를 실행하여 기존 TypeScript와 성능을 비교했습니다. 결과는 다음과 같습니다.
코드베이스 | 크기 (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.5s | 1.3s | 13.5배 |
date-fns | 104,000 | 6.5s | 0.7s | 9.5배 |
tRPC (server + client) | 18,000 | 5.5s | 0.6s | 9.1배 |
rxjs (observable) | 2,100 | 1.1s | 0.1s | 11.0배 |
이처럼 기존 TypeScript와 비교했을 때 빌드 및 타입 검사 속도가 획기적으로 향상되었으며, 대형 프로젝트에서도 10배 이상의 성능 향상을 보였습니다.
현재 Go 언어 포팅 프로젝트는 개발 초기 단계에 있지만, 마이크로소프트는 2025년 중반까지 tsc의 포팅에 대한 미리보기를 제공할 계획입니다. 이후에는 연말까지 프로젝트 빌드 및 언어 서비스까지 완전히 지원하는 버전을 출시할 예정입니다.
TypeScript 7이 충분한 기능적 동등성을 갖추면, 일부 프로젝트는 즉시 전환할 수 있으며, 기존 프로젝트도 차후 원하는 시점에 업그레이드할 수 있도록 지원할 예정입니다.
이번 프로젝트를 통해 TypeScript는 단순한 성능 향상을 넘어, AI 도구와의 결합, 더 빠른 리팩토링, 즉각적인 타입 검사 등을 제공할 예정입니다. 또한, 더 정밀한 코드 분석이 가능해져 개발 생산성이 더욱 향상될 것으로 보입니다.
마이크로소프트는 앞으로 몇 달 동안 지속적인 업데이트를 제공하며, 개발자 커뮤니티와의 소통을 강화할 계획입니다. GitHub 레포지토리 에서 프로젝트를 직접 확인하고 테스트할 수 있으며, 성능 개선과 관련한 추가 정보도 공개될 예정입니다.
Chrome Extension
Mar 4, 2024
20 min read
크롬, 파이어폭스, 엣지, 오페라와 같은 주요 브라우저는 기능을 확장하거나 수정할 수 있는 확장 프로그램을 개발할 수 있는 환경과 API를 제공합니다. 확장 프로그램은 웹페이지의 UI를 변경하거나, 브라우저 이벤트를 감지하여 필요한 동작을 수행하는 등 다양한 응용이 가능한데요. 이번 글에서는 크롬 브라우저의 확장 프로그램을 개발하기에 앞서 확장 프로그램의 구성에 필요한 파일들과 그 역할에 대해 알아보려고 합니다.
Chrome Extension
May 4, 2024
15 min read
Chrome, Firefox, Edge, Opera 등 주요 브라우저는 기능을 확장하거나 수정할 수 있는 확장 프로그램을 개발할 수 있는 환경과 API를 제공합니다. 확장 프로그램은 웹페이지의 UI를 변경하거나, 브라우저 이벤트를 감지하여 필요한 동작을 수행하는 등 다양한 응용이 가능한데요. 이번 글에서는 크롬 브라우저의 확장 프로그램을 개발하기에 앞서 확장 프로그램에 필요한 파일 구성과 그 역할에 대해 알아보려고 합니다.