Voltar às comparações
Compilador TS-para-nativo

Perry vs Static Hermes

Static Hermes (`shermes`) é o esforço em estágio de pesquisa da Meta para compilar ahead-of-time um subconjunto fortemente tipado de JavaScript/TypeScript através do motor Hermes, principalmente voltado ao React Native. Perry é uma aposta diferente na mesma ideia geral — TypeScript compilado para nativo — mas construído de forma independente em Rust sobre LLVM, com um compilador funcional, mais de 25 widgets de UI nativos e 10 alvos de compilação sendo entregues hoje. Em abril de 2026, a própria suíte de benchmarks do Perry relatou que o Static Hermes foi tentado como par e não foi instalável de forma limpa via os gerenciadores de pacotes padrão testados.

O que é Static Hermes?

Hermes é o motor JavaScript que a Meta construiu para o React Native — baseado em bytecode, pré-compilado AOT, otimizado para tempo de inicialização em mobile. Static Hermes é o esforço de pesquisa para estender o Hermes com compilação nativa ahead-of-time de um subconjunto de JavaScript tipado, com o objetivo de dar ao React Native um caminho para código verdadeiramente nativo. É principalmente um projeto de P&D de compilador; segundo as notas de benchmark do Perry, ainda não está empacotado para instalação rotineira em macOS arm64 (`shermes` foi pulado do bench poliglota com a observação de que 'não está disponível no Homebrew nem no npm de uma forma que instale de forma limpa em macOS arm64' — veja perry/benchmarks/README.md).

O que é Perry?

Perry é um compilador nativo de TypeScript escrito em Rust, usando SWC para parsing e LLVM para geração de código. Entrega uma CLI funcional (`perry compile`, `perry run`, `perry publish`), mais de 25 widgets de UI nativos, 10 alvos de compilação, um runtime auto-hospedado e uma suíte de benchmarks medida sob condições transparentes (M1 Max, RUNS=11). Perry está pré-1.0, mas em trilho de produção: pessoas estão entregando aplicações construídas com ele (Bloom Engine, Mango, Hone, Pry, dB Meter — veja perryts.com).

Lado a lado

FuncionalidadePerryStatic Hermes
StatusPré-1.0 (alfa) — em trilho de produçãoPesquisa / experimental
Caminho de instalação (macOS arm64)Homebrew, APT, npm (@perryts/perry)Não empacotado para instalação limpa no momento da redação (segundo perry/benchmarks)
BackendLLVMPersonalizado (codegen baseado em Hermes)
EntradaTypeScript (completo)Subconjunto JS/TS tipado
Alvos de compilação10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JSPrincipalmente mobile (contexto React Native)
UI nativa25+ widgets via AppKit, UIKit, GTK4, Win32, JNIVia bridge do React Native (quando integrado)
Fluxo de trabalho de app CLI standaloneSim — `perry compile main.ts` produz um binárioVinculado ao contexto React Native
Suíte pública de benchmarksSim — RUNS=11 contra Node, Bun, Rust, C++, Go, Swift, JavaInterna / artigos de pesquisa

Onde o Perry ganha

  • +Existe como ferramenta utilizável. Perry pode ser instalado hoje via Homebrew, APT ou `npm install @perryts/perry`, e `perry compile main.ts` produz um binário na primeira tentativa.
  • +Escopo mais amplo. Perry compila aplicações CLI standalone, aplicações desktop nativas, aplicações mobile, aplicações de relógio, aplicações de TV, WASM e a web a partir de um único código TypeScript. Static Hermes está focado no caminho de código nativo do React Native.
  • +UI nativa integrada. O módulo perry/ui do Perry é uma camada de UI declarativa estilo SwiftUI funcional que compila para widgets AppKit/UIKit/GTK4/Win32/JNI. Static Hermes deixa a UI para seu host (React Native).
  • +Suíte de benchmarks pública e reproduzível com metodologia documentada — perry/benchmarks mostra mediana + p95 + σ ao longo de RUNS=11 contra compiladores e runtimes nomeados.
  • +Backend LLVM significa que o Perry herda décadas de passes de otimização maduros (autovetorização, IndVarSimplify, scalar replacement) e suporta cada plataforma alvo do LLVM.

Onde o Static Hermes ganha

  • +Apoiado pela Meta — recursos significativos de engenharia e uma âncora estratégica clara no React Native.
  • +Hermes já está em produção em aplicações React Native como motor de bytecode; Static Hermes herda esse ecossistema e ferramentas.
  • +Trabalho em nível de pesquisa sobre regras de tipagem AOT e semântica de subconjunto de JS que é genuinamente novo.
  • +Se você já está no React Native, Static Hermes (quando disponível) é um caminho mais incremental do que reescrever contra um compilador diferente.

Quando escolher Perry

Escolha o Perry se você precisa de um compilador TS-para-nativo que funciona hoje, quer um único código TypeScript para alvejar desktop, mobile, relógio, TV, WASM e a web, ou quer widgets de UI nativos sem o bridge do React Native.

Quando escolher Static Hermes

Escolha o Static Hermes (quando disponível) se você está comprometido com o React Native e quer um caminho de JavaScript/TypeScript para código nativo compilado ahead-of-time em mobile, e está confortável trabalhando na borda das ferramentas de pesquisa.

Veredito

Static Hermes é uma pesquisa interessante de uma equipe credível. Perry é um produto funcional na mesma ideia geral, com escopo muito mais amplo do que mobile e sendo entregue hoje. Se você precisa de um compilador TS-para-nativo em mãos agora, Perry é a escolha. Se você está no React Native e disposto a acompanhar um projeto de pesquisa, observe o Static Hermes.

Experimente o Perry

Compile seu TypeScript para nativo hoje.

Começar