Tek Kod Tabanı. Her Platform.
Yerel Performans.
Perry, TypeScript'i macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly ve Web üzerinde yerel GUI ve CLI uygulamalarına derler. Runtime yok. Electron yok. Sadece yerel ikili dosyalar.
$ perry compile main.ts
main.ts derleniyor...
✓ Derlenen çalıştırılabilir dosya: main (2,3 MB)
$ ./main
Hello, World!
Neden Perry?
TypeScript'i yerel uygulamalara derlemek için ihtiyacınız olan her şey
Runtime Gerektirmez
Bağımsız yerel çalıştırılabilir dosyalar üretir. Node.js yok, V8 yok, runtime bağımlılığı yok. Her yerde çalışan tek bir ikili dosya.
Hızlı Derleme
SWC ile ayrıştırma ve Cranelift ile kod üretimi kullanarak TypeScript'ten yerel koda doğrudan derleme. Ara JavaScript yok.
Küçük İkili Dosyalar
Çıktı ikili dosyaları genellikle 2-5 MB'dir. JS npm paketleri için isteğe bağlı V8 runtime ile 15-20 MB. Daha az gönder, daha hızlı dağıt.
Tip Güvenli
Optimizasyon için TypeScript'in tip sistemini kullanır. Tipler, monomorphization aracılığıyla daha iyi kod üretimi sağlar.
Kapsamlı Standart Kütüphane
fs, path, crypto, os, Buffer, child_process ve daha fazlasının yerleşik yerel implementasyonları. Tanıdık Node.js API'lerini kullanın.
İsteğe Bağlı V8 Runtime
Saf JavaScript npm paketi mi kullanmanız gerekiyor? Tam npm ekosistemi uyumluluğu için V8 runtime bayrağını etkinleştirin.
25+ Yerel UI Widget'ı
Düğmeler, metin alanları, metin bölgeleri, tablolar, canvas, scroll view'lar, QR kodlar, güvenli alanlar, açılış ekranları ve daha fazlası — tümü AppKit, GTK4, Win32, UIKit ve JNI aracılığıyla gerçek platform widget'larına derlenir.
Derleme Zamanı Eklenti Sistemi
Modüller derleme zamanında birleşir — runtime'da eklenti yükü yok, IPC sınırları yok. Bağımlılıklarınız son ikili dosyada doğrudan yerel fonksiyon çağrılarına dönüşür.
Gerçek Çok İş Parçacığı
parallelMap, parallelFilter ve spawn ile gerçek işletim sistemi iş parçacıkları. Derleme zamanı güvenliği değiştirilebilir yakalanmaları reddeder — SharedArrayBuffer yok, worker yok, sadece iş parçacıkları.
Derleme Zamanı i18n
Otomatik dize çıkarımı, 30+ dil için CLDR çoğul kuralları, derleme zamanı doğrulama. Çeviriler neredeyse sıfır runtime arama ile ikili dosyaya gömülür.
Her Platformda Yerel
Perry, TypeScript'inizi yerel UI framework'lerine, WebAssembly'e ve JavaScript'e derler — web view değil, Electron değil. Her platformda gerçek yerel widget'lar, artı web.
macOS
AppKit
iOS
UIKit
iPadOS
UIKit
Android
Views
Linux
GTK4
Windows
Win32
watchOS
SwiftUI
tvOS
SwiftUI
WASM
WebAssembly
Web
JavaScript
Her kutuyu işaretleyen tek framework
TypeScript yerel koda derlendi. Gerçek platform widget'ları. Sıfır runtime yükü.
| Framework | Dil | Yerel Kod | Yerel Widget'lar | Runtime Yükü |
|---|---|---|---|---|
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 | Kısmi | Kotlin runtime + Skia | |
Swift for AndroidNative binary, no shared UI | Swift | Paylaşılan UI yok | Swift runtime on Android | |
.NET MAUIPartial AOT via Mono | C# | Kısmi | .NET / Mono runtime | |
NativeScriptJS runtime, native widget access | JS / TypeScript | V8 / JavaScriptCore | ||
IonicWeb app in native wrapper | JS / TypeScript | WebView + Capacitor |
TypeScript Yaz, Yerel Gönder
Tanıdık TypeScript sözdizimi ve API'lerini kullanın. Perry gerisini halleder.
// hello.tsconst greeting = "Hello, World!";console.log(greeting); // Compiles to ~2MB native executable// No runtime needed!Performans Karşılaştırması
Yerel derleme benzersiz verimlilik sunar
| Metrik | Perry | Node.js | Bun |
|---|---|---|---|
| İkili Dosya Boyutu | 2-5 MB | ~80 MB | ~90 MB |
| Başlatma Süresi | ~1 ms | ~30 ms | ~10 ms |
| Runtime Bağımlılıkları | Yok | Node.js | Bun |
| Bellek Yükü | Minimal | V8 + GC | JSC + GC |
Benchmark Sonuçları: 2,2x Daha Hızlı
Perry vs Node.js v24, macOS ARM64 (düşük olan daha iyi)
Başlayın
Perry'yi kurun ve TypeScript'i yerel çalıştırılabilir dosyalara derlemeye başlayın
1Kurulum
$ brew tap PerryTS/perry$ brew install perryHomebrew gerektirir. macOS arm64 ve x86_64 desteklenir.
2Kullanım
perry build main.tsmain.ts'yi yerel bir çalıştırılabilir dosyaya derler
perry build main.ts -o myappÇıktı çalıştırılabilir dosya adını belirtin
perry build main.ts --enable-js-runtimeJavaScript npm paketi uyumluluğu için V8'i etkinleştirin
perry check ./srcTypeScript kodunu yerel derleme için doğrulayın
Özellik Desteği
Kapsamlı TypeScript ve Node.js API kapsama alanı
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+ Yerel npm Paketi
Popüler npm paketleri yerel Rust'ta yeniden implemente edildi. npm install yok, node_modules yok, sadece hızlı yerel kod.
Veritabanı
Güvenlik
HTTP
Veri İşleme
Tarih ve Saat
Yardımcılar
Koddan App Store'a
Perry sadece uygulamanızı derlemez — kullanıcılarınızın eline ulaştırır.
Derle ve İmzala
Tek komutla çapraz platform derlemeleri. macOS, iOS, Android ve Windows için kod imzalama sizin için halledilir. Xcode sağlama profilleri veya Android keystore'ları ile uğraşmaya gerek yok.
Dağıt
App Store, Play Store'a gönderin veya doğrudan indirme sunun. Perry Publish paketleme, noter onayı ve gönderimi yönetir.
Doğrula
Geisterhand tarafından desteklenir. 6 platformun tamamında otomatik UI testleri. Kullanıcılarınız size söylemeden önce uygulamanızın her yerde çalıştığından emin olun.
Açık kaynak projeler için ücretsiz. Takımlar için planlar → /publish
Nasıl Çalışır
TypeScript kaynağından yerel çalıştırılabilir dosyaya saniyeler içinde
lift
Derleyicinin kaputun altında nasıl çalıştığını öğrenmek ister misiniz? Derleyici iç yapısı