Perry vs Static Hermes
Static Hermes (`shermes`) ist Metas Forschungsprojekt, einen stark typisierten Subset von JavaScript/TypeScript ahead-of-time durch die Hermes-Engine zu kompilieren, primär ausgerichtet auf React Native. Perry ist eine andere Wette auf dieselbe grundsätzliche Idee — TypeScript zu Nativ kompiliert — aber unabhängig in Rust auf LLVM gebaut, mit einem funktionierenden Compiler, 25+ nativen UI-Widgets und 10 Kompilierungszielen, die heute ausgeliefert werden. Stand April 2026 berichtet Perrys eigene Benchmark-Suite, dass Static Hermes als Peer ausprobiert wurde und sich nicht sauber über die getesteten Standard-Paketmanager installieren ließ.
Was ist Static Hermes?
Hermes ist die JavaScript-Engine, die Meta für React Native gebaut hat — bytecode-basiert, AOT-vorkompiliert, optimiert für mobile Startzeit. Static Hermes ist das Forschungsprojekt, Hermes um Ahead-of-Time-Native-Kompilierung eines typisierten JavaScript-Subsets zu erweitern, um React Native einen Pfad zu echtem nativem Code zu geben. Es ist primär ein Compiler-F&E-Projekt; laut Perrys Benchmark-Notizen ist es noch nicht für eine routinemäßige Installation auf macOS arm64 paketiert (`shermes` wurde aus dem Polyglot-Bench mit dem Hinweis ausgeschlossen, es 'is not available on Homebrew or npm in a way that installs cleanly on macOS arm64' — siehe perry/benchmarks/README.md).
Was ist Perry?
Perry ist ein nativer TypeScript-Compiler, geschrieben in Rust, der SWC zum Parsen und LLVM zur Codegenerierung nutzt. Er liefert eine funktionierende CLI (`perry compile`, `perry run`, `perry publish`), 25+ native UI-Widgets, 10 Kompilierungsziele, eine selbstgehostete Runtime und eine unter transparenten Bedingungen gemessene Benchmark-Suite (M1 Max, RUNS=11). Perry ist Pre-1.0, aber produktionsreif: Leute liefern damit gebaute Apps aus (Bloom Engine, Mango, Hone, Pry, dB Meter — siehe perryts.com).
Direktvergleich
| Feature | Perry | Static Hermes |
|---|---|---|
| Status | Pre-1.0 (Alpha) — produktionsreif | Forschung / experimentell |
| Installationspfad (macOS arm64) | Homebrew, APT, npm (@perryts/perry) | Zum Zeitpunkt der Erstellung nicht für saubere Installation paketiert (laut perry/benchmarks) |
| Backend | LLVM | Eigenes (Hermes-basierte Codegen) |
| Input | TypeScript (vollständig) | Typisierter JS/TS-Subset |
| Kompilierungsziele | 10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JS | Hauptsächlich Mobile (React-Native-Kontext) |
| Native UI | 25+ Widgets über AppKit, UIKit, GTK4, Win32, JNI | Über React-Native-Bridge (bei Integration) |
| Standalone-CLI-App-Workflow | Ja — `perry compile main.ts` erzeugt ein Binary | An React-Native-Kontext gebunden |
| Öffentliche Benchmark-Suite | Ja — RUNS=11 gegen Node, Bun, Rust, C++, Go, Swift, Java | Intern / Forschungspapiere |
Wo Perry gewinnt
- +Es existiert als nutzbares Tool. Perry kann heute über Homebrew, APT oder `npm install @perryts/perry` installiert werden, und `perry compile main.ts` erzeugt beim ersten Versuch ein Binary.
- +Breiterer Umfang. Perry kompiliert eigenständige CLI-Apps, native Desktop-Apps, Mobile-Apps, Watch-Apps, TV-Apps, WASM und das Web aus einer TypeScript-Codebasis. Static Hermes konzentriert sich auf den Native-Code-Pfad von React Native.
- +Native UI eingebaut. Perrys perry/ui-Modul ist eine funktionierende deklarative UI-Schicht im SwiftUI-Stil, die zu AppKit/UIKit/GTK4/Win32/JNI-Widgets kompiliert. Static Hermes überlässt UI seinem Host (React Native).
- +Öffentliche, reproduzierbare Benchmark-Suite mit dokumentierter Methodik — perry/benchmarks zeigt Median + p95 + σ über RUNS=11 gegen namentlich genannte Compiler und Runtimes.
- +Das LLVM-Backend bedeutet, dass Perry Jahrzehnte ausgereifter Optimierungs-Passes erbt (Autovektorisierung, IndVarSimplify, Scalar Replacement) und jede Plattform unterstützt, auf die LLVM zielt.
Wo Static Hermes gewinnt
- +Unterstützt von Meta — erhebliche Engineering-Ressourcen und ein klarer strategischer Anker in React Native.
- +Hermes wird bereits in produktiven React-Native-Apps als Bytecode-Engine ausgeliefert; Static Hermes erbt dieses Ökosystem und Tooling.
- +Forschungsarbeit auf Forschungsniveau zu AOT-Typisierungsregeln und JS-Subset-Semantik, die wirklich neuartig ist.
- +Wenn du bereits auf React Native setzt, ist Static Hermes (sobald verfügbar) ein inkrementellerer Pfad als ein Rewrite gegen einen anderen Compiler.
Wann Perry wählen
Wähle Perry, wenn du einen TS-zu-Nativ-Compiler brauchst, der heute funktioniert, wenn du eine TypeScript-Codebasis für Desktop, Mobile, Watch, TV, WASM und das Web willst, oder wenn du native UI-Widgets ohne die Bridge von React Native willst.
Wann Static Hermes wählen
Wähle Static Hermes (sobald verfügbar), wenn du auf React Native festgelegt bist und einen Pfad von JavaScript/TypeScript zu Ahead-of-Time-kompiliertem nativem Code auf Mobile willst und dich an der Forschungstool-Kante wohlfühlst.
Fazit
Static Hermes ist interessante Forschung eines glaubwürdigen Teams. Perry ist ein funktionierendes Produkt mit derselben grundsätzlichen Idee, deutlich breiter als Mobile angelegt und heute ausgeliefert. Wenn du jetzt einen TS-zu-Nativ-Compiler in der Hand brauchst, ist Perry die Wahl. Wenn du auf React Native bist und bereit bist, ein Forschungsprojekt zu verfolgen, behalte Static Hermes im Auge.