Un solo codice. Ogni piattaforma.
Prestazioni native.
Perry compila TypeScript in applicazioni GUI e CLI native su macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly e il Web. Nessun runtime. Nessun Electron. Solo binari nativi.
$ perry compile main.ts
Compilazione di main.ts...
✓ Eseguibile compilato: main (2,3 MB)
$ ./main
Hello, World!
Perché Perry?
Tutto ciò che serve per compilare TypeScript in applicazioni native
Nessun runtime necessario
Produce eseguibili nativi autonomi. Nessun Node.js, nessun V8, nessuna dipendenza runtime. Solo un singolo binario che funziona ovunque.
Compilazione veloce
Compilazione diretta da TypeScript a codice nativo usando SWC per il parsing e Cranelift per la generazione del codice. Nessun JavaScript intermedio.
Binari compatti
I binari di output sono tipicamente 2-5 MB. Con il runtime V8 opzionale per i pacchetti npm JS, 15-20 MB. Distribuisci meno, fai il deploy più velocemente.
Type-safe
Sfrutta il sistema di tipi di TypeScript per l'ottimizzazione. I tipi permettono una migliore generazione del codice tramite monomorphization.
Libreria standard completa
Implementazioni native integrate di fs, path, crypto, os, Buffer, child_process e altro. Usa le API familiari di Node.js.
Runtime V8 opzionale
Devi usare un pacchetto npm JavaScript puro? Abilita il flag runtime V8 per la piena compatibilità con l'ecosistema npm.
Oltre 25 widget UI nativi
Pulsanti, campi di testo, aree di testo, tabelle, canvas, scroll view, codici QR, campi sicuri, schermate di avvio e altro — tutto compilato in veri widget di piattaforma tramite AppKit, GTK4, Win32, UIKit e JNI.
Sistema di plugin a tempo di compilazione
I moduli si compongono al momento del build — nessun overhead di plugin a runtime, nessun confine IPC. Le tue dipendenze diventano chiamate di funzione native dirette nel binario finale.
Vero multi-threading
Veri thread del sistema operativo con parallelMap, parallelFilter e spawn. Sicurezza a tempo di compilazione che rifiuta le catture mutabili — nessun SharedArrayBuffer, nessun worker, solo thread.
i18n a tempo di compilazione
Estrazione automatica delle stringhe, regole di plurale CLDR per oltre 30 lingue, validazione a tempo di compilazione. Le traduzioni vengono integrate nel binario con ricerca quasi nulla a runtime.
Nativo su ogni piattaforma
Perry compila il tuo TypeScript in framework UI nativi, WebAssembly e JavaScript — niente web view, niente Electron. Veri widget nativi su ogni piattaforma, più il web.
macOS
AppKit
iOS
UIKit
iPadOS
UIKit
Android
Views
Linux
GTK4
Windows
Win32
watchOS
SwiftUI
tvOS
SwiftUI
WASM
WebAssembly
Web
JavaScript
L'unico framework che soddisfa ogni requisito
TypeScript compilato in codice nativo. Veri widget di piattaforma. Zero overhead runtime.
| Framework | Linguaggio | Codice nativo | Widget nativi | Overhead runtime |
|---|---|---|---|---|
Perry★AOT compiled to native binary | TypeScript | None | ||
React NativeJIT / interpreted at runtime | JS / TypeScript | Hermes / V8 + Bridge | ||
FlutterAOT compiled, custom renderer | Dart | Dart VM + Skia engine | ||
KMP + ComposeJVM on Android, native on iOS | Kotlin | Parziale | Kotlin runtime + Skia | |
Swift for AndroidNative binary, no shared UI | Swift | Nessuna UI condivisa | Swift runtime on Android | |
.NET MAUIPartial AOT via Mono | C# | Parziale | .NET / Mono runtime | |
NativeScriptJS runtime, native widget access | JS / TypeScript | V8 / JavaScriptCore | ||
IonicWeb app in native wrapper | JS / TypeScript | WebView + Capacitor |
Scrivi TypeScript, distribuisci nativo
Usa la sintassi e le API TypeScript familiari. Perry fa il resto.
// hello.tsconst greeting = "Hello, World!";console.log(greeting); // Compiles to ~2MB native executable// No runtime needed!Confronto delle prestazioni
La compilazione nativa offre un'efficienza senza pari
| Metrica | Perry | Node.js | Bun |
|---|---|---|---|
| Dimensione binario | 2-5 MB | ~80 MB | ~90 MB |
| Tempo di avvio | ~1 ms | ~30 ms | ~10 ms |
| Dipendenze runtime | Nessuna | Node.js | Bun |
| Overhead memoria | Minimo | V8 + GC | JSC + GC |
Risultati benchmark: 2,2x più veloce
Perry vs Node.js v24 su macOS ARM64 (più basso è meglio)
Inizia
Installa Perry e inizia a compilare TypeScript in eseguibili nativi
1Installazione
$ brew tap PerryTS/perry$ brew install perryRichiede Homebrew. Supporta macOS arm64 e x86_64.
2Utilizzo
perry build main.tsCompila main.ts in un eseguibile nativo
perry build main.ts -o myappSpecifica il nome dell'eseguibile di output
perry build main.ts --enable-js-runtimeAbilita V8 per la compatibilità con i pacchetti npm JavaScript
perry check ./srcValida il codice TypeScript per la compilazione nativa
Supporto delle funzionalità
Copertura completa delle API TypeScript e 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-Order FunctionsFunctions 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
Oltre 30 pacchetti npm nativi
Pacchetti npm popolari reimplementati in Rust nativo. Nessun npm install, nessun node_modules, solo codice nativo veloce.
Database
Sicurezza
HTTP
Elaborazione dati
Data e ora
Utilità
Dal codice all<gradient>App Store</gradient>
Perry non solo compila la tua app — la mette nelle mani dei tuoi utenti.
Compila e firma
Build multipiattaforma con un solo comando. La firma del codice per macOS, iOS, Android e Windows viene gestita per te. Niente più lotte con i profili di provisioning Xcode o i keystore Android.
Distribuisci
Pubblica sull'App Store, Play Store o distribuisci download diretti. Perry Publish gestisce il packaging, la notarizzazione e l'invio.
Verifica
Powered by Geisterhand. Test UI automatizzati su tutte le 6 piattaforme. Sappi che la tua app funziona ovunque prima che i tuoi utenti te lo facciano notare.
Gratuito per i progetti open source. Piani per i team → /publish
Come funziona
Dal codice sorgente TypeScript all'eseguibile nativo in pochi secondi
lift
Vuoi sapere come funziona il compilatore sotto il cofano? Meccanismi interni del compilatore