Retour aux comparaisons
Runtime TypeScript

Perry vs Deno

Deno est un runtime JavaScript et TypeScript moderne bâti sur V8, avec un support TypeScript de premier ordre, un modèle de sécurité fondé sur des permissions et une commande `deno compile` qui produit un exécutable unique en regroupant V8 avec votre application. Perry compile TypeScript directement en code machine natif — pas de V8 dans la sortie, pas de couche runtime, juste un petit binaire natif.

Qu'est-ce que Deno ?

Deno est un runtime TypeScript et JavaScript écrit en Rust au-dessus de V8 et Tokio. Il exécute directement les sources `.ts`, dispose d'outillage intégré (formatter, linter, test runner, language server) et utilise un modèle de permissions qui exige des autorisations explicites pour l'accès au réseau, aux fichiers et à l'environnement. `deno compile` produit un exécutable autonome en regroupant le runtime Deno (qui inclut V8) avec votre code. Deno cible Linux, macOS et Windows en x64 et arm64.

Qu'est-ce que Perry ?

Perry est un compilateur TypeScript natif écrit en Rust. Il compile TypeScript directement en code machine natif via LLVM — pas de V8, pas de JIT, pas de runtime. La sortie est un binaire unique, typiquement de quelques centaines de Ko à quelques Mo de code natif, optionnellement plus grand si vous activez le runtime V8 embarqué pour les paquets npm qui ont besoin d'un moteur JS.

Côte à côte

FonctionnalitéPerryDeno
SortieCode machine natif (LLVM)Votre code + runtime Deno (V8) regroupés
Moteur JavaScript dans le binaireAucun par défaut ; V8 optionnelV8, toujours
Taille du binaire hello-world~330 Ko~80–100 Mo (inclut V8)
JITNon (compilé AOT)Oui (TurboFan de V8)
Cibles mobilesiOS, iPadOS, AndroidNon
Montre / TV / WASM / WebwatchOS, tvOS, Wear OS, WASM, Web/JSNon
UI nativePlus de 25 widgets via les API natives de plateformeNon
Modèle de permissionsPermissions de processus OS standardsPermissions runtime granulaires (--allow-net, --allow-read, etc.)
StabilitéPré-1.0Stable (1.x / 2.x)
Construit enRustRust (sur V8)

Là où Perry l'emporte

  • +Binaires nettement plus petits. Un hello world Perry fait ~330 Ko. Les sorties `deno compile` incluent V8 et atteignent 80 à 100 Mo.
  • +Aucun moteur JavaScript dans le binaire. Votre TypeScript est compilé en code machine natif, pas interprété par V8 à l'exécution.
  • +Cibles mobile, montre, TV, WASM et Web. Deno se limite au serveur/desktop.
  • +Widgets UI natifs qui se mappent vers AppKit, UIKit, GTK4, Win32 et JNI — sans équivalent dans Deno.
  • +Démarrage à froid plus rapide. Les binaires natifs compilés AOT n'ont pas à payer le coût de démarrage de V8.
  • +Leadership sur les microbenchmarks de calcul à conditions équivalentes sur M1 Max où les valeurs par défaut fast-math `reassoc contract` de Perry permettent à LLVM d'autovectoriser et de réduire les accumulateurs trivialement réductibles (par exemple, loop_overhead 12 ms, math_intensive 14 ms ; voir perry/benchmarks).

Là où Deno l'emporte

  • +Runtime mature et stable avec un long historique et une ligne 2.x active.
  • +Modèle de permissions granulaire. Deno requiert des `--allow-net`, `--allow-read`, etc. explicites — utile pour les scripts en bac à sable et le code non fiable.
  • +Outillage intégré : formatter, linter, test runner, générateur de docs, LSP, le tout dans le runtime.
  • +Écosystème V8 complet à l'exécution — tout ce qui tourne sur V8 tourne sur Deno, y compris les optimisations JIT sur les chemins chauds longs.
  • +TypeScript de première classe sans étape de compilation séparée en développement, avec une pipeline de vérification de types entièrement gérée.
  • +API de plateforme web standardisées (fetch, Web Streams, Web Crypto) implémentées nativement dans le runtime.

Quand choisir Perry

Choisissez Perry si vous voulez un binaire natif petit et au démarrage rapide, si vous livrez vers le mobile ou d'autres cibles non-serveur, si vous voulez de l'UI native, ou si vous voulez compiler TypeScript en un binaire qui ne contient pas de moteur JS.

Quand choisir Deno

Choisissez Deno si vous voulez un runtime TypeScript stable et tout-équipé, si vous accordez de la valeur au bac à sable de permissions, si vous construisez des charges côté serveur ou de scripting, ou si vous avez besoin d'une compatibilité complète avec l'écosystème V8 à l'exécution.

Verdict

Les deux permettent de livrer un programme TypeScript sous forme de binaire unique ; la différence est ce qu'il y a à l'intérieur. Deno vous donne V8 + un runtime soigné + un bac à sable de permissions. Perry vous donne du code machine natif sans moteur. Deno est le meilleur choix pour le travail côté serveur et de scripting où l'écosystème et le modèle de permissions importent. Perry est le meilleur choix quand il vous faut un binaire petit et au démarrage rapide, des cibles mobiles ou de l'UI native.

Essayer Perry

Compilez votre TypeScript en natif dès aujourd'hui.

Commencer