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

Perry vs Bun

Both can produce a single executable, but the contents differ. Bun bundles the application with a copy of the Bun runtime. Perry compiles supported code to native machine code and statically links its own runtime and GC without a JavaScript engine by default.

기술 사실과 측정 주의사항은 번역 간 불일치를 막기 위해 영어를 기준으로 관리합니다.

Bun란 무엇인가?

Bun is an all-in-one JavaScript and TypeScript runtime, package manager, test runner, and bundler. Bun's official executable documentation says --compile bundles imported code and packages together with a copy of the Bun runtime.

Perry란 무엇인가?

Perry parses TypeScript and JavaScript with SWC and compiles supported code ahead of time through LLVM. Native builds do not require an external Node.js installation or JavaScript engine, but they do statically link the Perry runtime and garbage collector. Perry is pre-1.0, implements a practical language and Node.js subset, and offers an optional embedded V8 fallback for code that needs engine semantics.

나란히 비교

기능PerryBun
Execution modelLLVM ahead-of-time machine codeJavaScriptCore through the Bun runtime
Standalone executableTarget-specific native binaryApplication plus a copy of the Bun runtime
Runtime modelPerry runtime + GC statically linked; no JS engine by defaultBun runtime and JavaScriptCore embedded
Documented targets11 targets plus HarmonyOS previewOfficial --compile targets cover macOS, Linux, and Windows variants
Native UIPlatform widgets where supportedNo built-in cross-platform native-widget layer
Package compatibilityPractical subset; optional V8 fallbackBroad Bun and Node API compatibility
Benchmark positionWins, mixed results, and losses in the published suiteWins several current suite rows, including prime sieve and matrix multiply

Perry가 앞서는 점

  • +Mobile, wearable, TV, and Web/WASM targets
  • +A native-widget UI model
  • +No JavaScript engine in native output by default
  • +Small outputs are possible when few features are linked

Bun이 앞서는 점

  • +More mature runtime and tooling ecosystem
  • +Broader npm and dynamic JavaScript compatibility
  • +Integrated package manager, test runner, and bundler
  • +JIT execution can win on important workloads

Perry을 선택해야 할 때

Choose Perry when native widgets or Perry's mobile, wearable, TV, and Web/WASM targets are central, and you can validate your code against Perry's current compatibility surface.

Bun을 선택해야 할 때

Choose Bun when you need a mature all-in-one runtime, broad package compatibility, or its integrated package-manager, test, and bundling workflow.

결론

This is an architecture choice, not a universal speed ranking. Validate the exact workload, package graph, target, output size, and startup behavior you plan to ship.

출처

Perry 사용해보기

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

시작하기