TypeScript 컴파일러를 Rust로 포팅한 tsc-rs 공개
원제 Port of the TypeScript compiler, checker and lsp to Rust, by LLM
103 포인트댓글 196
Key Point
LLM으로 대규모 컴파일러를 성공적으로 포팅한 사례이며, tsc 7 대비 1.6배 빠른 TypeScript 타입 체커가 npm에 공개되어 프로젝트에 즉시 적용 가능하다.
핵심 요약
- LLM을 이용해 TypeScript 컴파일러, 타입 체커, LSP를 Rust로 포팅한 tsc-rs를 공개했다.
- OpenAI 모델로는 총 42만 달러를 소비했으나 84% 호환성에 그쳤고, Claude Opus 5.5는 10시간 내 작동 v0를 완성해 2주간 약 2만 4,047달러로 완전 포팅을 달성했다.
- Microsoft의 TypeScript 컴파일러를 Go에서 Rust로 직접 포팅했으며, tsc와 동일한 명령줄 옵션·언어 서버·API를 유지한다.
- npm 설치 후 npx tsc-rs -p tsconfig.json으로 사용 가능하며, Linux x64·macOS arm64를 지원한다.
- TypeScript 7.1.0-dev 기준으로 포팅되었고, 포팅된 Go 테스트 181,711개가 모두 통과하며 실제 프로젝트에서 100% 호환성을 확인했다.
- 성능 벤치마크에서 VS Code 기준 tsc 6 대비 13배, tsc 7 대비 1.61배 빠르며, 기하 평균으로 실제 앱 6개 중 tsc 7보다 11.4배 빨랐다.
- Effect 프로젝트는 Effect 진단 규칙이 빌트인되어 별도 컴파일러 없이 tsconfig에 플러그인만 추가하면 된다.
- 일부 모노레포에서 소스 파일이 node_modules와 직접 임포트 양쪽으로 도달 가능할 때 tsc-rs가 더 많은 파일에 TS6059 에러를 보고할 수 있다.
- 에디터에서 장시간 편집 시 메모리가 천천히 증가하지만 약 20회 편집 후부터는 tsc보다 낮은 수준을 유지한다.
- MIT 라이선스이며 포팅 대상인 TypeScript(Apache-2.0)와 Go 표준 라이브러리(BSD-3-Clause)의 라이선스를 유지한다.
- crates/ts_goport가 컴파일러 구현이고, tools/ts_ast_codegen과 tools/ts_diagnostics_codegen이 코드 생성을 담당한다.
- WebAssembly 빌드(crates/ts_wasm)도 제공하며, npm 릴리스는 태그 푸시로 자동화된다.