Perry
ko
비교 목록으로 돌아가기
TypeScript 런타임

Perry vs Deno

Deno는 V8 기반의 현대적인 JavaScript·TypeScript 런타임으로, 일급 TypeScript 지원, 권한 기반 보안 모델, 그리고 V8을 애플리케이션과 함께 단일 실행 파일로 번들링하는 `deno compile` 명령어를 제공합니다. Perry는 TypeScript를 곧바로 네이티브 머신 코드로 컴파일합니다 — 출력에 V8이 없고, 런타임 계층도 없으며, 작은 네이티브 바이너리만 남습니다.

Deno란 무엇인가?

Deno는 Rust로 작성되었으며 V8과 Tokio를 기반으로 하는 TypeScript·JavaScript 런타임입니다. `.ts` 소스를 직접 실행하고, 포매터·린터·테스트 러너·언어 서버 같은 도구를 내장하고 있으며, 네트워크·파일·환경 변수 접근에 명시적인 권한 부여를 요구하는 권한 모델을 사용합니다. `deno compile`은 V8을 포함한 Deno 런타임을 사용자의 코드와 함께 묶어 자체 실행 파일을 생성합니다. Deno는 x64 및 arm64 환경의 Linux, macOS, Windows를 타겟으로 합니다.

Perry란 무엇인가?

Perry는 Rust로 작성된 네이티브 TypeScript 컴파일러입니다. LLVM을 통해 TypeScript를 곧바로 네이티브 머신 코드로 컴파일합니다 — V8도, JIT도, 런타임도 없습니다. 출력은 단일 바이너리로, 네이티브 코드는 보통 수백 KB에서 수 MB이며, JS 엔진이 필요한 npm 패키지를 위해 임베디드 V8 런타임을 선택적으로 포함시키면 더 커질 수 있습니다.

나란히 비교

기능PerryDeno
출력 형태네이티브 머신 코드 (LLVM)사용자 코드 + Deno 런타임 (V8) 번들링
바이너리 내 JavaScript 엔진기본값 없음, 선택적 V8V8, 항상 포함
Hello-world 바이너리 크기약 330 KB약 80–100 MB (V8 포함)
JIT없음 (AOT 컴파일)있음 (V8 TurboFan)
모바일 타겟iOS, iPadOS, Android지원하지 않음
워치·TV·WASM·웹watchOS, tvOS, Wear OS, WASM, Web/JS지원하지 않음
네이티브 UI네이티브 플랫폼 API 기반 25개 이상의 위젯없음
권한 모델표준 OS 프로세스 권한런타임 단위의 세분화된 권한 (--allow-net, --allow-read 등)
안정성1.0 이전안정 (1.x / 2.x)
구현 언어RustRust (V8 위에서 동작)

Perry가 앞서는 점

  • +현저히 작은 바이너리. Perry의 hello world는 약 330 KB입니다. `deno compile` 결과물은 V8을 포함해 80–100 MB 수준입니다.
  • +바이너리 안에 JavaScript 엔진이 없습니다. TypeScript는 런타임에 V8이 해석하는 것이 아니라 네이티브 머신 코드로 컴파일됩니다.
  • +모바일, 워치, TV, WASM, 웹 타겟 지원. Deno는 서버·데스크톱 전용입니다.
  • +AppKit, UIKit, GTK4, Win32, JNI에 매핑되는 네이티브 UI 위젯 — Deno에는 대응 기능이 없습니다.
  • +더 빠른 콜드 스타트. AOT 컴파일된 네이티브 바이너리는 V8 시작 비용을 지불하지 않습니다.
  • +M1 Max에서 동일 조건으로 측정한 연산 마이크로벤치마크에서 우위 — Perry의 `reassoc contract` fast-math 기본값 덕분에 LLVM이 자동 벡터화하고 자명하게 폴딩 가능한 누산기를 접을 수 있습니다 (예: loop_overhead 12 ms, math_intensive 14 ms; perry/benchmarks 참고).

Deno이 앞서는 점

  • +긴 운영 실적과 활발한 2.x 라인을 가진 성숙하고 안정적인 런타임.
  • +세분화된 권한 모델. Deno는 명시적인 `--allow-net`, `--allow-read` 등을 요구합니다 — 샌드박스 스크립트와 신뢰할 수 없는 코드에 유용합니다.
  • +내장 도구: 포매터, 린터, 테스트 러너, 문서 생성기, LSP 등이 모두 런타임에 포함되어 있습니다.
  • +런타임 차원의 완전한 V8 생태계 — V8에서 돌아가는 모든 것이 Deno에서 동작하며, 장기 실행 핫패스에서의 JIT 최적화도 함께 누립니다.
  • +개발 중 별도의 컴파일러 단계 없이 일급 TypeScript 지원과 완전 관리되는 타입 검사 파이프라인.
  • +런타임에 네이티브로 구현된 표준 웹 플랫폼 API (fetch, Web Streams, Web Crypto).

Perry을 선택해야 할 때

작고 빠르게 시작하는 네이티브 바이너리가 필요할 때, 모바일이나 비서버 타겟으로 배포할 때, 네이티브 UI가 필요할 때, 또는 JS 엔진이 들어가지 않은 바이너리로 TypeScript를 컴파일하고 싶을 때 Perry를 선택하세요.

Deno을 선택해야 할 때

안정적이고 도구가 모두 갖춰진 TypeScript 런타임을 원할 때, 권한 샌드박스를 중요하게 여길 때, 서버 사이드나 스크립팅 워크로드를 만들 때, 또는 런타임 단위의 완전한 V8 생태계 호환성이 필요할 때 Deno를 선택하세요.

결론

둘 다 TypeScript 프로그램을 단일 바이너리로 배포할 수 있게 해주지만, 그 바이너리 안에 들어가는 것이 다릅니다. Deno는 V8 + 잘 정돈된 런타임 + 권한 샌드박스를 제공합니다. Perry는 엔진이 없는 네이티브 머신 코드를 제공합니다. 생태계와 권한 모델이 중요한 서버 사이드와 스크립팅 작업에는 Deno가 더 좋은 선택입니다. 작고 빠르게 시작하는 바이너리, 모바일 타겟, 네이티브 UI가 필요하다면 Perry가 더 나은 선택입니다.

Perry 사용해보기

오늘 바로 TypeScript를 네이티브로 컴파일하세요.

시작하기