Perry
ko
v0.5.306 — 세대별 GC + 지연 JSON 테이프 기본값, 대부분 벤치마크에서 Node·Bun보다 빠름

하나의 코드베이스. 모든 플랫폼.
네이티브 성능.

Perry는 TypeScript를 macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly, 그리고 웹에서 네이티브 GUI 및 CLI 앱으로 컴파일합니다. 런타임 없음. Electron 없음. 네이티브 바이너리만.

terminal
$ perry compile main.ts
main.ts 컴파일 중...
✓ 컴파일된 실행 파일: main (2.3 MB)

$ ./main
Hello, World!
10
타겟
25+
네이티브 UI 위젯
<50 ms
시작 시간
App Store
준비 완료

Perry인가?

TypeScript를 네이티브 애플리케이션으로 컴파일하는 데 필요한 모든 것

noRuntime
fastCompilation
smallBinaries
deterministicBuilds
stdLib
v8Runtime
widgets
plugins
threading
i18n

사람들이 만드는

TypeScript로 컴파일된 진짜 네이티브 앱. Electron 없이, 웹뷰 없이 — 모든 플랫폼에서 네이티브 UI.

Mango

Mango

네이티브 MongoDB GUI — TypeScript로 완전히 구축

macOSLinuxWindows
Mango — document editor
Mango — query explorer
Hone

Hone

네이티브 AI 코드 에디터 — TypeScript에서 네이티브 바이너리로

macOSiOSWeb
Hone — native AI code editor

모든 플랫폼에서 네이티브

Perry는 TypeScript를 네이티브 UI 프레임워크, WebAssembly, JavaScript로 컴파일합니다 — 웹 뷰가 아닌, Electron이 아닌. 모든 플랫폼에서 진짜 네이티브 위젯을, 그리고 웹까지.

🍎
macOS
안정
📱
iOS
안정
📲
iPadOS
안정
watchOS
안정
📺
tvOS
안정
🤖
Android
안정
🐧
Linux
안정
🪟
Windows
안정
🌐
Wasm
안정
💻
Web
안정

코드에서 App Store까지

Perry는 앱을 컴파일할 뿐만 아니라 사용자의 손에 전달합니다.

perry compile컴파일 및 서명
perry publish패키징 및 제출
스토어 및 다운로드App Store, Play Store, 직접 배포
perry verify모든 플랫폼 테스트

빌드 및 서명

하나의 명령으로 크로스 플랫폼 빌드. macOS, iOS, Android, Windows의 코드 서명을 자동으로 처리합니다. Xcode 프로비저닝 프로파일이나 Android 키스토어와 씨름할 필요가 없습니다.

배포

App Store, Play Store에 푸시하거나 직접 다운로드로 배포. Perry Publish가 패키징, 공증, 제출을 처리합니다.

검증

Geisterhand 기반. 6개 모든 플랫폼에서 자동화된 UI 테스트. 사용자가 알려주기 전에 앱이 모든 곳에서 작동하는지 확인하세요.

오픈소스 프로젝트는 무료. 팀 요금제 → /publish

프레임워크 비교

모든 조건을 충족하는 유일한 프레임워크

TypeScript를 네이티브 코드로 컴파일. 진짜 플랫폼 위젯. 제로 런타임 오버헤드.

프레임워크언어네이티브 코드네이티브 위젯런타임 오버헤드
PerryTypeScript✓ 네이티브 컴파일✓ 진짜 플랫폼 위젯✓ 제로 런타임 오버헤드
React NativeJS / TSJS bridge부분적JS engine + bridge
FlutterDartAOT공유 UI 없음Dart VM
ElectronJS / TSChromium runtimeHTML mimicsChromium + Node

TypeScript를 작성하고, 네이티브로 배포

익숙한 TypeScript 문법과 API를 사용하세요. Perry가 나머지를 처리합니다.

hello.ts
// hello.ts
const greeting = "Hello, World!";
console.log(greeting);

// Compiles to ~2MB native executable
// No runtime needed!
$ perry build hello.ts
네이티브 바이너리

성능 비교

네이티브 컴파일이 비교할 수 없는 효율성을 제공합니다

바이너리 크기
1.8 MB
Bun 96 MB · Node 110 MB
시작 시간
<50 ms
Bun ~200 ms · Node ~800 ms
런타임 종속성
없음
Bun + Node need runtimes
메모리 오버헤드
최소
Bun ~80 MB · Node ~120 MB

시작하기

Perry를 설치하고 TypeScript를 네이티브 실행 파일로 컴파일하세요

Homebrew (macOS)

brew install perry-ts/perry
Homebrew가 필요합니다. macOS arm64 및 x86_64 지원.

APT (Debian/Ubuntu)

apt-get install perry
x86_64 및 arm64 Linux 지원.

Windows (winget)

scoop install perry-ts/perry
Windows Package Manager가 필요합니다. Windows x86_64 및 arm64 지원.

기능 지원

포괄적인 TypeScript 및 Node.js API 커버리지

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-OrderFunctions 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
완전 지원
부분적

30개 이상의 네이티브 npm 패키지

인기 npm 패키지를 네이티브 Rust로 재구현. npm install 불필요, node_modules 불필요, 빠른 네이티브 코드만.

데이터베이스

mysql2pgmongodbbetter-sqlite3ioredis

보안

bcryptargon2jsonwebtokencrypto

HTTP

httphttpsaxiosnode-fetchwsnodemailer

데이터 처리

cheeriosharpzliblodash

날짜 및 시간

dayjsmomentdate-fnsnode-cron

유틸리티

uuidnanoidslugifyvalidatordotenvrate-limiter-flexible
가져와서 사용하기만 하면 됩니다 — Perry가 자동으로 네이티브 구현을 사용합니다

작동 원리

TypeScript 소스에서 네이티브 실행 파일까지 몇 초 만에

TypeScript.ts 파일
SWC
파서빠른 파싱
HIR
변환Monomorphization
LLVM
코드 생성머신 코드
실행 파일2-5 MB 바이너리

컴파일러 내부 작동 방식이 궁금하신가요? 컴파일러 내부 구조

블로그

16 블로그