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é | Perry | Static Hermes |
|---|---|---|
| Statut | Pré-1.0 (alpha) — sur la voie de la production | Recherche / 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) |
| Backend | LLVM | Personnalisé (codegen basé sur Hermes) |
| Entrée | TypeScript (complet) | Sous-ensemble JS/TS typé |
| Cibles de compilation | 10 : macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JS | Principalement mobile (contexte React Native) |
| UI native | Plus de 25 widgets via AppKit, UIKit, GTK4, Win32, JNI | Via le pont React Native (lorsqu'intégré) |
| Workflow d'application CLI autonome | Oui — `perry compile main.ts` produit un binaire | Lié au contexte React Native |
| Suite de benchmarks publique | Oui — RUNS=11 face à Node, Bun, Rust, C++, Go, Swift, Java | Interne / 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.