比較一覧に戻る
TS-to-native コンパイラ

Perry vs Static Hermes

Static Hermes(`shermes`)は Meta によるリサーチ段階の取り組みで、強い型を持つ JavaScript / TypeScript のサブセットを Hermes エンジン経由で事前コンパイルすることを目指しており、主に React Native を狙っています。Perry は同じ一般的なアイデア――TypeScript をネイティブにコンパイル――に対する別の賭けですが、Rust と LLVM の上で独立して構築されており、動作するコンパイラ、25+ のネイティブ UI ウィジェット、10 のコンパイレーションターゲットを今日出荷しています。2026 年 4 月時点で、Perry 自身のベンチマークスイートは Static Hermes をピアとして試したものの、テストした標準パッケージマネージャからクリーンにインストールできなかったと報告しています。

Static Hermes とは?

Hermes は Meta が React Native のために構築した JavaScript エンジンで――バイトコードベース、AOT 事前コンパイル、モバイルの起動時間に最適化されています。Static Hermes は Hermes に型付き JavaScript サブセットの事前ネイティブコンパイルを拡張するリサーチ的な取り組みで、React Native に真のネイティブコードへの道筋を与えることを意図しています。主にコンパイラの研究開発プロジェクトです。Perry のベンチマークノートによれば、現時点では macOS arm64 上で日常的にインストールできるパッケージにはなっていません(`shermes` は polyglot ベンチからスキップされ、「Homebrew や npm 経由で macOS arm64 にクリーンにインストールできる形では提供されていない」と注記されています――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 未満ですがプロダクション志向で、すでに Perry で構築されたアプリが出荷されています(Bloom Engine、Mango、Hone、Pry、dB Meter――perryts.com 参照)。

並べて比較

機能PerryStatic Hermes
ステータス1.0 未満(アルファ)――プロダクション志向リサーチ / 実験的
インストール経路(macOS arm64)Homebrew、APT、npm(@perryts/perry)執筆時点でクリーンインストール用にパッケージ化されていない(perry/benchmarks による)
バックエンドLLVM独自(Hermes ベースの codegen)
入力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、Web をコンパイルします。Static Hermes は React Native のネイティブコード経路に焦点を当てています。
  • +ネイティブ UI が組込み済み。Perry の perry/ui モジュールは動作する SwiftUI スタイルの宣言的 UI レイヤで、AppKit / UIKit / GTK4 / Win32 / JNI ウィジェットにコンパイルされます。Static Hermes は UI をホスト(React Native)に委ねます。
  • +公開かつ再現可能なベンチマークスイートと文書化された方法論――perry/benchmarks は名指しされたコンパイラとランタイムに対し、RUNS=11 にわたる中央値 + p95 + σ を示しています。
  • +LLVM バックエンドにより、Perry は数十年にわたる成熟した最適化パス(自動ベクトル化、IndVarSimplify、scalar replacement)を継承し、LLVM がターゲットとするすべてのプラットフォームをサポートします。

Static Hermes が優れている点

  • +Meta がバックアップ――潤沢なエンジニアリングリソースと React Native という明確な戦略的アンカーがあります。
  • +Hermes はすでにプロダクションの React Native アプリでバイトコードエンジンとして出荷されており、Static Hermes はそのエコシステムとツールを継承します。
  • +AOT 型付け規則と JS サブセットのセマンティクスに関するリサーチグレードの取り組みは真に新規性があります。
  • +すでに React Native に乗っているなら、Static Hermes は(利用可能になれば)別のコンパイラに対して書き直すよりも漸進的な経路です。

Perry を選ぶべきとき

今日動作する TS-to-native コンパイラが必要なとき、ひとつの TypeScript コードベースでデスクトップ、モバイル、ウォッチ、TV、WASM、Web をターゲットにしたいとき、または React Native のブリッジなしでネイティブ UI ウィジェットが欲しいときは Perry を選んでください。

Static Hermes を選ぶべきとき

React Native にコミットしており、JavaScript / TypeScript からモバイル上の事前コンパイル済みネイティブコードへの経路が欲しく、リサーチツールの最先端で作業することに抵抗がない場合は Static Hermes(利用可能になれば)を選んでください。

結論

Static Hermes は信頼できるチームによる興味深いリサーチです。Perry は同じ一般的なアイデアに対する動作する製品で、モバイルよりはるかに広いスコープで、今日出荷されています。今すぐ手元に TS-to-native コンパイラが必要なら、Perry が選択肢です。React Native に乗っていてリサーチプロジェクトを追える余裕があるなら、Static Hermes を見守ってください。

Perry を試す

今日から TypeScript をネイティブにコンパイルしましょう。

はじめる