Yol Haritası

Perry bugün nerede ve nereye gidiyor. Yerel derlemeden tam kapsamlı çapraz platform geliştirme ekosistemine.

Yayınlandı

Native TS → executable compilation

SWC parsing + LLVM code generation for AOT compilation of TypeScript to native machine code.

10-target compilation: 8 native platforms + WASM + Web

AppKit, UIKit, Android Views (JNI), GTK4, Win32, SwiftUI (watchOS/tvOS), WebAssembly, and JavaScript — 25+ widgets, Canvas, Table, system APIs across all targets.

React compatibility layer (perry-react)

Optional bridge: write React/JSX and it compiles to perry/ui widgets underneath. Phase 1 shipped.

Prisma-compatible ORMs (MySQL, PostgreSQL, SQLite)

Drop-in @prisma/client replacements backed by Rust FFI + sqlx. Full CRUD, transactions, raw SQL — zero runtime overhead.

Universal push notifications (perry-push)

APNs, FCM, Web Push, and WNS from a single library with Rust FFI. ES256/RS256 JWT, OAuth 2.0, VAPID.

Perry Hub + distributed build workers

Cloud build orchestration server with macOS and Linux workers. Code signing, notarization, App Store and Play Store publishing.

Pry: native JSON viewer on 5 platforms

Flagship app shipping on Mac App Store and Google Play. Same TypeScript codebase, five native binaries.

30+ native npm package implementations

mysql2, pg, mongodb, axios, bcrypt, express, ws, jsonwebtoken, uuid, chalk, and more — compiled natively.

Async/await, Promises, generators, closures, generics

Full support for modern TypeScript features including generics with monomorphization.

Classes with inheritance, private fields, static members

Complete class support including extends, private fields (#field), and static methods/properties.

Optional V8 runtime for JS npm compatibility

Embed V8 to run uncompiled JavaScript npm packages when native implementations aren't available.

Cross-compilation (macOS → Linux, macOS → iOS, Linux → Windows)

Build for other platforms from your development machine without needing the target OS. Linux → Windows via lld-link and xwin-style sysroot.

Documentation site (docs.perryts.com)

49-page mdBook documentation covering language features, native UI, stdlib, CLI reference, all 6 platforms, and plugins.

Homebrew + APT distribution

Install Perry via brew install PerryTS/perry/perry on macOS or apt-get on Debian/Ubuntu. Automated release pipeline via GitHub Actions.

Automated App Store & Play Store publishing

perry publish ios / macos / android: automated certificate generation, code signing, provisioning profiles, and store submission with no manual portal visits.

perry/widget — Native WidgetKit from TypeScript

Compile TypeScript widget definitions to native SwiftUI WidgetKit extensions. HIR-level render tree emitted as SwiftUI source code.

iPad native support

Full iPad support with UIDeviceFamily [1,2], orientation, LaunchScreen storyboard, and device idiom detection.

http/https native modules

Client-side HTTP via reqwest: request(), get(), ClientRequest, IncomingMessage — matching the Node.js http API.

better-sqlite3 support

Full better-sqlite3 API: new Database(), prepare, exec, run, get, all — with NaN-boxing and named column access.

WASM compilation target

Compile TypeScript to WebAssembly bytecode. Self-contained HTML output, full perry/ui support via DOM bridge, NaN-boxing, async/await, class system.

Web/JavaScript compilation target

Compile TypeScript to optimized JavaScript with Rust-native minification and name obfuscation. Pure JS output for browser deployment.

Geisterhand: cross-platform UI testing

In-process testing framework with embedded HTTP server. Programmatic widget interaction, screenshot capture, and chaos/fuzz testing on all 5 native platforms.

perry run — one-step compile and launch

Auto-detects entry file, target platform, and connected devices. Interactive prompts for multiple targets, live console streaming, remote build fallback.

Enhanced type inference

Infers types from literals, binary ops, variable propagation, and method returns. Optional tsgo IPC integration for full type checking.

Compile native npm packages

perry.compilePackages config: compile pure TS/JS npm packages natively instead of V8. Deduplication across nested node_modules.

Design system bridge (perry-styling)

Token codegen CLI, typed PerryTheme objects, flat-primitive styling helpers, compile-time platform constants via __platform__.

Telemetry & auto-update

Opt-in anonymous usage statistics, background version check on every CLI invocation with 24h cache, perry update command.

CLI: platform as positional argument

perry run ios, perry publish macos — platform is now a positional argument instead of boolean flags, making commands more intuitive.

Runtime performance optimizations

memcmp-based string comparison, interned typeof results, inline .length access, direct field access on known types, and reduced NaN-boxing for strings, closures, and private fields.

Cross-compile to Windows from Linux

Build Windows executables from Linux using lld-link and PERRY_WINDOWS_SYSROOT. Runtime target detection replaces compile-time #[cfg] checks for true cross-compilation.

iOS game loop support

UIApplicationMain on main thread, user code on background thread via --features ios-game-loop. Enables blocking game loop patterns (while !shouldClose) on iOS where UIKit must own the main thread.

Crash reporting (crash.log)

Panic hooks and signal handlers (SIGSEGV/SIGBUS/SIGABRT) write crash details to ~/.hone/crash.log for Chirp telemetry. Caught panics clear the log.

Two-stage Hub build pipeline

Linux workers cross-compile Windows artifacts, Hub re-queues for Windows workers to sign and package. Azure VM auto-startup for Windows sign workers.

Cross-platform menu APIs

menuClear and menuAddStandardAction extended from macOS-only to all 6 native platforms.

Comprehensive perry.toml and Geisterhand documentation

Complete perry.toml reference with bundle ID resolution, build number auto-increment, and CI/CD examples. Full Geisterhand rewrite with API docs and test automation patterns.

True multi-threading (v0.4.0)

Real OS threads via perry/thread: parallelMap, parallelFilter, and spawn. Compile-time mutable capture rejection for thread safety. Thread-local arenas, SerializedValue deep-copy, parallel compiler pipeline.

Compile-time i18n system (v0.3.0)

Zero-ceremony internationalization: auto-extract string literals, CLDR plural rules for 30+ locales, compile-time validation, translations baked into binary. perry i18n extract CLI, format wrappers, native locale detection.

watchOS native app support (v0.3.2)

Full watchOS compilation target with data-driven SwiftUI renderer, 15 supported widgets, perry run watchos with simulator auto-detection, and perry setup watchos wizard.

perry/widget — 4-platform widget support

Expanded from iOS-only to iOS, Android (Glance), watchOS, and Wear OS (Tiles). Four new compile targets for widget extensions.

Audio & camera capture APIs

perry/system audio capture (AVAudioEngine, AudioRecord, PulseAudio, WASAPI, Web Audio) and perry/ui camera capture (AVCaptureSession) with A-weighted dB measurement and color sampling.

perry run android — full APK pipeline

One-step compile, package, assembleDebug, install, and launch for Android apps with Gradle integration.

Push notifications & StoreKit packages

perry/push (APNs permission, token retrieval, badge count) and perry/storekit (StoreKit 2 purchases, subscriptions, receipt validation) as first-party native packages.

Parallel compiler pipeline

Module codegen, transform passes, and symbol scanning parallelized via rayon across all CPU cores.

tvOS (Apple TV) target (v0.4.5)

10th compilation target. Full tvOS support with SwiftUI renderer, same codebase as iOS/watchOS apps.

Cross-compile iOS/macOS from Linux (v0.4.23–v0.4.24)

Build iOS and macOS binaries from Linux using ld64.lld. Framework linking, -lobjc, CoreGraphics/Metal/IOKit, and Mach-O codegen triple.

perry login + usage-based billing (v0.4.14)

GitHub OAuth login flow, API tokens, free tier (15 builds/month), Pro tier via Polar.sh. Dashboard at app.perryts.com with usage tracking.

Hub parallel builds

Slot-based dispatch with concurrent workers. Workers report max_concurrent capacity, artifacts served as base64 downloads.

Windows UI overhaul (v0.4.8–v0.4.13)

DPI-aware scaling, GDI gradient fills, PNG/JPEG image loading, launcher-style window APIs, global hotkeys, app icons, reentrancy-safe layout.

macOS notarization + GCloud KMS signing

--notarize flag for perry publish macos with Developer ID certificate. GCloud KMS code signing for Windows builds.

perry/appstorereview package

Native app store review prompts: SKStoreReviewController (iOS) and Play In-App Review API (Android).

Performance: native fcmp, string append, short-circuit (v0.4.14)

Native floating-point comparison (mandelbrot 30% faster), in-place string append (125x faster), short-circuit AND/OR, negative literal folding at HIR level.

iOS App Store readiness (v0.4.24)

Full Info.plist with all Apple-required keys, CFBundleIcons, version/build from perry.toml, UILaunchScreen, provisioning profiles for TestFlight.

LLVM backend migration (v0.5.0–v0.5.12)

Cranelift replaced by LLVM as the sole codegen backend — loop vectorization, GVN, aggressive inlining. After the migration settled, Perry beat Node.js on every benchmark in its suite (1.7x–24.6x, two ties).

Generational GC, small-string optimization, lazy JSON (v0.5.306)

Generational garbage collector and SSO ship as defaults. Lazy JSON tape lands at 75 ms median on validate-and-roundtrip — best in the dynamic-typing pack.

npm, winget, and Scoop distribution

npm install @perryts/perry on all seven binary platforms, winget install PerryTS.Perry, and Scoop — alongside the existing Homebrew and APT channels.

perry dev, live inspector, perry/updater (v0.5.359)

Watch-mode auto-recompile on an in-memory AST cache, live inspector at localhost:7676, and a desktop auto-update package.

Real npm packages compile natively (v0.5.1146)

axios, zod v4, express, fastify, and hono compile and run through perry.compilePackages — with the V8 fallback covering the long tail.

Direct JavaScript compilation (.js / .cjs / .mjs / .jsx)

Plain JavaScript feeds the same native AOT pipeline as TypeScript — require() / module.exports are rewritten to ESM automatically. No type annotations required.

node:stream + node:stream/web

Readable, Writable, Transform, Duplex, and the WHATWG web streams — real implementations, not stubs.

~97% parity against Node's own test suite

2792/2863 cases across 53 node:* modules (Node v26.3.0): fs, http/https/http2, net/tls, dns/dgram, crypto, child_process, cluster, worker_threads, zlib, async_hooks/AsyncLocalStorage, WebCrypto, and more.

95%+ on the c262 conformance suite

Perry's test262-derived ECMAScript conformance suite passes at 95%+. The remaining gap is a known tail: lookbehind regex, console formatting edge cases, lone surrogate handling.

DatePicker + drag & drop on all platforms (v0.5.1146)

Cross-platform DatePicker widget and drag & drop across AppKit, UIKit, GTK4, Win32, and Android.

Windows Fluent design + windows-winui target

Mica materials and Fluent styling for Windows apps, plus a new windows-winui render backend target.

Game-engine embedding (BloomView)

Live Bloom Engine rendering inside perry/ui on every backend — native surface handles on macOS, iOS, tvOS, GTK4, Android, and Windows.

Hub public beta — live

Distributed builds are open to everyone: perry login (GitHub OAuth), free tier with 15 publishes/month, Pro plan, dashboard at app.perryts.com. Push TypeScript, get signed binaries and store submissions.

Devam Ediyor

Next.js standalone server, compiled natively

Wall-by-wall bring-up of the real Next.js 16 app-router standalone build — dozens of codegen and runtime walls already down, with the render pipeline advancing deeper every release.

Server frameworks out of the box

Express, Fastify, and Hono compile and serve today — Fastify HTTP throughput is now part of the benchmark suite. NestJS bring-up is underway.

Closing the conformance tail

From 95%+ on c262 and ~97% on Node's own tests toward the last few exceptions: lookbehind regex, console.dir/group formatting, lone surrogate handling, and the long tail of edge-case options.

perry/ui expansion

Accessibility labels, custom context menus, and more layout primitives across all platforms — plus new surfaces like WebView and perry/ads.

Further performance optimization

Perry already wins most benchmarks against Node.js and Bun. Ongoing work on JSON, GC block reclaim, typed-array fast paths, and inlining boundaries.

Planlandı

Compile 98% of all Node.js programs

The next big milestone: real-world Node.js software compiles and runs with no code changes — desktop and CLI apps (opencode, Claude Code, and friends) as well as server-side stacks (Next.js, NestJS, and beyond).

Source maps & debug info

DWARF debug info and source maps for native debugging with lldb/gdb and IDE integration.

Vizyon

One TypeScript codebase → every platform and the web

Write once, compile to native GUI and CLI apps on macOS, iPadOS, iOS, Android, Linux, Windows, WebAssembly, and the Web.

Full perry/ui framework with layout engine

Advanced layout system, animations, gestures, and accessibility — the most complete native UI toolkit for TypeScript.

Hot reload for native UI development

Instant preview of UI changes during development without recompiling the entire binary.