Retour aux comparaisons
Compilateur TS-vers-natif

Perry vs Static Hermes

Static Hermes (`shermes`) est l'effort de recherche de Meta visant à compiler ahead-of-time un sous-ensemble fortement typé de JavaScript/TypeScript via le moteur Hermes, principalement destiné à React Native. Perry est un autre pari sur la même idée générale — TypeScript compilé en natif — mais bâti indépendamment en Rust sur LLVM, avec un compilateur fonctionnel, plus de 25 widgets UI natifs et 10 cibles de compilation livrées dès aujourd'hui. En avril 2026, la propre suite de benchmarks de Perry indique que Static Hermes a été essayé comme pair et n'a pas pu être installé proprement via les gestionnaires de paquets standards qu'elle a testés.

Qu'est-ce que Static Hermes ?

Hermes est le moteur JavaScript que Meta a construit pour React Native — basé sur du bytecode, précompilé AOT, optimisé pour le temps de démarrage mobile. Static Hermes est l'effort de recherche pour étendre Hermes avec une compilation native ahead-of-time d'un sous-ensemble JavaScript typé, destiné à donner à React Native une voie vers le vrai code natif. C'est avant tout un projet de R&D de compilateur ; selon les notes de benchmark de Perry, il n'est pas encore conditionné pour une installation routinière sur macOS arm64 (`shermes` a été ignoré du benchmark polyglotte avec une note indiquant qu'il « n'est pas disponible sur Homebrew ou npm d'une manière qui s'installe proprement sur macOS arm64 » — voir perry/benchmarks/README.md).

Qu'est-ce que Perry ?

Perry est un compilateur TypeScript natif écrit en Rust, utilisant SWC pour l'analyse et LLVM pour la génération de code. Il livre une CLI fonctionnelle (`perry compile`, `perry run`, `perry publish`), plus de 25 widgets UI natifs, 10 cibles de compilation, un runtime auto-hébergé et une suite de benchmarks mesurée dans des conditions transparentes (M1 Max, RUNS=11). Perry est en pré-1.0 mais sur la voie de la production : des gens livrent des applications construites avec lui (Bloom Engine, Mango, Hone, Pry, dB Meter — voir perryts.com).

Côte à côte

FonctionnalitéPerryStatic Hermes
StatutPré-1.0 (alpha) — sur la voie de la productionRecherche / expérimental
Voie d'installation (macOS arm64)Homebrew, APT, npm (@perryts/perry)Pas conditionné pour une installation propre au moment de la rédaction (selon perry/benchmarks)
BackendLLVMPersonnalisé (codegen basé sur Hermes)
EntréeTypeScript (complet)Sous-ensemble JS/TS typé
Cibles de compilation10 : macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JSPrincipalement mobile (contexte React Native)
UI nativePlus de 25 widgets via AppKit, UIKit, GTK4, Win32, JNIVia le pont React Native (lorsqu'intégré)
Workflow d'application CLI autonomeOui — `perry compile main.ts` produit un binaireLié au contexte React Native
Suite de benchmarks publiqueOui — RUNS=11 face à Node, Bun, Rust, C++, Go, Swift, JavaInterne / articles de recherche

Là où Perry l'emporte

  • +Il existe en tant qu'outil utilisable. Perry peut être installé dès aujourd'hui via Homebrew, APT ou `npm install @perryts/perry`, et `perry compile main.ts` produit un binaire dès la première tentative.
  • +Portée plus large. Perry compile des applications CLI autonomes, des applications desktop natives, des applications mobiles, des applications montre, des applications TV, du WASM et du web depuis un seul codebase TypeScript. Static Hermes se concentre sur la voie de code natif de React Native.
  • +UI native intégrée. Le module perry/ui de Perry est une couche d'UI déclarative de style SwiftUI fonctionnelle qui compile vers les widgets AppKit/UIKit/GTK4/Win32/JNI. Static Hermes laisse l'UI à son hôte (React Native).
  • +Suite de benchmarks publique et reproductible avec une méthodologie documentée — perry/benchmarks affiche médiane + p95 + σ sur RUNS=11 face à des compilateurs et runtimes nommés.
  • +Le backend LLVM signifie que Perry hérite de décennies de passes d'optimisation matures (autovectorisation, IndVarSimplify, scalar replacement) et supporte toutes les plateformes que LLVM cible.

Là où Static Hermes l'emporte

  • +Soutenu par Meta — d'importantes ressources d'ingénierie et un ancrage stratégique clair dans React Native.
  • +Hermes est déjà livré en production dans des applications React Native comme moteur bytecode ; Static Hermes hérite de cet écosystème et de cet outillage.
  • +Travail de niveau recherche sur les règles de typage AOT et la sémantique du sous-ensemble JS qui est véritablement novateur.
  • +Si vous êtes déjà sur React Native, Static Hermes (lorsqu'il sera disponible) est une voie plus incrémentale qu'une réécriture sur un compilateur différent.

Quand choisir Perry

Choisissez Perry s'il vous faut un compilateur TS-vers-natif qui fonctionne aujourd'hui, si vous voulez un seul codebase TypeScript pour cibler desktop, mobile, montre, TV, WASM et le web, ou si vous voulez des widgets UI natifs sans le pont de React Native.

Quand choisir Static Hermes

Choisissez Static Hermes (lorsqu'il sera disponible) si vous êtes engagé sur React Native et voulez une voie de JavaScript/TypeScript vers du code natif compilé ahead-of-time sur mobile, et si vous êtes à l'aise pour travailler sur l'extrémité outillage-recherche.

Verdict

Static Hermes est une recherche intéressante d'une équipe crédible. Perry est un produit fonctionnel sur la même idée générale, à la portée bien plus large que le mobile et livré dès aujourd'hui. S'il vous faut un compilateur TS-vers-natif entre les mains maintenant, Perry est le choix. Si vous êtes sur React Native et prêt à suivre un projet de recherche, surveillez Static Hermes.

Essayer Perry

Compilez votre TypeScript en natif dès aujourd'hui.

Commencer