v0.5.1146 — gerçek npm paketleri artık derleniyor: axios, zod, express, fastify, hono

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.

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

Mango

Native MongoDB GUI — tamamen TypeScript ile yapılmış

macOSLinuxWindows
Mango — document editor
Mango — query explorer
Hone

Hone

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

macOSiOSWeb
Hone — native AI code editor

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ı

Koddan App Store'a

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

perry compileDerle 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

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ı: 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)

accumulate
18x
object create
11x
json roundtrip
5.3x
loop overhead
4.5x
math intensive
3.6x
array read
3.3x
fibonacci
3.2x
array write
2.3x
loop data dependent
1.4x
nested loops
1.0x
İ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 compile main.ts

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

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

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

V8 runtime ile
perry compile 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

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
LLVM
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ı

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.