Perry vs Static Hermes
Static Hermes (`shermes`) เป็นความพยายามระดับงานวิจัยของ Meta ในการคอมไพล์ JavaScript/TypeScript subset ที่มี type แข็งแกร่งแบบ ahead-of-time ผ่าน Hermes engine โดยมุ่งเป้าหลักไปที่ React Native Perry เป็นเดิมพันที่แตกต่างกันบนแนวคิดทั่วไปเดียวกัน — TypeScript คอมไพล์เป็นเนทีฟ — แต่สร้างขึ้นอย่างอิสระด้วย Rust บน LLVM พร้อมคอมไพเลอร์ที่ใช้งานได้ วิดเจ็ต UI เนทีฟ 25+ ตัว และ 10 เป้าหมายการคอมไพล์ที่ส่งมอบในวันนี้ ณ เดือนเมษายน 2026 ชุดเบนช์มาร์กของ Perry รายงานว่า Static Hermes ถูกทดสอบเป็นเพียร์แต่ไม่สามารถติดตั้งได้อย่างสะอาดผ่าน package manager มาตรฐานที่ใช้ทดสอบ
Static Hermes คืออะไร?
Hermes คือ JavaScript engine ที่ Meta สร้างขึ้นสำหรับ React Native — อิงกับ bytecode, คอมไพล์ AOT ล่วงหน้า, ปรับแต่งสำหรับเวลาเริ่มต้นบนมือถือ Static Hermes คือความพยายามวิจัยในการขยาย Hermes ด้วยการคอมไพล์เนทีฟ ahead-of-time ของ JavaScript subset ที่มี type มีจุดประสงค์เพื่อให้ React Native มีเส้นทางสู่โค้ดเนทีฟอย่างแท้จริง เป็นโครงการ R&D ของคอมไพเลอร์เป็นหลัก; ตามบันทึกของ perry/benchmarks ยังไม่ได้ถูกแพ็กเกจสำหรับการติดตั้งทั่วไปบน macOS arm64 (`shermes` ถูกข้ามจากการเบนช์มาร์กแบบ polyglot ด้วยหมายเหตุว่า 'is not available on Homebrew or npm in a way that installs cleanly on macOS arm64' — ดู perry/benchmarks/README.md)
Perry คืออะไร?
Perry เป็นคอมไพเลอร์ TypeScript เนทีฟที่เขียนด้วย Rust ใช้ SWC สำหรับการ parse และ LLVM สำหรับการสร้างโค้ด มาพร้อม CLI ที่ใช้งานได้ (`perry compile`, `perry run`, `perry publish`) วิดเจ็ต UI เนทีฟ 25+ ตัว 10 เป้าหมายการคอมไพล์ รันไทม์ self-hosted และชุดเบนช์มาร์กที่วัดผลภายใต้เงื่อนไขที่โปร่งใส (M1 Max, RUNS=11) Perry เป็น pre-1.0 แต่อยู่ในสายโปรดักชัน: มีคนกำลังส่งมอบแอปที่สร้างด้วย Perry (Bloom Engine, Mango, Hone, Pry, dB Meter — ดู perryts.com)
เคียงข้างกัน
| ฟีเจอร์ | Perry | Static Hermes |
|---|---|---|
| สถานะ | Pre-1.0 (alpha) — สายโปรดักชัน | งานวิจัย / ทดลอง |
| เส้นทางการติดตั้ง (macOS arm64) | Homebrew, APT, npm (@perryts/perry) | ยังไม่ได้แพ็กเกจสำหรับการติดตั้งสะอาดในเวลาที่เขียน (ตาม perry/benchmarks) |
| Backend | LLVM | Custom (codegen อิงกับ Hermes) |
| อินพุต | TypeScript (เต็มรูปแบบ) | JS/TS subset ที่มี type |
| เป้าหมายการคอมไพล์ | 10: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web/JS | หลัก ๆ คือมือถือ (บริบท React Native) |
| UI เนทีฟ | 25+ widget ผ่าน AppKit, UIKit, GTK4, Win32, JNI | ผ่านสะพาน React Native (เมื่อ integrate) |
| Workflow แอป CLI standalone | ใช่ — `perry compile main.ts` สร้างไบนารี | ผูกกับบริบท React Native |
| ชุดเบนช์มาร์กสาธารณะ | ใช่ — RUNS=11 เทียบกับ Node, Bun, Rust, C++, Go, Swift, Java | ภายใน / เอกสารวิจัย |
จุดที่ Perry ชนะ
- +มีตัวตนเป็นเครื่องมือที่ใช้งานได้ Perry ติดตั้งได้วันนี้ผ่าน Homebrew, APT หรือ `npm install @perryts/perry` และ `perry compile main.ts` สร้างไบนารีในความพยายามครั้งแรก
- +ขอบเขตที่กว้างกว่า Perry คอมไพล์แอป CLI standalone, แอปเดสก์ท็อปเนทีฟ, แอปมือถือ, แอป watch, แอป TV, WASM และเว็บจากโค้ดเบส TypeScript เดียว Static Hermes มุ่งเน้นที่เส้นทางโค้ดเนทีฟของ React Native
- +UI เนทีฟในตัว โมดูล perry/ui ของ Perry เป็นเลเยอร์ UI declarative สไตล์ SwiftUI ที่ใช้งานได้ ซึ่งคอมไพล์เป็น widget AppKit/UIKit/GTK4/Win32/JNI Static Hermes ปล่อยให้ UI ขึ้นอยู่กับ host ของมัน (React Native)
- +ชุดเบนช์มาร์กสาธารณะที่ทำซ้ำได้พร้อมระเบียบวิธีที่บันทึกไว้ — perry/benchmarks แสดงค่ากลาง + p95 + σ ใน RUNS=11 เทียบกับคอมไพเลอร์และรันไทม์ที่ระบุชื่อ
- +Backend LLVM หมายความว่า Perry สืบทอด pass การปรับแต่งที่สมบูรณ์มานานหลายทศวรรษ (autovectorization, IndVarSimplify, scalar replacement) และรองรับทุกแพลตฟอร์มที่ LLVM รองรับ
จุดที่ Static Hermes ชนะ
- +ได้รับการสนับสนุนจาก Meta — ทรัพยากรวิศวกรรมที่สำคัญและจุดยึดทางกลยุทธ์ที่ชัดเจนใน React Native
- +Hermes กำลังใช้งานในแอป React Native โปรดักชันแล้วในฐานะ bytecode engine; Static Hermes สืบทอดระบบนิเวศและเครื่องมือนั้น
- +งานระดับวิจัยเกี่ยวกับกฎ AOT typing และ semantics ของ JS subset ที่ใหม่จริง ๆ
- +ถ้าคุณอยู่บน React Native อยู่แล้ว Static Hermes (เมื่อพร้อมใช้งาน) เป็นเส้นทางที่เพิ่มขึ้นแบบค่อยเป็นค่อยไปมากกว่าการเขียนใหม่กับคอมไพเลอร์อื่น
เมื่อใดควรเลือก Perry
เลือก Perry ถ้าคุณต้องการคอมไพเลอร์ TS-to-native ที่ใช้งานได้ในวันนี้ คุณต้องการโค้ดเบส TypeScript เดียวสำหรับเป้าหมายเดสก์ท็อป, มือถือ, watch, TV, WASM และเว็บ หรือคุณต้องการวิดเจ็ต UI เนทีฟโดยไม่ต้องผ่านสะพาน React Native
เมื่อใดควรเลือก Static Hermes
เลือก Static Hermes (เมื่อพร้อมใช้งาน) ถ้าคุณยึดมั่นกับ React Native และต้องการเส้นทางจาก JavaScript/TypeScript ไปยังโค้ดเนทีฟที่คอมไพล์ ahead-of-time บนมือถือ และคุณรู้สึกสบายใจกับการทำงานบนขอบของเครื่องมือระดับวิจัย
บทสรุป
Static Hermes เป็นงานวิจัยที่น่าสนใจจากทีมที่น่าเชื่อถือ Perry เป็นผลิตภัณฑ์ที่ใช้งานได้บนแนวคิดทั่วไปเดียวกัน ขยายขอบเขตให้กว้างกว่ามือถือมากและส่งมอบในวันนี้ ถ้าคุณต้องการคอมไพเลอร์ TS-to-native ในมือคุณตอนนี้ Perry คือคำตอบ ถ้าคุณอยู่บน React Native และเต็มใจติดตามโครงการวิจัย ก็ติดตาม Static Hermes