개발도구 도구
Vercel의 scriptc: TS/JS를 네이티브 바이너리로 컴파일하는 도구
vercel-labs/scriptc
GitHubVercel Labs의 `scriptc`는 TypeScript 및 JavaScript를 IR, C, LLVM IR, WASM 등 다채로운 형식으로 변환하는 혁신적인 컴파일러입니다.
세 줄 요약
- 핵심 기능은 Node.js 런타임 의존성 없이도 macOS, Linux 등 다양한 플랫폼에서 구동 가능한 순수 네이티브 바이너리 생성이 가능하다는 것입니다.
- 이를 통해 웹 개발자는 복잡한 환경별 빌드 및 배포 과정을 단일 컴파일러로 통합하고, 일관된 사용자 경험을 제공할 수 있습니다.
- 참고로, 이 도구는 아직 실험 단계이며, WebAssembly(WASI) 등의 환경에서는 네트워킹이나 OS 레벨의 고급 기능 사용에 제약이 있을 수 있습니다.
Vercel Labs에서 개발한 scriptc는 TypeScript와 JavaScript 코드를 타입이 지정된 IR, C, LLVM IR, 네이티브 어셈블리 및 객체, 그리고 WebAssembly 모듈 등 다양한 형식으로 컴파일할 수 있는 도구입니다. 이 컴파일러는 파싱과 타입 검사를 위해 TypeScript 컴파일러를 사용하며, 소스 출력은 Node.js 환경만 필요합니다.
scriptc의 주요 특징 중 하나는 네이티브 바이너리 생성을 지원하여, macOS, Linux, Windows 등 다양한 플랫폼에서 별도의 Node나 JavaScript 엔진 없이 구동 가능한 독립적인 실행 파일을 만들 수 있다는 점입니다. 예를 들어, `scriptc build hello.ts -o hello` 명령을 사용하면 해당 코드를 포함하는 실행 파일(`./hello`)을 생성할 수 있습니다.
사용자는 `--emit=ir|c|llvm|asm|obj`와 같은 옵션을 통해 컴파일 과정의 중간 산출물(artifact)을 얻을 수 있어, 링커나 아카이버 호출 없이 소스 레벨의 결과물을 확인할 수 있습니다. 또한, WASI Preview 1을 지원하며 Zig를 활용하여 `wasm32-wasi`와 같은 크로스 타겟 빌드를 수행할 수 있습니다.