Perry
fr
v0.5.306 — GC générationnel + tape JSON paresseuse par défaut, plus rapide que Node et Bun sur la plupart des benchmarks

Un seul code. Toutes les plateformes.
Performance native.

Perry compile TypeScript en applications GUI et CLI natives sur macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly et le Web. Pas de runtime. Pas d'Electron. Juste des binaires natifs.

terminal
$ perry compile main.ts
Compilation de main.ts...
✓ Exécutable compilé : main (2,3 Mo)

$ ./main
Hello, World!
10
Cibles
25+
Widgets UI natifs
<50 ms
Temps de démarrage
App Store
Prêt

Pourquoi Perry ?

Tout ce dont vous avez besoin pour compiler TypeScript en applications natives

noRuntime
fastCompilation
smallBinaries
deterministicBuilds
stdLib
v8Runtime
widgets
plugins
threading
i18n

Voyez ce que les gens construisent

De vraies apps natives, compilées depuis TypeScript. Pas d'Electron, pas de web views — juste une UI native sur chaque plateforme.

Mango

Mango

GUI MongoDB native — entièrement construite en TypeScript

macOSLinuxWindows
Mango — document editor
Mango — query explorer
Hone

Hone

Éditeur de code natif propulsé par l'IA — TypeScript vers binaire natif

macOSiOSWeb
Hone — native AI code editor

Natif sur toutes les plateformes

Perry compile votre TypeScript en frameworks UI natifs, WebAssembly et JavaScript — pas de web views, pas d'Electron. De vrais widgets natifs sur chaque plateforme, plus le web.

🍎
macOS
Stable
📱
iOS
Stable
📲
iPadOS
Stable
watchOS
Stable
📺
tvOS
Stable
🤖
Android
Stable
🐧
Linux
Stable
🪟
Windows
Stable
🌐
Wasm
Stable
💻
Web
Stable

Du code à l'App Store

Perry ne fait pas que compiler votre app — il la met entre les mains de vos utilisateurs.

perry compileCompiler et signer
perry publishEmpaqueter et soumettre
Stores et téléchargementsApp Store, Play Store, direct
perry verifyTester sur chaque plateforme

Compiler et signer

Des builds multiplateforme en une seule commande. La signature de code pour macOS, iOS, Android et Windows est gérée pour vous. Plus besoin de se battre avec les profils de provisionnement Xcode ou les keystores Android.

Distribuer

Publiez sur l'App Store, le Play Store ou envoyez des téléchargements directs. Perry Publish gère l'empaquetage, la notarisation et la soumission.

Vérifier

Propulsé par Geisterhand. Tests UI automatisés sur les 6 plateformes. Sachez que votre app fonctionne partout avant que vos utilisateurs ne vous disent le contraire.

Gratuit pour les projets open source. Plans pour les équipes → /publish

Comparaison de frameworks

Le seul framework qui coche toutes les cases

TypeScript compilé en code natif. De vrais widgets de plateforme. Zéro overhead runtime.

FrameworkLangageCode natifWidgets natifsOverhead runtime
PerryTypeScript✓ Compilé natif✓ Vrais widgets de plateforme✓ Zéro overhead runtime
React NativeJS / TSJS bridgePartielJS engine + bridge
FlutterDartAOTPas d'UI partagéeDart VM
ElectronJS / TSChromium runtimeHTML mimicsChromium + Node

Écrivez du TypeScript, livrez en natif

Utilisez la syntaxe et les APIs TypeScript familières. Perry s'occupe du reste.

hello.ts
// hello.ts
const greeting = "Hello, World!";
console.log(greeting);

// Compiles to ~2MB native executable
// No runtime needed!
$ perry build hello.ts
Binaire natif

Comparaison des performances

La compilation native offre une efficacité inégalée

Taille du binaire
1.8 MB
Bun 96 MB · Node 110 MB
Temps de démarrage
<50 ms
Bun ~200 ms · Node ~800 ms
Dépendances runtime
Aucune
Bun + Node need runtimes
Overhead mémoire
Minimal
Bun ~80 MB · Node ~120 MB

Commencer

Installez Perry et commencez à compiler TypeScript en exécutables natifs

Homebrew (macOS)

brew install perry-ts/perry
Nécessite Homebrew. Compatible macOS arm64 et x86_64.

APT (Debian/Ubuntu)

apt-get install perry
Compatible Linux x86_64 et arm64.

Windows (winget)

scoop install perry-ts/perry
Nécessite Windows Package Manager. Compatible Windows x86_64 et arm64.

Support des fonctionnalités

Couverture complète des APIs TypeScript et Node.js

Core Language

  • Numbers64-bit floating point (f64)
  • StringsUTF-8, all common methods
  • Booleanstrue/false, logical operators
  • ArraysTyped and mixed-type arrays
  • ObjectsObject literals and field access
  • BigInt256-bit integer support
  • EnumsNumeric and string enums

Functions

  • Function DeclarationNamed functions
  • Arrow Functions() => {} syntax
  • Default ParametersParameters with defaults
  • Rest Parameters...args syntax
  • ClosuresIncluding mutable captures
  • Higher-OrderFunctions as arguments/returns
  • Async/AwaitAsync function support

Classes

  • Class DeclarationBasic class syntax
  • ConstructorsWith parameters
  • Private Fields (#)ES2022 #privateField syntax
  • Static Methods/FieldsClass-level members
  • Getters/Settersget/set accessors
  • Inheritanceextends keyword
  • Super Callssuper() constructor calls

Type System

  • Type AnnotationsExplicit type declarations
  • Type InferenceAutomatic type detection
  • GenericsMonomorphization (like Rust)
  • InterfacesInterface declarations
  • Union Typesstring | number support
  • Type Guardstypeof operator
  • Type Aliasestype X = ... declarations

Standard Library

  • fsreadFileSync, writeFileSync, existsSync, etc.
  • pathjoin, dirname, basename, extname, resolve
  • cryptorandomBytes, randomUUID, sha256, md5
  • osplatform, arch, hostname, memory info
  • Bufferfrom, alloc, toString, slice, copy
  • child_processexecSync, spawnSync
  • JSON/Math/DateFull implementations
Support complet
Partiel

Plus de 30 paquets npm natifs

Des paquets npm populaires réimplémentés en Rust natif. Pas de npm install, pas de node_modules, juste du code natif rapide.

Base de données

mysql2pgmongodbbetter-sqlite3ioredis

Sécurité

bcryptargon2jsonwebtokencrypto

HTTP

httphttpsaxiosnode-fetchwsnodemailer

Traitement de données

cheeriosharpzliblodash

Date et heure

dayjsmomentdate-fnsnode-cron

Utilitaires

uuidnanoidslugifyvalidatordotenvrate-limiter-flexible
Importez et utilisez simplement — Perry utilise automatiquement l'implémentation native

Comment ça fonctionne

Du code source TypeScript à l'exécutable natif en quelques secondes

TypeScriptFichiers .ts
SWC
ParserAnalyse rapide
HIR
TransformationMonomorphization
LLVM
CodegenCode machine
ExécutableBinaire de 2 à 5 Mo

Vous voulez savoir comment le compilateur fonctionne en coulisses ? Fonctionnement interne du compilateur