About this project

Perry is an ahead-of-time compiler for TypeScript and JavaScript, implemented in Rust. It uses SWC for parsing and LLVM for code generation, producing standalone machine-code binaries instead of shipping a JavaScript engine. The README positions it against Node.js, Bun and Electron, emphasizing no runtime install, small binaries (hello world around 330 KB) and instant cold starts. Targets include macOS, Windows, Linux, iOS, iPadOS, visionOS, tvOS, watchOS, Android, Wear OS, plus web and WebAssembly output. A SwiftUI-like UI API compiles to native platform widgets (AppKit, UIKit, Android Views, Win32, GTK4) rather than a WebView, and the project mentions home-screen widget support. The README claims roughly 97% pass rate on Node's own test suite across 53 node:* modules, with implementations of fs, http/http2, net/tls, crypto, stream, child_process, worker_threads, fetch and web globals, plus compatibility with around 50 npm packages such as Fastify, Express, mysql2, pg, ioredis, ws, bcrypt and jsonwebtoken. Plain JavaScript is also supported. Concurrency is exposed through parallelMap, parallelFilter and spawn on real OS threads; the compiler rejects shared mutable state so data races fail at compile time. The standard library covers databases, WebSockets, containers, i18n, keychain, notifications, auto-update and a TUI framework. Performance figures are published from open benchmark harnesses (Apple M1 Max, medians of repeated runs), covering image convolution, recursive Fibonacci, JSON pipelines, object allocation and array writes, with comparisons to Node.js, Bun and Rust. The README explicitly notes workloads where V8's JIT still wins and links to the harness and methodology so results can be reproduced. Installation is available via npm (@perryts/perry), Homebrew, winget, APT, Scoop, an install script or source builds. Typical usage is `perry init`, `perry run`, and `perry compile src/main.ts -o myapp`, with `perry doctor` for setup verification. Telemetry is opt-in and can be disabled via config or environment variables. Projects listed as built with Perry include Bloom Engine (a native TypeScript game engine), Mango (a native MongoDB GUI), Hone (an AI-powered code editor) and dB Meter (a sound level meter). The project is MIT licensed and developed in the open with a Discord community and public issue tracker.