Eine Codebasis. Jede Plattform.
Native Performance.
Perry kompiliert TypeScript zu nativen GUI- und CLI-Apps auf macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly und dem Web. Keine Laufzeitumgebung. Kein Electron. Einfach native Binaries.
$ perry compile main.ts
Kompiliere main.ts...
✓ Kompilierte Datei: main (2,3 MB)
$ ./main
Hello, World!
Warum Perry?
Alles, was du brauchst, um TypeScript zu nativen Anwendungen zu kompilieren
Keine Laufzeitumgebung nötig
Erzeugt eigenständige native Binaries. Kein Node.js, kein V8, keine Laufzeitabhängigkeiten. Einfach eine einzelne Datei, die überall läuft.
Schnelle Kompilierung
Direkte TypeScript-zu-nativem-Code-Kompilierung mit SWC zum Parsen und Cranelift zur Codegenerierung. Kein Zwischen-JavaScript.
Kleine Binaries
Ausgabe-Binaries sind typischerweise 2–5 MB groß. Mit optionaler V8-Laufzeitumgebung für JS-npm-Pakete 15–20 MB. Weniger ausliefern, schneller deployen.
Typsicher
Nutzt TypeScripts Typsystem zur Optimierung. Typen ermöglichen bessere Codegenerierung durch Monomorphization.
Umfassende Standardbibliothek
Eingebaute native Implementierungen von fs, path, crypto, os, Buffer, child_process und mehr. Nutze vertraute Node.js-APIs.
Optionale V8-Laufzeitumgebung
Du musst ein reines JavaScript-npm-Paket verwenden? Aktiviere das V8-Runtime-Flag für volle npm-Ökosystem-Kompatibilität.
25+ native UI-Widgets
Buttons, Textfelder, Textbereiche, Tabellen, Canvas, Scroll-Views, QR-Codes, sichere Felder, Splash-Screens und mehr — alles kompiliert zu echten Plattform-Widgets über AppKit, GTK4, Win32, UIKit und JNI.
Compile-Time-Plugin-System
Module werden zur Build-Zeit zusammengesetzt — kein Plugin-Overhead zur Laufzeit, keine IPC-Grenzen. Deine Abhängigkeiten werden zu direkten nativen Funktionsaufrufen im fertigen Binary.
Echtes Multi-Threading
Echte OS-Threads mit parallelMap, parallelFilter und spawn. Compile-Time-Sicherheit lehnt veränderbare Captures ab — kein SharedArrayBuffer, keine Workers, einfach Threads.
Compile-Time-i18n
Automatische String-Extraktion, CLDR-Pluralregeln für 30+ Sprachen, Compile-Time-Validierung. Übersetzungen werden ins Binary eingebacken mit nahezu null Laufzeit-Lookup.
Nativ auf jeder Plattform
Perry kompiliert dein TypeScript zu nativen UI-Frameworks, WebAssembly und JavaScript — keine Web-Views, kein Electron. Echte native Widgets auf jeder Plattform, plus das Web.
macOS
AppKit
iOS
UIKit
iPadOS
UIKit
Android
Views
Linux
GTK4
Windows
Win32
watchOS
SwiftUI
tvOS
SwiftUI
WASM
WebAssembly
Web
JavaScript
Das einzige Framework, das alle Punkte erfüllt
TypeScript kompiliert zu nativem Code. Echte Plattform-Widgets. Kein Laufzeit-Overhead.
| Framework | Sprache | Nativer Code | Native Widgets | Laufzeit-Overhead |
|---|---|---|---|---|
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 | Teilweise | Kotlin runtime + Skia | |
Swift for AndroidNative binary, no shared UI | Swift | Kein geteiltes UI | Swift runtime on Android | |
.NET MAUIPartial AOT via Mono | C# | Teilweise | .NET / Mono runtime | |
NativeScriptJS runtime, native widget access | JS / TypeScript | V8 / JavaScriptCore | ||
IonicWeb app in native wrapper | JS / TypeScript | WebView + Capacitor |
Schreibe TypeScript, liefere nativ aus
Verwende die vertraute TypeScript-Syntax und APIs. Perry erledigt den Rest.
// hello.tsconst greeting = "Hello, World!";console.log(greeting); // Compiles to ~2MB native executable// No runtime needed!Performance-Vergleich
Native Kompilierung liefert unerreichte Effizienz
| Metrik | Perry | Node.js | Bun |
|---|---|---|---|
| Binary-Größe | 2-5 MB | ~80 MB | ~90 MB |
| Startzeit | ~1 ms | ~30 ms | ~10 ms |
| Laufzeitabhängigkeiten | Keine | Node.js | Bun |
| Speicher-Overhead | Minimal | V8 + GC | JSC + GC |
Benchmark-Ergebnisse: 2,2x schneller
Perry vs Node.js v24 auf macOS ARM64 (niedriger ist besser)
Loslegen
Installiere Perry und beginne TypeScript zu nativen Binaries zu kompilieren
1Installation
$ brew tap PerryTS/perry$ brew install perryErfordert Homebrew. Unterstützt macOS arm64 und x86_64.
2Verwendung
perry build main.tsKompiliert main.ts zu einem nativen Binary
perry build main.ts -o myappName der Ausgabedatei angeben
perry build main.ts --enable-js-runtimeV8 für JavaScript-npm-Paket-Kompatibilität aktivieren
perry check ./srcTypeScript-Code für native Kompilierung validieren
Feature-Unterstützung
Umfassende TypeScript- und Node.js-API-Abdeckung
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
30+ native npm-Pakete
Beliebte npm-Pakete nativ in Rust reimplementiert. Kein npm install, kein node_modules, einfach schneller nativer Code.
Datenbank
Sicherheit
HTTP
Datenverarbeitung
Datum & Uhrzeit
Hilfsprogramme
Vom Code zum App Store
Perry kompiliert nicht nur deine App — es bringt sie in die Hände deiner Nutzer.
Bauen & Signieren
Cross-Plattform-Builds mit einem Befehl. Code-Signierung für macOS, iOS, Android und Windows wird für dich erledigt. Kein Kampf mit Xcode-Provisioning-Profilen oder Android-Keystores.
Verteilen
Push zum App Store, Play Store oder versende Direktdownloads. Perry Publish übernimmt Paketierung, Notarisierung und Einreichung.
Verifizieren
Basierend auf Geisterhand. Automatisiertes UI-Testing auf allen 6 Plattformen. Wisse, dass deine App überall funktioniert, bevor deine Nutzer dir das Gegenteil sagen.
Kostenlos für Open-Source-Projekte. Pläne für Teams → /publish
So funktioniert's
Von TypeScript-Quellcode zum nativen Binary in Sekunden
lift
Willst du wissen, wie der Compiler unter der Haube funktioniert? Compiler-Interna