# PerryTS/perry

A native TypeScript/JavaScript compiler written in Rust. Compiles TypeScript/JavaScript directly to executables using SWC and LLVM.

Repository: https://github.com/PerryTS/perry
Canonical: https://ross.abutalabs.com/products/perry
Homepage: https://www.perryts.com
Language: Rust
License: MIT
License Family: permissive
Topics: compile, smc, typescript, android, harmonyos, ios, llvm, macos, native, watchos, windows
Last push: 2026-08-26T22:39:57+00:00

## Health v2 (maintenance only)
Score: 75/100 (v2, computed 2026-09-03T02:39:23.370411+00:00)
- activity 99, release rhythm 79, longevity 16
- inputs: {"age_days": 226, "days_push": 7, "days_rel": 61, "gap_med": 0, "n_releases_24m": 106}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 4709, forks 158 (observed 2026-08-28T04:08:57.311397+00:00)

## What it is
Perry is a native TypeScript/JavaScript compiler written in Rust that compiles TypeScript source directly to standalone machine-code executables using SWC for parsing and LLVM for code generation. It supports multiple targets (macOS, Windows, Linux, iOS, Android, watchOS, HarmonyOS, Web, WebAssembly) with native UI widgets, real OS threads, and Node.js-compatible standard library APIs without requiring any JavaScript runtime.

## Use cases
- compile typescript to a native executable
- ship a cli tool without node.js installed
- build cross-platform desktop and mobile apps from typescript
- create small self-contained binaries instead of electron apps
- get native performance from typescript code
- build terminal ui apps in typescript without node
- compile typescript for ios and android from one codebase

## When to choose
- you want instant cold starts and tiny self-contained binaries from TypeScript
- you need to ship CLIs, GUIs, or mobile apps without bundling Node.js, V8, or Electron
- you want real OS threads with compile-time data-race safety
- you target multiple platforms including iOS, Android, and watchOS from one TypeScript codebase

## When to avoid
- your code depends heavily on npm packages with native addons or deep Node.js internals not yet supported
- you need full JIT dynamic features like eval or runtime code generation
- you rely on the very latest Node.js APIs beyond Perry's compatibility layer
- you prefer mature toolchains like Bun, Deno, or Tauri for production-critical workloads

## Facets
- artifact type: cli-tool
- maturity: active
- function: compiler, cli, build-tool, gui, terminal-ui, concurrency
- domain: compilers, programming-languages, developer-tools, cross-platform, mobile-development, desktop-applications
- platform: windows, wasm, cli, cross-platform, rust
- tags: typescript-compiler, llvm, swc, native-executables, aot-compilation, no-runtime, native-ui, nodejs-compatibility, harmonyos, watchos, macos, linux, ios, android

## Member repositories
- PerryTS/perry (main) score 75

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:57.311397+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:19:09.621668+00:00, confidence not recorded.
  - readme: https://github.com/PerryTS/perry (fetched 2026-08-28T04:08:57.311397+00:00, sha 3e6bb48f1eb8)
  - homepage: https://www.perryts.com (fetched 2026-08-29T09:03:04.360012+00:00, sha 9568a6c1d447)
  - site_page: https://docs.perryts.com (fetched 2026-08-29T09:03:04.369854+00:00, sha 8dbcdb19d1b3)
  - site_page: https://www.perryts.com/en/getting-started (fetched 2026-08-29T09:03:04.372163+00:00, sha 45d916efef1c)
- Data as of 2026-08-30T08:39:29.467469+00:00.
