Perry vs Static Hermes
Static Hermes (`shermes`) adalah upaya tahap riset Meta untuk mengompilasi subset JavaScript/TypeScript yang bertipe kuat secara ahead-of-time melalui engine Hermes, terutama ditujukan untuk React Native. Perry adalah taruhan berbeda pada ide umum yang sama — TypeScript dikompilasi ke native — tetapi dibangun secara independen dalam Rust di atas LLVM, dengan kompiler yang berfungsi, 25+ widget UI native, dan 10 target kompilasi yang dikirim hari ini. Per April 2026, suite benchmark Perry sendiri melaporkan bahwa Static Hermes telah dicoba sebagai peer dan tidak dapat diinstal dengan bersih melalui manajer paket standar yang diuji.
Apa itu Static Hermes?
Hermes adalah engine JavaScript yang dibangun Meta untuk React Native — berbasis bytecode, AOT-precompiled, dioptimalkan untuk waktu startup mobile. Static Hermes adalah upaya riset untuk memperluas Hermes dengan kompilasi native ahead-of-time dari subset JavaScript bertipe, dimaksudkan untuk memberi React Native jalur ke kode native sejati. Ini terutama proyek R&D kompiler; menurut catatan benchmark Perry, ia belum dipaketkan untuk instalasi rutin di macOS arm64 (`shermes` dilewati dari benchmark polyglot dengan catatan bahwa ia 'tidak tersedia di Homebrew atau npm dengan cara yang dapat diinstal dengan bersih di macOS arm64' — lihat perry/benchmarks/README.md).
Apa itu Perry?
Perry adalah kompiler TypeScript native yang ditulis dalam Rust, menggunakan SWC untuk parsing dan LLVM untuk pembuatan kode. Ia mengirim CLI yang berfungsi (`perry compile`, `perry run`, `perry publish`), 25+ widget UI native, 10 target kompilasi, runtime self-hosted, dan suite benchmark yang diukur dalam kondisi transparan (M1 Max, RUNS=11). Perry masih pra-1.0 tetapi jalur produksi: orang-orang sudah mengirim aplikasi yang dibangun dengannya (Bloom Engine, Mango, Hone, Pry, dB Meter — lihat perryts.com).
Berdampingan
| Fitur | Perry | Static Hermes |
|---|---|---|
| Status | Pra-1.0 (alfa) — jalur produksi | Riset / eksperimental |
| Jalur instalasi (macOS arm64) | Homebrew, APT, npm (@perryts/perry) | Belum dipaketkan untuk instalasi bersih saat penulisan (per perry/benchmarks) |
| Backend | LLVM | Kustom (codegen berbasis Hermes) |
| Input | TypeScript (penuh) | Subset JS/TS bertipe |
| Target kompilasi | 10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JS | Terutama mobile (konteks React Native) |
| UI native | 25+ widget via AppKit, UIKit, GTK4, Win32, JNI | Via bridge React Native (saat terintegrasi) |
| Alur kerja aplikasi CLI standalone | Ya — `perry compile main.ts` menghasilkan binary | Terikat pada konteks React Native |
| Suite benchmark publik | Ya — RUNS=11 melawan Node, Bun, Rust, C++, Go, Swift, Java | Internal / makalah riset |
Di mana Perry unggul
- +Ia ada sebagai tool yang dapat digunakan. Perry dapat diinstal hari ini via Homebrew, APT, atau `npm install @perryts/perry`, dan `perry compile main.ts` menghasilkan binary pada percobaan pertama.
- +Cakupan lebih luas. Perry mengompilasi aplikasi CLI standalone, aplikasi desktop native, aplikasi mobile, aplikasi watch, aplikasi TV, WASM, dan web dari satu kode sumber TypeScript. Static Hermes berfokus pada jalur kode native React Native.
- +UI native bawaan. Modul perry/ui dari Perry adalah lapisan UI deklaratif gaya SwiftUI yang berfungsi, yang dikompilasi ke widget AppKit/UIKit/GTK4/Win32/JNI. Static Hermes menyerahkan UI ke host-nya (React Native).
- +Suite benchmark publik yang dapat direproduksi dengan metodologi terdokumentasi — perry/benchmarks menampilkan median + p95 + σ pada RUNS=11 melawan kompiler dan runtime yang disebutkan.
- +Backend LLVM berarti Perry mewarisi puluhan tahun pass optimasi yang matang (autovectorization, IndVarSimplify, scalar replacement) dan mendukung setiap platform yang ditargetkan LLVM.
Di mana Static Hermes unggul
- +Didukung oleh Meta — sumber daya rekayasa yang signifikan dan jangkar strategis yang jelas di React Native.
- +Hermes sudah dikirim dalam aplikasi React Native produksi sebagai engine bytecode; Static Hermes mewarisi ekosistem dan tooling itu.
- +Pekerjaan tingkat riset pada aturan typing AOT dan semantik subset JS yang benar-benar baru.
- +Jika Anda sudah di React Native, Static Hermes (saat tersedia) adalah jalur yang lebih bertahap daripada menulis ulang melawan kompiler yang berbeda.
Kapan memilih Perry
Pilih Perry jika Anda butuh kompiler TS-ke-native yang berfungsi hari ini, Anda ingin satu kode sumber TypeScript untuk menargetkan desktop, mobile, watch, TV, WASM, dan web, atau Anda ingin widget UI native tanpa bridge React Native.
Kapan memilih Static Hermes
Pilih Static Hermes (saat tersedia) jika Anda berkomitmen pada React Native dan ingin jalur dari JavaScript/TypeScript ke kode native yang dikompilasi ahead-of-time di mobile, dan Anda nyaman bekerja di tepi tooling riset.
Kesimpulan
Static Hermes adalah riset menarik dari tim yang kredibel. Perry adalah produk yang berfungsi pada ide umum yang sama, dengan cakupan yang jauh lebih luas daripada mobile dan dikirim hari ini. Jika Anda butuh kompiler TS-ke-native di tangan Anda sekarang, Perry adalah pilihannya. Jika Anda di React Native dan bersedia melacak proyek riset, perhatikan Static Hermes.