Kembali ke perbandingan
Runtime TypeScript

Perry vs Deno

Deno adalah runtime JavaScript dan TypeScript modern yang dibangun di atas V8, dengan dukungan TypeScript kelas satu, model keamanan berbasis izin, dan perintah `deno compile` yang menghasilkan satu executable dengan membundel V8 bersama aplikasi Anda. Perry mengompilasi TypeScript langsung ke kode mesin native — tanpa V8 di output, tanpa lapisan runtime, hanya binary native kecil.

Apa itu Deno?

Deno adalah runtime TypeScript dan JavaScript yang dibangun dalam Rust di atas V8 dan Tokio. Ia mengeksekusi source `.ts` secara langsung, memiliki tooling bawaan (formatter, linter, test runner, language server), dan menggunakan model izin yang membutuhkan pemberian izin eksplisit untuk akses jaringan, file, dan environment. `deno compile` menghasilkan executable mandiri dengan membundel runtime Deno (yang menyertakan V8) bersama kode Anda. Deno menargetkan Linux, macOS, dan Windows pada x64 dan arm64.

Apa itu Perry?

Perry adalah kompiler TypeScript native yang ditulis dalam Rust. Ia mengompilasi TypeScript langsung ke kode mesin native melalui LLVM — tanpa V8, tanpa JIT, tanpa runtime. Outputnya adalah satu binary, biasanya beberapa ratus KB hingga beberapa MB untuk kode native, opsional lebih besar jika Anda memilih runtime V8 tertanam untuk paket npm yang membutuhkan engine JS.

Berdampingan

FiturPerryDeno
OutputKode mesin native (LLVM)Kode Anda + runtime Deno (V8) dibundel
Engine JavaScript di binaryTidak ada secara default; V8 opsionalV8, selalu
Ukuran binary hello-world~330 KB~80–100 MB (termasuk V8)
JITTidak (dikompilasi AOT)Ya (TurboFan V8)
Target mobileiOS, iPadOS, AndroidTidak
Watch / TV / WASM / WebwatchOS, tvOS, Wear OS, WASM, Web/JSTidak
UI native25+ widget via API platform nativeTidak
Model izinIzin proses OS standarIzin runtime granular (--allow-net, --allow-read, dll.)
StabilitasPra-1.0Stabil (1.x / 2.x)
Dibangun denganRustRust (di atas V8)

Di mana Perry unggul

  • +Binary jauh lebih kecil. Hello world Perry ~330 KB. Output `deno compile` menyertakan V8 dan mencapai kisaran 80–100 MB.
  • +Tanpa engine JavaScript di binary. TypeScript Anda dikompilasi ke kode mesin native, bukan diinterpretasikan oleh V8 saat runtime.
  • +Target mobile, watch, TV, WASM, dan Web. Deno hanya untuk server/desktop.
  • +Widget UI native yang dipetakan ke AppKit, UIKit, GTK4, Win32, dan JNI — tidak ada padanannya di Deno.
  • +Cold start lebih cepat. Binary native AOT-compiled tidak membayar biaya startup V8.
  • +Kepemimpinan microbench komputasi dalam kondisi setara di M1 Max di mana default fast-math `reassoc contract` dari Perry memungkinkan LLVM melakukan autovectorize dan melipat akumulator yang sepele dilipat (mis., loop_overhead 12 ms, math_intensive 14 ms; lihat perry/benchmarks).

Di mana Deno unggul

  • +Runtime yang matang dan stabil dengan rekam jejak panjang dan jalur 2.x yang aktif.
  • +Model izin granular. Deno memerlukan `--allow-net`, `--allow-read`, dll. secara eksplisit — berguna untuk skrip yang di-sandbox dan kode tidak terpercaya.
  • +Tooling bawaan: formatter, linter, test runner, generator dokumentasi, LSP, semuanya di runtime.
  • +Ekosistem V8 penuh saat runtime — apa pun yang berjalan di V8 berjalan di Deno, termasuk optimasi JIT pada hot path yang berjalan lama.
  • +TypeScript kelas satu tanpa langkah kompiler terpisah saat development, dengan pipeline pemeriksaan tipe yang sepenuhnya dikelola.
  • +API web-platform standar (fetch, Web Streams, Web Crypto) diimplementasikan secara native dalam runtime.

Kapan memilih Perry

Pilih Perry jika Anda ingin binary native yang kecil dan cepat startup, Anda mengirim ke mobile atau target non-server lainnya, Anda ingin UI native, atau Anda ingin mengompilasi TypeScript ke binary yang tidak berisi engine JS.

Kapan memilih Deno

Pilih Deno jika Anda ingin runtime TypeScript yang stabil dan lengkap, Anda menghargai sandbox izin, Anda membangun workload server-side atau scripting, atau Anda butuh kompatibilitas ekosistem V8 penuh saat runtime.

Kesimpulan

Keduanya memungkinkan Anda mengirim program TypeScript sebagai satu binary; perbedaannya adalah apa yang ada di dalam binary itu. Deno memberi Anda V8 + runtime terkurasi + sandbox izin. Perry memberi Anda kode mesin native tanpa engine. Deno adalah pilihan yang lebih baik untuk pekerjaan server-side dan scripting di mana ekosistem dan model izin penting. Perry adalah pilihan yang lebih baik ketika Anda butuh binary yang kecil dan cepat startup, target mobile, atau UI native.

Coba Perry

Kompilasi TypeScript Anda menjadi native hari ini.

Mulai