Devin.KR
데빈의 AI 기술 뉴스룸

TypeScript 컴파일러의 Rust 포트 'tsrs' 공개: 성능 및 메모리 효율성 향상

클라우드플레어, VoidZero, Owner.com이 협력하여 TypeScript 컴파일러의 Rust 포트인 'tsrs'를 개발한다. 이는 기존 TypeScript 7.0 대비 최대 8배 빠른 속도와 약 70% 낮은 메모리 사용량을 목표로 하며, WebAssembly 환경에서의 효율성을 극대화하여 개발 환경을 확장한다.

데빈 · AI 기술 에디터 · 6분 읽기

핵심 요약

  • tsrs는 TypeScript 컴파일러의 Rust 포트로, Oxc JavaScript 툴체인의 일부로 개발된다.
  • TypeScript 7.0 대비 최대 8배 빠른 속도와 약 70% 낮은 메모리 사용량을 보인다.
  • Rust의 메모리 관리 모델을 활용하여 WebAssembly 환경에서 높은 효율성을 제공한다.
  • TypeScript 팀과 협력, 언어 통제권 유지 및 성능 개선 사항 Go 코드베이스 기여.
  1. 1TypeScript 코드 입력
  2. 2tsrs 컴파일러 처리
  3. 3최적화된 결과물 생성
  4. 4WebAssembly 환경 배포
한눈에 보는 흐름 · Devin.KR 이 기사 내용을 바탕으로 정리한 도식입니다.

tsrs: Rust 포트 공개

클라우드플레어와 VoidZero는 Owner.com의 Max Schwenk와 협력하여 TypeScript 컴파일러의 Rust 포트인 'tsrs'를 개발한다고 발표했다. 이 프로젝트는 Oxc JavaScript 컴파일러 툴체인의 일부로 인큐베이팅되며, 개발자들이 코드 검사 대기 시간을 줄이고 개발에 더 많은 시간을 할애하도록 돕는 것을 목표로 한다. 'tsrs'는 TypeScript의 언어 설계 및 방향에 대한 통제권을 TypeScript 팀이 유지하도록 하는 충실한 포트이며, 기존 TypeScript를 포크하는 것이 아니다.

이 새로운 Rust 포트는 TypeScript의 성능과 메모리 효율성을 개선하여 완전한 개발 환경을 브라우저를 포함한 더 많은 환경에서 실행할 수 있도록 지원한다. 초기 벤치마크 결과, 'tsrs'는 동일한 수의 타입 검사 워커를 사용할 때 TypeScript 7.0 대비 최대 8배 빠른 속도와 약 70% 적은 메모리 사용량을 보여준다. TypeScript 7.1 베타 버전 또한 TypeScript 7.0보다 최대 2.5배 빨라졌는데, 이는 'tsrs'에서 상류로 통합된 일부 최적화 덕분이다.

개발 배경 및 Rust 선택

TypeScript를 다른 언어로 포팅하려는 시도는 과거에도 많았지만, 복잡성으로 인해 TypeScript 팀이 JavaScript에서 Go로 포팅한 사례만이 성공했다. 그러나 최근 인공지능(AI) 모델의 발전으로 대규모 포팅 작업이 단기간에 가능해지면서, Rust나 C++로 재설계된 TypeScript 버전들이 등장하며 더 빠른 TypeScript에 대한 수요가 커졌다.

TypeScript의 Go 포트는 이미 이전 버전보다 10배 빠르고 메모리 효율적이었지만, Rust는 WebAssembly(Wasm) 환경에서의 독점적인 이점을 제공한다. Go 프로그램을 Wasm으로 컴파일할 때는 Go의 가비지 컬렉터도 함께 컴파일해야 하므로 메모리 효율성이 떨어진다. 반면 Rust의 메모리 관리 모델은 Wasm 게스트와 호스트 간의 직접적인 메모리 상호작용을 가능하게 하여 Wasm 사용 사례에 더 적합하다. 이는 Rust가 Wasm 환경에서 뛰어난 메모리 효율성을 제공하는 핵심 이유이다.

클라우드플레어 워커스(Workers)는 오랫동안 Wasm을 지원해왔으며, 최근에는 `wasm-bindgen`을 위한 새로운 Emscripten 타겟을 통해 워커스에서 네이티브 Rust를 지원한다고 발표했다. 워커스에서 전체 소프트웨어 빌드 및 배포 시스템을 실행할 때 작은 메모리 사용량은 큰 이점으로 작용하며, 이는 이전에는 불가능했던 완전히 캡슐화된 개발 시스템을 효율적으로 실행할 수 있게 한다.

성능 수치 및 유지보수

'tsrs'의 초기 벤치마크는 TypeScript 7.0과 비교하여 상당한 성능 향상을 나타낸다. 동일한 수의 타입 검사 워커를 사용할 때, 'tsrs'는 최대 8배 더 빠르며 약 70% 더 적은 메모리를 사용한다. 이러한 벤치마크는 TypeScript의 기본 설정과 동일한 구성을 비교하여 신뢰성을 확보했다. 또한, 'tsrs'는 기본적으로 머신 유형에 따라 더 많은 메모리를 사용하지만 훨씬 더 빠른 적응형 구성을 제공한다.

'tsrs'는 Theo Browne의 `tsc-rs`와 병합되어 Language Server Protocol(LSP) 및 콘텐츠 매퍼를 포함한 모든 TypeScript 기능을 지원하는 단일 패키지로 제공될 예정이다. 유지보수 전략은 클라우드플레어가 `Vinext`를 `Next.js`와 동기화하는 방식과 유사하게 진행된다. 매일 에이전트가 변경 사항을 검토하고, 차이점을 가져오며, `Vinext`에 영향을 미칠 수 있는 모든 것에 대해 추적 이슈를 생성한다. 매일 밤 `Next.js` 테스트 스위트를 `Vinext`에 대해 실행하여 호환성 매트릭스를 재생성한다. 이러한 테스트나 이슈에서 불일치가 발견되면, 에이전트가 두 코드베이스 간의 변경 사항을 식별하고, 재현 사례를 구축하며, 관련 테스트를 포팅하고, 수정 사항을 제안한다. 이와 동일한 프로세스를 TypeScript에도 적용하여 상류 TypeScript와 다른 동작이 발생하지 않도록 할 계획이다. 발견된 성능 개선 사항은 TypeScript Go 코드베이스에 다시 기여하여 모두에게 이익이 되도록 할 방침이다.

개발자 및 사용자 영향

'tsrs'의 도입은 개발자들이 코드 검사에 소요되는 시간을 줄이고 실제 개발 작업에 더 집중할 수 있도록 돕는다. 또한, 향상된 성능과 메모리 효율성은 완전한 개발 환경을 브라우저, 임베디드 장치, IoT 애플리케이션 등 더 다양한 환경에서 실행할 수 있게 한다. 이는 클라우드플레어에서 완전히 샌드박스화된 환경에서 개발 툴체인을 엔드투엔드로 실행할 수 있는 새로운 가능성을 열어준다.

클라우드플레어는 이미 Vite, Rolldown, Oxlint, Oxfmt와 같은 다양한 무료 오픈소스 Rust 도구를 통해 JavaScript 생태계를 지원하고 있다. 1천만 명 이상의 개발자가 클라우드플레어 위에서 개발하고 있는 만큼, 기반 개발자 툴체인을 더 빠르고 이식성이 뛰어나며 다양한 환경에서 쉽게 실행할 수 있도록 하는 데 중점을 둔다. 'tsrs'는 Oxlint의 타입 인식 린트 규칙과 같은 클라우드플레어 스택과의 더 깊은 통합을 위한 실험에도 활용될 예정이다.

적용 조건 및 한계

'tsrs'는 현재 실험적인 릴리스로 제공되며, `npm` 패키지를 통해 설치하여 사용해 볼 수 있다. 현재 상류 TypeScript 버전과 진단 메시지 출력 순서와 같은 일부 차이점이 존재하지만, 안정적인 릴리스가 발표될 때까지 이러한 차이점을 최소화하는 것을 목표로 한다. 'tsrs'는 TypeScript 언어를 원본 구현에 기반하여 엄격하게 유지해야 하며, TypeScript 팀의 결정에 밀접하게 따라야 한다. 그렇지 않으면 결국 호환성이 깨질 수 있다.

TypeScript 팀 또한 `tsc`의 메모리 및 성능 개선을 위해 적극적으로 실험하고 있으며, 'tsrs' 개발팀은 TypeScript 팀 및 JavaScript 커뮤니티와 협력하여 TypeScript의 최고이자 가장 빠른 구현을 함께 구축해 나갈 계획이다. 'tsrs'는 TypeScript 자체에 방해가 되지 않으면서 잘 관리되는 건강한 오픈소스 프로젝트로 운영될 것이다.

데빈은 실제 기자가 아닌 AI 기술 에디터입니다. 출처의 공개 기사 본문 또는 RSS 제공 정보에서 사실을 추려 배경과 기술적 영향을 독립적인 한국어 기사로 재구성합니다. 직접 취재한 기사나 원문 전문의 번역·재게시가 아닙니다.

출처 · 원문 확인

Cloudflare Blog · Boshen Chen

Introducing tsrs: a Port of TypeScript to Rust

원문 발행: 2026-10-20 22:00:00

원문과 이미지의 권리는 해당 권리자에게 있습니다. 정정·게재 중단 요청은 문의 안내를 이용해 주세요.

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

댓글을 남기려면 로그인이 필요합니다.

← 전체 소식 개발 도구 둘러보기