v0.4.24 — tvOS hedefi, Linux'tan iOS/macOS çapraz derleme, perry login

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.

terminal

$ perry compile main.ts

main.ts derleniyor...

✓ Derlenen çalıştırılabilir dosya: main (2,3 MB)

$ ./main

Hello, World!

10
Hedefler
25+
Yerel UI widget'ları
0 ms
Başlatma süresi
App Store
Hazır

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

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ı
Framework Karşılaştırması

Her kutuyu işaretleyen tek framework

TypeScript yerel koda derlendi. Gerçek platform widget'ları. Sıfır runtime yükü.

FrameworkDilYerel KodYerel Widget'larRuntime Yükü
PerryAOT 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
Yerel derlenmiş
Gerçek platform widget'ları
Sıfır runtime yükü

TypeScript Yaz, Yerel Gönder

Tanıdık TypeScript sözdizimi ve API'lerini kullanın. Perry gerisini halleder.

hello.ts
// hello.ts
const greeting = "Hello, World!";
console.log(greeting);
 
// Compiles to ~2MB native executable
// No runtime needed!
$ perry build hello.ts
Yerel ikili dosya

Performans Karşılaştırması

Yerel derleme benzersiz verimlilik sunar

MetrikPerryNode.jsBun
İkili Dosya Boyutu2-5 MB~80 MB~90 MB
Başlatma Süresi~1 ms~30 ms~10 ms
Runtime BağımlılıklarıYokNode.jsBun
Bellek YüküMinimalV8 + GCJSC + GC

Benchmark Sonuçları: 2,2x Daha Hızlı

Perry vs Node.js v24, macOS ARM64 (düşük olan daha iyi)

closure
4.5x
object create
3.5x
array read
3.0x
math intensive
3.0x
method calls
3.0x
binary trees
2.7x
string concat
2.5x
fibonacci
2.1x
mandelbrot
1.9x
factorial
1.7x
İkili Dosya BoyutuDüşük olan daha iyi
Perry
5 MB
Node.js
80 MB
Bun
90 MB

Başlayın

Perry'yi kurun ve TypeScript'i yerel çalıştırılabilir dosyalara derlemeye başlayın

1Kurulum

terminal
$ brew tap PerryTS/perry
$ brew install perry

Homebrew gerektirir. macOS arm64 ve x86_64 desteklenir.

2Kullanım

Dosya derle
perry build main.ts

main.ts'yi yerel bir çalıştırılabilir dosyaya derler

Özel çıktı
perry build main.ts -o myapp

Çıktı çalıştırılabilir dosya adını belirtin

V8 runtime ile
perry build main.ts --enable-js-runtime

JavaScript npm paketi uyumluluğu için V8'i etkinleştirin

Uyumluluğu kontrol et
perry check ./src

TypeScript 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
Tam Destek
Kısmi

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ı

mysql2pgmongodbbetter-sqlite3ioredis

Güvenlik

bcryptargon2jsonwebtokencrypto

HTTP

httphttpsaxiosnode-fetchwsnodemailer

Veri İşleme

cheeriosharpzliblodash

Tarih ve Saat

dayjsmomentdate-fnsnode-cron

Yardımcılar

uuidnanoidslugifyvalidatordotenvrate-limiter-flexible
Sadece içe aktarın ve kullanın — Perry otomatik olarak yerel implementasyonu kullanır

Koddan App Store'a

Perry sadece uygulamanızı derlemez — kullanıcılarınızın eline ulaştırır.

perry buildDerle ve imzala
perry publishPaketle ve gönder
Mağazalar ve İndirmelerApp Store, Play Store, doğrudan
perry verifyHer platformu test et

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

TypeScript.ts dosyaları
SWC
AyrıştırıcıHızlı ayrıştırma
HIR
DönüşümMonomorphization
Crane
lift
Kod ÜretimiMakine kodu
Çalıştırılabilir2-5 MB ikili dosya

Derleyicinin kaputun altında nasıl çalıştığını öğrenmek ister misiniz? Derleyici iç yapısı