vercel-labs/scriptc
TypeScript를 네이티브 코드로 컴파일하는 scriptc 공개
원제 vercel-labs/scriptc
스타 5,313당일 +186TypeScript
Key Point
TypeScript 개발자가 Node 런타임 없이 단일 네이티브 실행 파일로 배포할 수 있게 되어, 번들 크기 최소화와 성능 향상이 가능해진다.
핵심 요약
- Vercel Labs가 TypeScript/JavaScript를 네이티브 실행 파일과 WebAssembly로 컴파일하는 scriptc를 공개했다.
- TypeScript 컴파일러를 활용해 파싱과 타입 검사를 수행하고, 타입화된 중간 표현(IR), C 코드, LLVM IR, 네이티브 어셈블리, 객체 파일 등 다양한 형태로 출력할 수 있다.
- macOS 15+ arm64, Linux, Windows에서 동작하며, Node 없이 독립적인 네이티브 실행 파일 생성이 가능하고 정적 바이너리에는 작은 런타임만 포함된다.
- npm 패키지와 any 타입 코드는 --dynamic 옵션으로 quickjs-ng를 내장해 동적 실행을 지원한다.
- 생성된 실행 파일은 Node.js가 필요 없으며, IR/C 생성에는 Node만 필요하고 어셈블리/객체 파일 생성 시 플랫폼별 헬퍼를 사용한다.
- scriptc coverage 명령으로 프로그램의 정적 컴파일 가능 범위를 확인할 수 있고, 동적 또는 미지원 부분을 진단 코드로 보고한다.
- WebAssembly 빌드는 Zig을 사용해 WASI Preview 1 모듈을 생성하며, 네트워크 소켓, 자식 프로세스, OS 신호는 WASI 제약으로 지원되지 않는다.
- Node.js 24 이상이 필요하고, 문서에서 빠른 시작 가이드, CLI 참고, npm 의존성, 네이티브 FFI, 플랫폼 지원 정보를 제공한다.
- 실험적 단계이며 테스트는 컴파일된 네이티브 바이너리 출력물을 Node와 비교해 표준 출력, 오류 출력, 종료 코드를 바이트 단위로 검증한다.
저장소 보기 ↗github.com