Perry ile TypeScript'ten yerel uygulamalar geliştiren bir geliştiricinin çalışma alanı, farklı platformlarda çalışan uygulamalar gösteriliyor.

Perry: Tek Kod Tabanı, Tüm Platformlarda Yerel Performans

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çeveDilYerel KodYerel BileşenlerÇalışma Zamanı Yükü
Perry★AOT derlenmiş yerel ikiliTypeScriptYok
React Native JIT / çalışma zamanında yorumlanırJS / TypeScriptHermes / V8 + Köprü
Flutter AOT derlenmiş, özel rendererDartDart VM + Skia motoru
KMP + Compose Android’de JVM, iOS’ta yerelKotlinKısmiKotlin çalışma zamanı + Skia
Swift for Android Yerel ikili, paylaşımsız UISwiftPaylaşımsız UIAndroid’de Swift çalışma zamanı
.NET MAUI Mono aracılığıyla Kısmi AOTC#Kısmi.NET / Mono çalışma zamanı
NativeScript JS çalışma zamanı, yerel bileşen erişimiJS / TypeScriptV8 / JavaScriptCore
Ionic Yerel sarmalayıcıda web uygulamasıJS / TypeScriptWebView + 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.ts

Performans Karşılaştırması

Yerel derleme eşsiz verimlilik sunar.

MetrikPerryNode.jsBun
İkili Boyutu2-5 MB~80 MB~90 MB
Başlangıç Süresi~1 ms~30 ms~10 ms
Çalışma Zamanı BağımlılıklarıYokNode.jsBun
Bellek YüküMinimalV8 + GCJSC + 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 perry

2 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:

  1. TypeScript (.ts) dosyaları
  2. SWC Ayrıştırıcı: Hızlı kod analizi.
  3. HIR Dönüşümü: Monomorphization gibi optimizasyonlar.
  4. LLVM Kod Üretimi: Makine koduna dönüştürme.
  5. Yürütülebilir Dosya: 2-5 MB boyutunda nihai ikili dosya.

1 Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir