Torna ai confronti
Runtime TypeScript

Perry vs Deno

Deno è un moderno runtime JavaScript e TypeScript costruito su V8, con supporto TypeScript di prima classe, un modello di sicurezza basato sui permessi e un comando `deno compile` che produce un singolo eseguibile raggruppando V8 con la tua applicazione. Perry compila TypeScript direttamente in codice macchina nativo — nessun V8 nell'output, nessun layer di runtime, solo un piccolo binario nativo.

Cos'è Deno?

Deno è un runtime TypeScript e JavaScript costruito in Rust sopra V8 e Tokio. Esegue i sorgenti `.ts` direttamente, ha tooling integrato (formatter, linter, test runner, language server) e usa un modello di permessi che richiede concessioni esplicite per l'accesso a rete, file e ambiente. `deno compile` produce un eseguibile autonomo raggruppando il runtime Deno (che include V8) con il tuo codice. Deno supporta Linux, macOS e Windows su x64 e arm64.

Cos'è Perry?

Perry è un compilatore TypeScript nativo scritto in Rust. Compila TypeScript direttamente in codice macchina nativo tramite LLVM — nessun V8, nessun JIT, nessun runtime. L'output è un singolo binario, tipicamente da poche centinaia di KB a pochi MB per il codice nativo, opzionalmente più grande se attivi il runtime V8 embedded per pacchetti npm che richiedono un motore JS.

Fianco a fianco

CaratteristicaPerryDeno
OutputCodice macchina nativo (LLVM)Il tuo codice + runtime Deno (V8) raggruppati
Motore JavaScript nel binarioNessuno di default; V8 opzionaleV8, sempre
Dimensione del binario hello-world~330 KB~80–100 MB (include V8)
JITNo (compilato AOT)Sì (TurboFan di V8)
Target mobileiOS, iPadOS, AndroidNo
Watch / TV / WASM / WebwatchOS, tvOS, Wear OS, WASM, Web/JSNo
UI nativa25+ widget tramite API native della piattaformaNo
Modello dei permessiPermessi standard del processo OSPermessi di runtime granulari (--allow-net, --allow-read, ecc.)
StabilitàPre-1.0Stabile (1.x / 2.x)
Costruito inRustRust (su V8)

Dove vince Perry

  • +Binari drasticamente più piccoli. Un hello world Perry è ~330 KB. Gli output di `deno compile` includono V8 e si attestano nell'intervallo di 80–100 MB.
  • +Nessun motore JavaScript nel binario. Il tuo TypeScript è compilato in codice macchina nativo, non interpretato da V8 a runtime.
  • +Target mobile, watch, TV, WASM e Web. Deno è solo server/desktop.
  • +Widget UI nativi che mappano su AppKit, UIKit, GTK4, Win32 e JNI — nessun equivalente in Deno.
  • +Avvio a freddo più veloce. I binari nativi compilati AOT non pagano il costo di avvio di V8.
  • +Leadership nei microbenchmark di calcolo in condizioni paragonabili su M1 Max dove i default fast-math `reassoc contract` di Perry permettono a LLVM di autovectorizzare e ridurre accumulatori banalmente riducibili (es. loop_overhead 12 ms, math_intensive 14 ms; vedi perry/benchmarks).

Dove vince Deno

  • +Runtime maturo e stabile con un lungo storico e una linea 2.x attiva.
  • +Modello di permessi granulare. Deno richiede esplicitamente `--allow-net`, `--allow-read`, ecc. — utile per script in sandbox e codice non fidato.
  • +Tooling integrato: formatter, linter, test runner, generatore di documentazione, LSP, tutto nel runtime.
  • +Ecosistema V8 completo a runtime — qualunque cosa giri su V8 gira su Deno, comprese le ottimizzazioni JIT su percorsi caldi a lunga esecuzione.
  • +TypeScript di prima classe senza uno step di compilazione separato in sviluppo, con una pipeline di type-checking pienamente gestita.
  • +API web-platform standardizzate (fetch, Web Streams, Web Crypto) implementate nativamente nel runtime.

Quando scegliere Perry

Scegli Perry se vuoi un binario nativo piccolo e ad avvio rapido, stai distribuendo su mobile o altri target non-server, vuoi UI nativa, o vuoi compilare TypeScript in un binario che non contenga un motore JS.

Quando scegliere Deno

Scegli Deno se vuoi un runtime TypeScript stabile e batteries-included, apprezzi la sandbox dei permessi, stai costruendo carichi server-side o di scripting, o hai bisogno della piena compatibilità con l'ecosistema V8 a runtime.

Verdetto

Entrambi permettono di distribuire un programma TypeScript come singolo binario; la differenza è cosa c'è dentro quel binario. Deno ti offre V8 + un runtime curato + sandbox dei permessi. Perry ti offre codice macchina nativo senza motore. Deno è la scelta migliore per il lavoro server-side e di scripting dove contano l'ecosistema e il modello dei permessi. Perry è la scelta migliore quando hai bisogno di un binario piccolo, ad avvio rapido, di target mobile o di UI nativa.

Prova Perry

Compila il tuo TypeScript in nativo oggi.

Inizia