프로젝트 소개
Perry는 TypeScript와 JavaScript를 위한 AOT(ahead-of-time) 컴파일러로, Rust로 구현되었습니다. 파싱에는 SWC를, 코드 생성에는 LLVM을 사용하여 JavaScript 엔진을 포함하지 않고 독립 실행형 머신 코드 바이너리를 생성합니다. README에서는 Node.js, Bun, Electron과 비교하며 런타임 설치가 필요 없고, 바이너리가 작으며(hello world 약 330KB), 콜드 스타트가 즉각적임을 강조합니다.
지원 대상은 macOS, Windows, Linux, iOS, iPadOS, visionOS, tvOS, watchOS, Android, Wear OS와 웹 및 WebAssembly 출력을 포함합니다. SwiftUI와 유사한 UI API는 WebView가 아닌 네이티브 플랫폼 위젯(AppKit, UIKit, Android Views, Win32, GTK4)으로 컴파일되며, 프로젝트는 홈 화면 위젯 지원도 언급합니다.
README는 53개의 node:* 모듈에서 Node 자체 테스트 스위트의 약 97% 통과율을 주장하며, fs, http/http2, net/tls, crypto, stream, child_process, worker_threads, fetch 및 웹 전역 객체의 구현을 포함하고, Fastify, Express, mysql2, pg, ioredis, ws, bcrypt, jsonwebtoken 등 약 50개의 npm 패키지와의 호환성을 제공합니다. 순수 JavaScript도 지원됩니다.
동시성은 실제 OS 스레드에서 parallelMap, parallelFilter 및 spawn을 통해 노출되며, 컴파일러는 공유 가변 상태를 거부하여 데이터 경쟁이 컴파일 타임에 실패하도록 합니다. 표준 라이브러리는 데이터베이스, WebSockets, 컨테이너, i18n, 키체인, 알림, 자동 업데이트 및 TUI 프레임워크를 포함합니다.
성능 수치는 공개 벤치마크 하네스(Apple M1 Max, 반복 실행의 중앙값)에서 게시되며, 이미지 컨볼루션, 재귀 피보나치, JSON 파이프라인, 객체 할당 및 배열 쓰기를 다루고 Node.js, Bun, Rust와 비교합니다. README는 V8의 JIT가 여전히 우세한 워크로드를 명시적으로 언급하고 결과를 재현할 수 있도록 하네스와 방법론에 링크합니다.
설치는 npm(@perryts/perry), Homebrew, winget, APT, Scoop, 설치 스크립트 또는 소스 빌드를 통해 가능합니다. 일반적인 사용법은 `perry init`, `perry run`, `perry compile src/main.ts -o myapp`이며, 설정 확인은 `perry doctor`를 사용합니다. 텔레메트리는 옵트인 방식이며 구성 또는 환경 변수를 통해 비활성화할 수 있습니다.
Perry로 구축된 프로젝트로는 Bloom Engine(네이티브 TypeScript 게임 엔진), Mango(네이티브 MongoDB GUI), Hone(AI 기반 코드 편집기), dB Meter(소음 측정기)가 있습니다. 이 프로젝트는 MIT 라이선스로 오픈 소스로 개발되며 Discord 커뮤니티와 공개 이슈 트래커를 운영합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.