비교 목록으로 돌아가기
TS-네이티브 컴파일러

Perry vs Static Hermes

Static Hermes (`shermes`)는 Hermes 엔진을 통해 강타입화된 JavaScript/TypeScript 부분 집합을 사전 컴파일하려는 Meta의 연구 단계 시도로, 주로 React Native를 겨냥합니다. Perry는 같은 일반 아이디어 — TypeScript를 네이티브로 컴파일하기 — 를 다른 방식으로 풀고 있습니다. Rust로 독립적으로 만들어졌고 LLVM을 백엔드로 사용하며, 현재 동작하는 컴파일러, 25개 이상의 네이티브 UI 위젯, 10개의 컴파일 타겟이 출시되어 있습니다. 2026년 4월 기준, Perry의 자체 벤치마크 슈트는 Static Hermes를 동급 비교 대상으로 시도했지만 표준 패키지 매니저로는 깔끔하게 설치되지 않았다고 보고합니다.

Static Hermes란 무엇인가?

Hermes는 Meta가 React Native를 위해 만든 JavaScript 엔진으로, 바이트코드 기반이고 사전 컴파일되며 모바일 시작 시간에 최적화되어 있습니다. Static Hermes는 타입화된 JavaScript 부분 집합의 사전 네이티브 컴파일을 통해 React Native에 진정한 네이티브 코드 경로를 제공하려는 Hermes의 확장 연구입니다. 주로 컴파일러 R&D 프로젝트이며, Perry의 벤치마크 노트에 따르면 macOS arm64에서 일상적인 설치를 위해 패키징되어 있지 않습니다 (`shermes`는 폴리글랏 벤치에서 'macOS arm64에 깔끔하게 설치되는 형태로 Homebrew나 npm에 제공되지 않는다'는 메모와 함께 제외됨 — perry/benchmarks/README.md 참고).

Perry란 무엇인가?

Perry는 Rust로 작성된 네이티브 TypeScript 컴파일러로, 파싱에 SWC를 사용하고 코드 생성에 LLVM을 사용합니다. 동작하는 CLI (`perry compile`, `perry run`, `perry publish`), 25개 이상의 네이티브 UI 위젯, 10개의 컴파일 타겟, 셀프 호스팅 런타임, 그리고 투명한 조건 (M1 Max, RUNS=11)으로 측정한 벤치마크 슈트를 제공합니다. Perry는 1.0 이전이지만 프로덕션 트랙입니다 — Bloom Engine, Mango, Hone, Pry, dB Meter 같은 앱이 Perry로 만들어져 출시되고 있습니다 (perryts.com 참고).

나란히 비교

기능PerryStatic Hermes
상태1.0 이전 (알파) — 프로덕션 트랙연구·실험 단계
설치 경로 (macOS arm64)Homebrew, APT, npm (@perryts/perry)현재 깔끔한 설치를 위한 패키지 없음 (perry/benchmarks 기준)
백엔드LLVM자체 (Hermes 기반 코드 생성)
입력TypeScript (전체)타입화된 JS/TS 부분 집합
컴파일 타겟10개: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JS주로 모바일 (React Native 맥락)
네이티브 UIAppKit, UIKit, GTK4, Win32, JNI 기반 25개 이상의 위젯React Native 브리지를 통해 (통합되었을 때)
독립형 CLI 앱 워크플로지원 — `perry compile main.ts`로 바이너리 생성React Native 맥락에 종속됨
공개 벤치마크 슈트있음 — Node, Bun, Rust, C++, Go, Swift, Java를 상대로 한 RUNS=11내부 자료·연구 논문

Perry가 앞서는 점

  • +사용 가능한 도구로 존재합니다. Perry는 오늘 바로 Homebrew, APT, 또는 `npm install @perryts/perry`로 설치할 수 있고, `perry compile main.ts`로 첫 시도에 바이너리를 만들 수 있습니다.
  • +더 넓은 적용 범위. Perry는 하나의 TypeScript 코드베이스로 독립형 CLI 앱, 네이티브 데스크톱 앱, 모바일 앱, 워치 앱, TV 앱, WASM, 웹을 컴파일합니다. Static Hermes는 React Native의 네이티브 코드 경로에 초점이 맞춰져 있습니다.
  • +내장된 네이티브 UI. Perry의 perry/ui 모듈은 AppKit/UIKit/GTK4/Win32/JNI 위젯으로 컴파일되는 SwiftUI 스타일의 선언적 UI 레이어입니다. Static Hermes는 UI를 호스트 (React Native)에 맡깁니다.
  • +공개되어 있고 재현 가능하며 방법론이 문서화된 벤치마크 슈트 — perry/benchmarks는 명시된 컴파일러·런타임을 상대로 RUNS=11에서의 중앙값 + p95 + σ를 보여줍니다.
  • +LLVM 백엔드를 통해 Perry는 수십 년간 검증된 최적화 패스 (자동 벡터화, IndVarSimplify, 스칼라 치환)를 물려받고 LLVM이 타겟하는 모든 플랫폼을 지원합니다.

Static Hermes이 앞서는 점

  • +Meta의 든든한 지원 — 막대한 엔지니어링 리소스와 React Native라는 명확한 전략적 거점.
  • +Hermes는 이미 바이트코드 엔진으로 프로덕션의 React Native 앱에 탑재되어 있으며, Static Hermes는 그 생태계와 도구를 그대로 물려받습니다.
  • +AOT 타이핑 규칙과 JS 부분 집합 의미론에 대한 진정으로 새로운 연구 수준의 작업.
  • +이미 React Native를 사용 중이라면, Static Hermes (이용 가능해질 때)는 다른 컴파일러로 다시 작성하는 것보다 더 점진적인 경로입니다.

Perry을 선택해야 할 때

오늘 바로 동작하는 TS-네이티브 컴파일러가 필요할 때, 하나의 TypeScript 코드베이스로 데스크톱·모바일·워치·TV·WASM·웹을 타겟하고 싶을 때, 또는 React Native의 브리지 없이 네이티브 UI 위젯이 필요할 때 Perry를 선택하세요.

Static Hermes을 선택해야 할 때

이미 React Native에 투자했고, 모바일에서 JavaScript/TypeScript에서 사전 컴파일된 네이티브 코드로 가는 경로를 원하며, 연구 단계 도구의 가장자리에서 작업하는 데 거부감이 없다면 Static Hermes (이용 가능해질 때)를 선택하세요.

결론

Static Hermes는 신뢰할 만한 팀이 진행하는 흥미로운 연구입니다. Perry는 같은 일반 아이디어를 모바일보다 훨씬 넓은 범위로 풀고 있는, 오늘 바로 출시되어 있는 동작하는 제품입니다. 지금 손에 잡히는 TS-네이티브 컴파일러가 필요하다면 Perry가 답입니다. 이미 React Native에 있고 연구 프로젝트를 따라갈 의향이 있다면 Static Hermes를 지켜보세요.

Perry 사용해보기

오늘 바로 TypeScript를 네이티브로 컴파일하세요.

시작하기