TypeScript'i Yerel Koda Derleyin.
Tek Kod Tabanı. Her Platform.
Perry, TypeScript'i macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, HarmonyOS, 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!
Perry ile TypeScript'ten derlenmiş gerçek uygulamalar.
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 LLVM ile optimize edilmiş 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.
Deterministik build'ler
Aynı girdi, aynı ikili dosya. Makineler, CI çalıştırmaları ve takımlar arasında tekrar üretilebilir. Açıklanamayan yeniden derlemeler yok.
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.
Gerçek npm Paketleri
axios, zod, express, fastify ve hono native ikiliklere derlenir. Saf JavaScript paketleri isteğe bağlı bir gömülü runtime üzerinde çalışır — kendi kendine yeterli, runtime'da node_modules olmadan.
35+ Yerel UI Widget'ı
Düğmeler, tablolar, tarih seçiciler, drag & drop, grafikler, haritalar, komut paletleri, QR kodlar, zengin metin ve daha fazlası — tümü AppKit, UIKit, GTK4, Win32 (Fluent/Mica) 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.
Daha derine inin: Perry'nin TypeScript'i bir ikili dosyaya nasıl derlediği, onu bir TypeScript yerel derleyicisi yapan şey ve Electron alternatifleri karşısında nasıl bir yerde durduğu.
İnsanların neler ürettiğini görün
TypeScript'ten derlenen gerçek native uygulamalar. Electron yok, web view yok — her platformda native UI.
Mango
Native MongoDB GUI — tamamen TypeScript ile yapılmış


Hone
Native AI destekli kod editörü — TypeScript'ten native binary'ye

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
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
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ı: 18 Kata Kadar Daha Hızlı
Perry v0.5.279 vs Node.js v25 — RUNS=11 medyan, Apple M1 Max (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 compile main.tsmain.ts'yi yerel bir çalıştırılabilir dosyaya derler
perry compile main.ts -o myappÇıktı çalıştırılabilir dosya adını belirtin
perry compile 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
Nasıl Çalışır
TypeScript kaynağından yerel çalıştırılabilir dosyaya saniyeler içinde
Derleyicinin kaputun altında nasıl çalıştığını öğrenmek ister misiniz? Derleyici iç yapısı
Derinlemesine inceleme: LLVM üzerinde TypeScript — monomorphization, NaN-boxing ve Perry'nin Cranelift'ten neden ayrıldığı.
Sıkça Sorulan Sorular
İnsanların ilk ikili dosyalarını derlemeden önce sorduğu her şey
Perry'nin Node.js'e veya bir runtime'a ihtiyacı var mı?
Hayır. Perry, TypeScript'i ahead-of-time olarak bağımsız bir yerel çalıştırılabilir dosyaya derler. İkili dosya; makinede Node.js, Bun, Deno veya herhangi bir JavaScript runtime'ı kurulu olmadan çalışır. Henüz yerel olarak derlenemeyen npm paketleri için --enable-js-runtime ile isteğe bağlı, gömülü bir V8 fallback kullanılabilir.
Derlenen ikili dosyalar ne kadar büyük?
Bir hello world ikili dosyası yaklaşık 330 KB'dir. Tipik CLI araçları 2–5 MB civarındadır. Büyük framework'ler içeren (Fastify, mysql2, vb.) tam kapsamlı uygulamalar yaklaşık 48 MB'dir — bu, bir Electron uygulamasının veya runtime gömülü bir ikili dosyanın başladığı ~80–150 MB'nin hâlâ çok altındadır.
npm paketlerini kullanabilir miyim?
Evet. Saf TypeScript/JavaScript paketleri perry.compilePackages aracılığıyla yerel olarak derlenir — axios, zod v4, express, fastify ve hono bugün derlenip çalışıyor. Tam JS motoru semantiğine ihtiyaç duyan paketler, --enable-js-runtime ile isteğe bağlı V8 fallback'i üzerinden çalıştırılabilir.
Perry hangi platformları destekliyor?
On derleme hedefi: macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly ve Web/JS. GUI uygulamaları yerel platform widget'larını kullanır — AppKit, UIKit, GTK4, Win32 ve JNI aracılığıyla Android.
Perry ücretsiz ve açık kaynaklı mı?
Evet. Derleyici ücretsiz ve açık kaynaklıdır. Yerelde derlemek ve çalıştırmak hiçbir ücrete tabi değildir ve hesap gerektirmez. Perry Publish — barındırılan derleme, imzalama ve mağaza gönderim hattı — ücretsiz bir plan (ayda 15 yayın) ve bir Pro plan sunar.
Perry, Bun veya Deno compile'dan nasıl farklı?
Bun ve Deno, JavaScript'inizi kendi runtime'larıyla birlikte tek bir dosyada paketler — bir hello world, platforma bağlı olarak yaklaşık 60–100 MB'dir ve kod hâlâ JIT ile çalıştırılır. Perry ise TypeScript'i LLVM aracılığıyla ahead-of-time olarak makine koduna derler: gömülü motor yok, ~330 KB hello world, ~1 ms başlatma süresi. Tam karşılaştırmalar için Perry vs Bun ve Perry vs Deno sayfalarına bakın.
Perry, Electron veya Tauri'den nasıl farklı?
Electron, her uygulamayla birlikte Chromium ve Node.js'i gönderir, bu yüzden kurulum dosyaları yaklaşık 80–150 MB'den başlar. Tauri çok daha küçüktür ama yine de sistem webview'inde bir web ön yüzü render eder ve uygulama mantığı Rust'tadır. Perry ise hiç webview kullanmaz: TypeScript, tek bir süreçte gerçek platform widget'larını — AppKit, UIKit, GTK4, Win32 — süren makine koduna derlenir. Tam karşılaştırmalar için Perry vs Electron ve Perry vs Tauri sayfalarına bakın.
Perry ne kadar olgun?
Perry 1.0 öncesi ve hızla ilerliyor, ancak onunla inşa edilmiş gerçek uygulamalar bugün gönderiliyor — bunlar arasında Bloom Engine, Mango, Hone, Pry ve dB Meter var. Detaylar için showcase'e bakın.
Başka sorularınız mı var? Başlarken kılavuzunu okuyun veya GitHub Discussions'da sorun.