웹 개발 플랫폼 기업 Vercel(버셀)이 자바스크립트(JavaScript) 엔진을 포함하지 않는 새로운 타입스크립트(TypeScript) 네이티브 컴파일러 'Scriptc'를 발표했습니다. 이 도구는 일반적인 TypeScript 코드를 Node.js나 V8 엔진 없이도 실행 가능한 소형 네이티브 바이너리로 변환하여, 애플리케이션의 시작 시간을 단축하고 메모리 사용량을 크게 줄이는 것을 목표로 합니다. Vercel은 Scriptc가 기존 TypeScript 컴파일러의 엄격한 타입 검사와 Node.js 동작 호환성을 유지한다고 강조합니다.
Scriptc는 코드 구조를 분석하여 기본적으로 정적 컴파일을 수행하며, 이 경우 바이너리 크기는 170~200KB, 시작 시간은 약 2.4ms에 불과합니다. 이는 Node.js의 47ms보다 훨씬 빠르고 Go, Rust 같은 시스템 언어와 경쟁하는 수준입니다. 만약 npm 패키지의 JavaScript나 'any' 타입 코드를 사용해야 할 경우, '--dynamic' 옵션을 통해 약 620KB의 QuickJS-ng 엔진을 포함하여 동적으로 실행할 수 있습니다. 이 경우에도 바이너리 크기는 약 3MB 수준으로, Node.js의 독립 실행형 애플리케이션(SEA)이 60~100MB에 달하는 것과 비교하면 매우 작습니다. Scriptc는 클래스, 제네릭, async/await, 예외 처리, 정규식 등 다양한 TypeScript 및 표준 라이브러리 기능을 지원하며, fs, http, fetch 등 Node.js 및 웹 API도 상당 부분 구현했습니다.
Scriptc의 등장은 TypeScript 개발자들에게 새로운 배포 및 성능 최적화 가능성을 제시합니다. 특히 서버리스(Serverless) 환경이나 엣지 컴퓨팅(Edge Computing)과 같이 빠른 시작 시간과 낮은 메모리 사용량이 중요한 환경에서 큰 이점을 제공할 수 있습니다. 기존 TypeScript 프로젝트를 거의 수정 없이 네이티브 바이너리로 전환할 수 있다면, 개발 생산성을 유지하면서도 성능을 극대화할 수 있는 강력한 도구가 될 것입니다. 다만, npm 생태계의 방대한 JavaScript 기반 패키지들과의 완벽한 호환성 및 Scriptc 프로젝트의 장기적인 유지보수 여부는 앞으로 지켜봐야 할 부분입니다. 일부 개발자들은 Vercel의 단기성 프로젝트 경향과 코드 생성 방식에 대한 의문을 제기하기도 했습니다.