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

Perry vs Static Hermes

Static Hermes(`shermes`)は、JavaScript / TypeScript の強く型付けされたサブセットを Hermes エンジン上で事前コンパイルしようとする Meta の研究段階の取り組みで、主に React Native を対象としています。Perry は同じ発想――TypeScript のネイティブコンパイル――に懸けていますが、Rust で LLVM 上に独立して構築されており、動作するコンパイラ、25 以上のネイティブ UI ウィジェット、そして今日出荷されている 10 のコンパイルターゲットを備えています。2026 年半ば時点で `shermes` はまだソースからのビルドが必要です――Perry のベンチマークスイートは対等な候補として試しましたが、標準的なパッケージマネージャ経由でのクリーンなインストール手段は見つかりませんでした――そして 2026 年初めに React Native のデフォルトとなった Hermes V1 エンジンには、静的コンパイル機能は明確に含まれていません。

Static Hermes とは?

Hermes は Meta が React Native 向けに開発した JavaScript エンジンです――バイトコードベースで AOT による事前コンパイルを行い、モバイルの起動時間に最適化されています。Static Hermes は、型付き JavaScript サブセットの事前ネイティブコンパイルによって Hermes を拡張し、React Native に本物のネイティブコードへの道を与えようとする研究の取り組みです。`static_h` ブランチは現在リポジトリのデフォルトブランチとなり活発に開発が続いていますが、実際に React Native ユーザーに届いたのは Hermes V1――React Native 0.84(2026 年 2 月)でデフォルトエンジンとなった新しいバイトコードコンパイラおよび VM――であり、これは JS をネイティブバイナリにコンパイルすることも型情報を利用することもありません。Static Hermes 自体はいまもコンパイラの研究開発プロジェクトのままです。Perry のベンチマークノートによれば、macOS arm64 での日常的なインストールにはまだパッケージ化されておらず(`shermes` はポリグロットベンチマークから除外され、「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 をネイティブにコンパイルしましょう。

はじめる