Torna ai confronti
Compilatore da TS a nativo

Perry vs Static Hermes

Static Hermes (`shermes`) è lo sforzo a stadio di ricerca di Meta per compilare ahead-of-time un sottoinsieme fortemente tipizzato di JavaScript/TypeScript attraverso il motore Hermes, principalmente rivolto a React Native. Perry è una scommessa diversa sulla stessa idea generale — TypeScript compilato in nativo — ma costruita indipendentemente in Rust su LLVM, con un compilatore funzionante, 25+ widget UI nativi e 10 target di compilazione distribuiti oggi. Ad aprile 2026, la suite di benchmark di Perry stessa riporta che Static Hermes è stato provato come peer e non era installabile in modo pulito tramite i package manager standard testati.

Cos'è Static Hermes?

Hermes è il motore JavaScript che Meta ha costruito per React Native — basato su bytecode, precompilato AOT, ottimizzato per il tempo di avvio mobile. Static Hermes è lo sforzo di ricerca per estendere Hermes con compilazione nativa ahead-of-time di un sottoinsieme JavaScript tipizzato, inteso a dare a React Native un percorso verso vero codice nativo. È principalmente un progetto di R&S sui compilatori; secondo le note di benchmark di Perry, non è ancora pacchettizzato per l'installazione di routine su macOS arm64 (`shermes` è stato saltato dal benchmark poliglotta con una nota che 'non è disponibile su Homebrew o npm in un modo che si installi pulitamente su macOS arm64' — vedi perry/benchmarks/README.md).

Cos'è Perry?

Perry è un compilatore TypeScript nativo scritto in Rust, che usa SWC per il parsing e LLVM per la generazione del codice. Distribuisce una CLI funzionante (`perry compile`, `perry run`, `perry publish`), 25+ widget UI nativi, 10 target di compilazione, un runtime self-hosted e una suite di benchmark misurata in condizioni trasparenti (M1 Max, RUNS=11). Perry è pre-1.0 ma production-track: ci sono persone che distribuiscono app costruite con esso (Bloom Engine, Mango, Hone, Pry, dB Meter — vedi perryts.com).

Fianco a fianco

CaratteristicaPerryStatic Hermes
StatoPre-1.0 (alpha) — production-trackRicerca / sperimentale
Percorso di installazione (macOS arm64)Homebrew, APT, npm (@perryts/perry)Non pacchettizzato per installazione pulita al momento della scrittura (per perry/benchmarks)
BackendLLVMPersonalizzato (codegen basato su Hermes)
InputTypeScript (completo)Sottoinsieme JS/TS tipizzato
Target di compilazione10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JSPrincipalmente mobile (contesto React Native)
UI nativa25+ widget tramite AppKit, UIKit, GTK4, Win32, JNITramite il bridge React Native (quando integrato)
Workflow per app CLI autonomeSì — `perry compile main.ts` produce un binarioLegato al contesto React Native
Suite di benchmark pubblicaSì — RUNS=11 contro Node, Bun, Rust, C++, Go, Swift, JavaInterna / paper di ricerca

Dove vince Perry

  • +Esiste come strumento utilizzabile. Perry può essere installato oggi tramite Homebrew, APT o `npm install @perryts/perry`, e `perry compile main.ts` produce un binario al primo tentativo.
  • +Ambito più ampio. Perry compila app CLI autonome, app desktop native, app mobile, app per watch, app per TV, WASM e il web da un unico codice TypeScript. Static Hermes è focalizzato sul percorso di codice nativo di React Native.
  • +UI nativa integrata. Il modulo perry/ui di Perry è un layer UI dichiarativo in stile SwiftUI funzionante che compila in widget AppKit/UIKit/GTK4/Win32/JNI. Static Hermes lascia l'UI al suo host (React Native).
  • +Suite di benchmark pubblica e riproducibile con metodologia documentata — perry/benchmarks mostra mediana + p95 + σ su RUNS=11 contro compilatori e runtime nominati.
  • +Il backend LLVM significa che Perry eredita decenni di passi di ottimizzazione maturi (autovettorizzazione, IndVarSimplify, scalar replacement) e supporta ogni piattaforma che LLVM supporta.

Dove vince Static Hermes

  • +Sostenuto da Meta — risorse di ingegneria significative e un'ancora strategica chiara in React Native.
  • +Hermes è già distribuito in app React Native di produzione come motore bytecode; Static Hermes eredita quell'ecosistema e quella tooling.
  • +Lavoro di livello ricerca su regole di tipizzazione AOT e semantica del sottoinsieme JS che è genuinamente innovativo.
  • +Se sei già su React Native, Static Hermes (quando disponibile) è un percorso più incrementale rispetto a riscrivere contro un compilatore diverso.

Quando scegliere Perry

Scegli Perry se hai bisogno di un compilatore TS-to-native che funzioni oggi, vuoi un unico codice TypeScript per puntare a desktop, mobile, watch, TV, WASM e il web, o vuoi widget UI nativi senza il bridge di React Native.

Quando scegliere Static Hermes

Scegli Static Hermes (quando disponibile) se sei impegnato con React Native e vuoi un percorso da JavaScript/TypeScript a codice nativo compilato ahead-of-time su mobile, e ti senti a tuo agio a lavorare al limite del tooling di ricerca.

Verdetto

Static Hermes è ricerca interessante da un team credibile. Perry è un prodotto funzionante sulla stessa idea generale, con un ambito molto più ampio del solo mobile e distribuito oggi. Se hai bisogno di un compilatore TS-to-native nelle tue mani ora, Perry è la scelta. Se sei su React Native e disposto a seguire un progetto di ricerca, tieni d'occhio Static Hermes.

Prova Perry

Compila il tuo TypeScript in nativo oggi.

Inizia