로드맵
Perry의 현재 위치와 나아갈 방향. 네이티브 컴파일에서 완전한 크로스 플랫폼 개발 생태계로.
Native TS → executable compilation
SWC parsing + Cranelift 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.
Cranelift 0.121 + parallel compilation
Upgraded from Cranelift 0.113 to 0.121. 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.
perry/ui expansion
Drag and drop, accessibility labels, custom context menus, DatePicker, and more layout primitives across all platforms.
Full regex support
Complete ECMAScript-compatible regular expression engine compiled to native code.
Further performance optimization
Continuing to improve object creation, memory management, and code generation for even faster binaries. v0.4.14 shipped native fcmp (30% faster mandelbrot), 125x string append, short-circuit AND/OR, and negative literal folding.
Framework compatibility layers
Improving React, Angular, and Ionic bridges as on-ramps — all mapping to perry/ui underneath.
perrysdad: self-hosting LLVM compiler
Alternative LLVM IR backend for Perry written in TypeScript, compiled by Perry itself. 68/68 deterministic tests passing (100% parity). Phase 6: async/await, generators, interface dispatch.
Hub public beta
Opening distributed builds to external users — push TypeScript, get signed native binaries for all platforms.
Stream module
Node.js-compatible Readable, Writable, Transform, and Duplex stream implementations.
Source maps & debug info
DWARF debug info and source maps for native debugging with lldb/gdb and IDE integration.
VS Code extension
Language server, build integration, and debugging support directly in VS Code.
Perry package registry
A registry for Perry-optimized packages with pre-compiled native implementations.
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.