TypeScript(TS) 개발의 오랜 패러다임을 깨는 새로운 시도, 'Perry' 네이티브 컴파일러가 오픈소스 프로젝트로 등장했습니다. 기존에는 TS 코드를 JavaScript(JS)로 변환(transpile)한 뒤, Node.js나 Bun, Deno 같은 JS 런타임 환경 위에서 실행하는 것이 일반적이었습니다. 하지만 Perry는 이러한 중간 런타임 계층을 완전히 제거하고, TS 코드를 macOS, iOS, Android, Linux, Windows 등 다양한 플랫폼에서 바로 실행 가능한 독립적인 네이티브 바이너리로 직접 컴파일하는 것을 목표로 합니다.
Perry의 핵심은 '런타임 제로(No Runtime)' 아키텍처입니다. V8 엔진이나 Electron, JVM 같은 무거운 중간 계층 없이, SWC로 TS 코드를 파싱하고 LLVM 인프라를 통해 타겟 플랫폼의 기계어 코드로 직접 빌드합니다. 이는 단 몇 메가바이트(MB) 수준의 초경량 바이너리와 0ms에 가까운 콜드 스타트(cold start) 시간을 가능하게 합니다. 또한, AssemblyScript처럼 TS와 유사한 별도 언어가 아닌, Strict Mode를 기반으로 하는 온전한 TypeScript 생태계를 지원하며, SwiftUI, GTK4, WinUI 같은 플랫폼 네이티브 GUI 프레임워크는 물론, 자체 React 렌더러를 통한 JSX 작성도 지원하여 개발자들에게 폭넓은 선택지를 제공합니다.
물론, 아직 프로덕션 레벨로 가기 위한 과제들도 존재합니다. Perry는 정적 컴파일 특성상 런타임에 객체 필드를 임의로 주입하거나 프로토타입을 변형하는 등 동적인 자바스크립트 스타일은 지원하지 않습니다. 또한, Node.js 내장 모듈 에뮬레이션을 Rust 생태계를 기반으로 구현하고 있지만, Express처럼 동적 임포트가 얽힌 복잡한 라이브러리들과의 100% 호환성은 아직 알파 단계의 해결 과제입니다. 하지만 Fastify 등 일부 모듈 컴파일에 성공하며 빠르게 발전하고 있어, 향후 호환성 개선이 기대됩니다.
Perry의 등장은 웹 생태계에 주로 머물러 있던 TypeScript를 시스템 프로그래밍과 초경량 네이티브 앱 개발 영역으로 확장하려는 중요한 시도입니다. 고성능 시스템 아키텍처나 LLVM 컴파일러 파이프라인에 관심 있는 개발자들에게는 매우 흥미로운 프로젝트가 될 것입니다. 이는 TS 개발자들이 더 넓은 영역에서 강력한 타입 시스템과 생산성을 활용할 수 있는 새로운 길을 열어줄 잠재력을 가지고 있습니다.