Tek Kod Tabanı. Her Platform. Yerel Performans.
Perry, TypeScript kodunuzu macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly ve Web üzerinde doğrudan yerel GUI ve CLI uygulamalarına derler. Çalışma zamanı veya Electron’a gerek kalmadan, sadece yerel ikili dosyalar üretir. Bu sayede, geliştiriciler tek bir kod tabanıyla tüm popüler platformlarda yüksek performanslı uygulamalar oluşturabilirler.
Basit bir terminal komutuyla derleme süreci oldukça kolaydır:
$perry compile main.ts
Compiling main.ts...
✓ Compiled executable: main (2.3 MB)
$ ./main
Hello, World!Perry’nin öne çıkan bazı metrikleri:
- 10 Hedef Platform: Geniş bir cihaz yelpazesini kapsar.
- 25+ Yerel UI Bileşeni: Gerçek platform widget’ları (düğmeler, metin alanları, tablolar, tuval vb.) ile zengin kullanıcı deneyimleri.
- 0 ms Başlangıç Süresi: Anında açılan uygulamalarla üstün kullanıcı deneyimi.
- App Store Hazır: Uygulamanızı kolayca mağazalara dağıtın.
Neden Perry?
Perry, TypeScript’i yerel uygulamalara derlemek için ihtiyacınız olan her şeyi sunar.
Çalışma Zamanı Gerektirmez
Bağımsız yerel çalıştırılabilir dosyalar üretir. Node.js, V8 veya diğer çalışma zamanı bağımlılıklarına ihtiyaç duymaz. Her yerde çalışan tek bir ikili dosya.
Hızlı Derleme
SWC ile hızlı ayrıştırma ve LLVM ile optimize edilmiş kod üretimi sayesinde, doğrudan TypeScript’ten yerel koda derleme yapar. Ara katman JavaScript’e gerek yoktur.
Küçük İkili Dosyalar
Çıktı ikili dosyaları genellikle 2-5 MB boyutundadır. İsteğe bağlı V8 çalışma zamanı kullanıldığında bile 15-20 MB arasında kalır. Daha az gönderin, daha hızlı dağıtın.
Deterministik Derlemeler
Aynı girdiyle her zaman aynı ikili dosya üretilir. Makinalar, CI süreçleri ve ekipler arasında tekrarlanabilir sonuçlar sağlar.
Kapsamlı Standart Kütüphane
fs, path, crypto, os, Buffer, child_process ve daha fazlasının yerel uygulamalarıyla birlikte gelir. Tanıdık Node.js API’lerini kullanmaya devam edin.
İsteğe Bağlı V8 Çalışma Zamanı
Saf JavaScript npm paketi kullanmanız mı gerekiyor? Tam npm ekosistemi uyumluluğu için V8 çalışma zamanı bayrağını etkinleştirin.
25+ Yerel UI Bileşeni
Düğmeler, metin alanları, tablolar, tuval, kaydırma görünümleri, 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 bileşenlerine derlenir.
Derleme Zamanı Eklenti Sistemi
Modüller derleme zamanında birleşir; çalışma zamanı eklenti yükü veya IPC sınırları olmaz. Bağımlılıklarınız nihai ikili dosyada doğrudan yerel fonksiyon çağrılarına dönüşür.
Gerçek Çoklu İş Parçacığı
parallelMap, parallelFilter ve spawn ile gerçek OS iş parçacıkları sunar. Derleme zamanı güvenliği, değiştirilebilir yakalamaları reddeder; SharedArrayBuffer veya worker’lara gerek kalmadan doğrudan iş parçacıkları.
Derleme Zamanı i18n
Otomatik dize çıkarma, 30’dan fazla yerel ayar için CLDR çoğul kuralları, derleme zamanı doğrulaması. Çeviriler, neredeyse sıfır çalışma zamanı aramasıyla ikili dosyaya dahil edilir.
Her Platformda Yerel
Perry, TypeScript kodunuzu yerel UI çerçevelerine, WebAssembly’ye ve JavaScript’e derler; web görünümleri veya Electron’a değil. Her platformda gerçek yerel bileşenler sunarken, web’de de çalışır.
- macOS: AppKit (Kararlı)
- iOS: UIKit (Kararlı)
- iPadOS: UIKit (Kararlı)
- Android: Views (Kararlı)
- Linux: GTK4 (Kararlı)
- Windows: Win32 (Kararlı)
- watchOS: SwiftUI (Kararlı)
- tvOS: SwiftUI (Kararlı)
- WASM: WebAssembly (Kararlı)
- Web: JavaScript (Kararlı)
Koddan App Store’a
Perry sadece uygulamanızı derlemekle kalmaz, aynı zamanda kullanıcılarınızın eline ulaşmasını sağlar.
Uygulama Geliştirme Süreci
- Derle ve İmzala: Tek bir komutla çapraz platform derlemeleri. macOS, iOS, Android ve Windows için kod imzalama sizin için otomatik olarak halledilir.
- Dağıt: App Store, Play Store’a gönderin veya doğrudan indirme sağlayın. Perry Publish, paketleme, notarizasyon ve gönderimi yönetir.
- Doğrula: Geisterhand tarafından desteklenen 6 platformda otomatik UI testi. Kullanıcılarınız size söylemeden önce uygulamanızın her yerde çalıştığından emin olun.
Rakipsiz Bir Çerçeve Karşılaştırması
Perry, TypeScript’i yerel koda derleyen, gerçek platform bileşenleri sunan ve çalışma zamanı yükü olmayan tek çerçevedir.
| Çerçeve | Dil | Yerel Kod | Yerel Bileşenler | Çalışma Zamanı Yükü |
|---|---|---|---|---|
| Perry★AOT derlenmiş yerel ikili | TypeScript | ✓ | ✓ | Yok |
| React Native JIT / çalışma zamanında yorumlanır | JS / TypeScript | ✓ | Hermes / V8 + Köprü | |
| Flutter AOT derlenmiş, özel renderer | Dart | ✓ | Dart VM + Skia motoru | |
| KMP + Compose Android’de JVM, iOS’ta yerel | Kotlin | Kısmi | ✓ | Kotlin çalışma zamanı + Skia |
| Swift for Android Yerel ikili, paylaşımsız UI | Swift | ✓ | Paylaşımsız UI | Android’de Swift çalışma zamanı |
| .NET MAUI Mono aracılığıyla Kısmi AOT | C# | Kısmi | ✓ | .NET / Mono çalışma zamanı |
| NativeScript JS çalışma zamanı, yerel bileşen erişimi | JS / TypeScript | ✓ | V8 / JavaScriptCore | |
| Ionic Yerel sarmalayıcıda web uygulaması | JS / TypeScript | WebView + Capacitor |
Perry, yerel derlenmiş kod, gerçek platform widget’ları ve sıfır çalışma zamanı yükü ile diğer popüler framework’lerden ayrışır.
TypeScript Yazın, Yerel Uygulama Yayımlayın
Tanıdık TypeScript sözdizimi ve API’lerini kullanın, geri kalanını Perry halleder. Aşağıdaki gibi basit bir kod parçası doğrudan yerel bir çalıştırılabilir dosya haline gelir:
// hello.ts
const greeting = 'Hello, World!';
console.log(greeting);
// ~2MB yerel çalıştırılabilir dosyasına derlenir
// Çalışma zamanı gerekmez!$perry build hello.tsPerformans Karşılaştırması
Yerel derleme eşsiz verimlilik sunar.
| Metrik | Perry | Node.js | Bun |
|---|---|---|---|
| İkili Boyutu | 2-5 MB | ~80 MB | ~90 MB |
| Başlangıç Süresi | ~1 ms | ~30 ms | ~10 ms |
| Çalışma Zamanı Bağımlılıkları | Yok | Node.js | Bun |
| Bellek Yükü | Minimal | V8 + GC | JSC + GC |
Benchmark Sonuçları: 18 Kata Kadar Daha Hızlı
Perry v0.5.279, Apple M1 Max üzerinde yapılan testlerde Node.js v25’e göre birçok benchmark’ta belirgin şekilde daha hızlı performans gösterdi:
- Toplama (accumulate): 18 kat daha hızlı (34 ms’ye karşı 617 ms)
- Nesne Oluşturma (object create): 11 kat daha hızlı (1 ms’ye karşı 11 ms)
- JSON Gidiş-Dönüş (json roundtrip): 5.3 kat daha hızlı (75 ms’ye karşı 394 ms)
- Döngü Yükü (loop overhead): 4.5 kat daha hızlı (12 ms’ye karşı 54 ms)
- Matematik Yoğun (math intensive): 3.6 kat daha hızlı (14 ms’ye karşı 51 ms)
- Dizi Okuma (array read): 3.3 kat daha hızlı (4 ms’ye karşı 13 ms)
- Fibonacci: 3.2 kat daha hızlı (318 ms’ye karşı 1022 ms)
- Dizi Yazma (array write): 2.3 kat daha hızlı (4 ms’ye karşı 9 ms)
Başlamak İçin
Perry’yi yükleyin ve TypeScript’i yerel çalıştırılabilir dosyalara derlemeye başlayın.
1 Kurulum
macOS kullanıcıları Homebrew aracılığıyla Perry’yi kolayca yükleyebilir:
$ brew tap PerryTS/perry
$ brew install perry2 Kullanım
Bir dosyayı derlemek, çıktı adını özelleştirmek veya V8 çalışma zamanını etkinleştirmek için basit komutlar kullanın:
- Bir dosyayı derle:
perry compile main.ts - Özel çıktı:
perry compile main.ts -o myapp - V8 çalışma zamanı ile:
perry compile main.ts --enable-js-runtime
Uyumluluk Kontrolü
TypeScript kodunuzu yerel derleme için doğrulamak amacıyla şu komutu kullanın: perry check ./src
Özellik Desteği
Perry, kapsamlı TypeScript ve Node.js API kapsamı sunar.
Temel Dil Özellikleri
64-bit kayan nokta sayıları (f64), UTF-8 dizeler, boolean’lar, Typed ve karma tipli diziler, nesne literalleri, 256-bit BigInt desteği, sayısal ve dize enum’lar.
Fonksiyonlar
Adlandırılmış fonksiyonlar, Arrow fonksiyonları, varsayılan ve rest parametreleri, kapanımlar (değiştirilebilir yakalamalar dahil), yüksek mertebeden fonksiyonlar, Async/Await desteği.
Sınıflar
Temel sınıf sözdizimi, parametreli yapıcılar, ES2022 #privateField sözdizimi ile özel alanlar, statik metotlar/alanlar, Getter/Setter’lar, extends anahtar kelimesi ile kalıtım, super() yapıcı çağrıları.
Tip Sistemi
Açık tip tanımlamaları, otomatik tip algılama, monomorphization (Rust gibi) ile jenerikler, arayüz tanımlamaları, string | number gibi birleşim tipleri, typeof operatörü ile tip korumaları, type X = … bildirimleri ile tip takma adları.
Standart Kütüphane
readFileSync, writeFileSync, existsSync gibi dosya sistemi (fs) işlemleri; path.join, dirname, basename gibi yol (path) manipülasyonları; randomBytes, sha256 gibi kripto (crypto) fonksiyonları; os.platform, arch gibi işletim sistemi (os) bilgileri; Buffer işlemleri; execSync, spawnSync gibi child_process metotları; JSON/Math/Date tam uygulamaları.
30+ Yerel npm Paketi
Perry, popüler npm paketlerini (örneğin mysql2, pg, mongodb, http, axios, lodash, dayjs, uuid) yerel Rust dilinde yeniden uygulayarak npm kurulumuna veya node_modules’a gerek kalmadan hızlı yerel kod sunar. Sadece içe aktarın ve kullanın; Perry otomatik olarak yerel uygulamayı kullanacaktır.
Nasıl Çalışır?
TypeScript kaynak kodundan yerel çalıştırılabilir dosyaya saniyeler içinde ulaşım:
- TypeScript (.ts) dosyaları
- SWC Ayrıştırıcı: Hızlı kod analizi.
- HIR Dönüşümü: Monomorphization gibi optimizasyonlar.
- LLVM Kod Üretimi: Makine koduna dönüştürme.
- Yürütülebilir Dosya: 2-5 MB boyutunda nihai ikili dosya.


We <3 npm