14 poin oleh dopeflamingo 4 hari lalu | 7 komentar | Bagikan ke WhatsApp

Paradigma pengembangan TypeScript yang selama ini umum adalah mentranspilasi kode TS, yang merupakan abstraksi tingkat tinggi, menjadi JavaScript, lalu menjalankannya di atas mesin runtime JIT yang berat seperti V8 atau JavaScriptCore (Node.js, Bun, Deno, dan sebagainya).

Belakangan ini, Perry yang muncul di ranah open source adalah kompiler Native-First berbasis Rust yang bertujuan menyingkirkan sepenuhnya model runtime tradisional tersebut dan langsung mengompilasi kode TypeScript menjadi biner native standalone.


💡 Arsitektur inti dan fitur

  • No Runtime (tanpa runtime): Tanpa lapisan perantara berat seperti mesin V8, Electron, atau JVM, Perry mem-parsing kode TS dengan SWC dan membangunnya langsung menjadi kode mesin platform target melalui infrastruktur LLVM.

  • Build lintas platform dari satu source: Dari satu codebase TypeScript, Perry menghasilkan biner yang mendukung macOS, iOS, Android, Linux, dan Windows.

  • True TypeScript Support: Bukan "bahasa terpisah yang mirip TS" seperti AssemblyScript, melainkan menargetkan dukungan ekosistem TypeScript yang utuh berbasis Strict Mode.

  • Kompatibel dengan framework UI ultra-ringan: Menawarkan ukuran biner hanya beberapa MB dan cold start sub-second yang mendekati 0ms. Selain dapat dipadukan dengan GUI native platform seperti SwiftUI, GTK4, dan WinUI, penulisan JSX melalui renderer React miliknya sendiri juga dimungkinkan.


🛠️ Status pengembangan dan keterbatasan (mencerminkan masukan Hacker News)
Karena proyek ini menjadi topik hangat belakangan ini di HN dan tempat lain, tantangan untuk mencapai level production pun dibahas dengan cukup jelas.

  • Batasan karakteristik JS yang dinamis: Gaya JavaScript dinamis seperti menyuntikkan field/metode secara arbitrer ke objek saat runtime atau memodifikasi prototype tidak didukung karena sifat kompilasi statis, dan Perry berjalan berdasarkan subset TS yang ketat dan deterministik.

  • Emulasi modul bawaan Node.js: Saat ini Perry mengemulasikan pustaka standar HTTP Node.js dengan bertumpu pada ekosistem Rust seperti hyper, rustls, dan tokio. Beberapa modul seperti Fastify sudah berhasil dikompilasi dan perkembangannya cepat, tetapi kompatibilitas 100% dengan pustaka ekosistem yang kompleks dan melibatkan dynamic import seperti Express masih menjadi tantangan yang sedang ditangani pada tahap alpha.


# Cara pakainya sangat sederhana  
$ perry compile src/main.ts -o myapp  
$ ./myapp  # Menjalankan biner native murni tanpa dependensi  

Sebagai upaya memperluas TypeScript yang selama ini terkurung di ekosistem web ke ranah pemrograman sistem dan aplikasi native ultra-ringan, ini adalah proyek yang layak diikuti dengan antusias oleh mereka yang tertarik pada arsitektur sistem berperforma tinggi maupun pipeline kompiler LLVM.

GitHub: https://github.com/PerryTS/perry

7 komentar

 
cloverhearts 2 hari lalu

Saya mendukungnya.

 
tsboard 3 hari lalu

Pendekatannya menarik. Hanya dengan menghapus runtime saja sudah merupakan pencapaian besar!

 
jeeeyul 3 hari lalu

Entah kenapa rasanya memang begitu. Tapi jujur saja, saya merasa keamanan memorinya kemungkinan akan jadi masalah serius.

Dan kalau tidak perlu dynamic lookup, memang ada alasan untuk sejak awal mengembangkannya sebagai skrip?

 
shakespeares 4 hari lalu

Nuansa nama perry bagus juga.

 
sea715 4 hari lalu

Menarik juga.

 
ohah173 4 hari lalu

Idenya atau pendekatannya tampak sangat bagus.
Sepertinya juga mendukung sintaks React, dan melihat hal-hal seperti decorator belum didukung, untuk saat ini rasanya lebih cocok dicoba pada proyek baru daripada memigrasikan program yang sudah ada,

Kalau sesuai roadmap nanti bisa mencapai tingkat yang memungkinkan migrasi tanpa biaya berarti, build multiplatform dengan satu bahasa bisa menjadi jauh lebih rapi daripada sekarang, dan bottleneck performa akibat build multiplatform yang selama ini dilakukan dengan JavaScript juga sepertinya akan banyak berkurang.

Namun, saya merasa kompatibilitas dan menjamin hasil yang sama di berbagai platform akan sangat sulit, dan dengan wawasan saya yang terbatas, saya juga merasa pemeliharaannya tidak akan mudah meskipun ini era AI besar-besaran, jadi selain fakta bahwa pembuatnya tampaknya akan sangat kewalahan, saya benar-benar menantikannya.

 
heycalmdown 4 hari lalu

Menarik.