Voltar às comparações
Runtime TypeScript

Perry vs Deno

Deno é um runtime moderno de JavaScript e TypeScript construído sobre V8, com suporte a TypeScript de primeira classe, modelo de segurança baseado em permissões e um comando `deno compile` que produz um único executável empacotando o V8 com sua aplicação. Perry compila TypeScript diretamente para código de máquina nativo — sem V8 na saída, sem camada de runtime, apenas um pequeno binário nativo.

O que é Deno?

Deno é um runtime de TypeScript e JavaScript construído em Rust sobre V8 e Tokio. Executa código-fonte `.ts` diretamente, tem ferramentas integradas (formatador, linter, test runner, language server) e usa um modelo de permissões que requer concessões explícitas para acesso a rede, arquivos e ambiente. `deno compile` produz um executável autocontido empacotando o runtime do Deno (que inclui V8) junto com seu código. Deno tem como alvo Linux, macOS e Windows em x64 e arm64.

O que é Perry?

Perry é um compilador nativo de TypeScript escrito em Rust. Compila TypeScript diretamente para código de máquina nativo via LLVM — sem V8, sem JIT, sem runtime. A saída é um único binário, tipicamente de algumas centenas de KB a alguns MB para código nativo, opcionalmente maior se você optar pelo runtime V8 embutido para pacotes npm que precisam de um motor JS.

Lado a lado

FuncionalidadePerryDeno
SaídaCódigo de máquina nativo (LLVM)Seu código + runtime do Deno (V8) empacotados
Motor JavaScript no binárioNenhum por padrão; V8 opcionalV8, sempre
Tamanho de binário hello-world~330 KB~80–100 MB (inclui V8)
JITNão (compilado AOT)Sim (TurboFan do V8)
Alvos mobileiOS, iPadOS, AndroidNão
Relógio / TV / WASM / WebwatchOS, tvOS, Wear OS, WASM, Web/JSNão
UI nativa25+ widgets via APIs nativas das plataformasNão
Modelo de permissõesPermissões padrão de processo do SOPermissões granulares de runtime (--allow-net, --allow-read, etc.)
EstabilidadePré-1.0Estável (1.x / 2.x)
Construído emRustRust (sobre V8)

Onde o Perry ganha

  • +Binários drasticamente menores. Um hello world em Perry tem ~330 KB. As saídas do `deno compile` incluem V8 e ficam na faixa de 80–100 MB.
  • +Sem motor JavaScript no binário. Seu TypeScript é compilado para código de máquina nativo, não interpretado pelo V8 em runtime.
  • +Alvos mobile, relógio, TV, WASM e Web. Deno é apenas servidor/desktop.
  • +Widgets de UI nativos que mapeiam para AppKit, UIKit, GTK4, Win32 e JNI — sem equivalente no Deno.
  • +Cold start mais rápido. Binários nativos compilados AOT não pagam o custo de inicialização do V8.
  • +Liderança em microbenchmarks de computação em condições equivalentes no M1 Max, onde o `reassoc contract` fast-math padrão do Perry permite que o LLVM autovetorize e dobre acumuladores trivialmente redutíveis (por exemplo, loop_overhead 12 ms, math_intensive 14 ms; veja perry/benchmarks).

Onde o Deno ganha

  • +Runtime maduro e estável com longo histórico e linha 2.x ativa.
  • +Modelo de permissões granular. Deno requer `--allow-net`, `--allow-read` etc. explícitos — útil para scripts em sandbox e código não confiável.
  • +Ferramentas integradas: formatador, linter, test runner, gerador de docs, LSP, tudo no runtime.
  • +Ecossistema completo do V8 em runtime — qualquer coisa que roda no V8 roda no Deno, incluindo otimizações JIT em caminhos quentes de longa duração.
  • +TypeScript de primeira classe sem etapa separada de compilador no desenvolvimento, com pipeline de type-checking totalmente gerenciado.
  • +APIs padronizadas da plataforma web (fetch, Web Streams, Web Crypto) implementadas nativamente no runtime.

Quando escolher Perry

Escolha o Perry se você quer um binário nativo pequeno e de inicialização rápida, está entregando para mobile ou outros alvos não-servidor, quer UI nativa, ou quer compilar TypeScript para um binário que não contém um motor JS.

Quando escolher Deno

Escolha o Deno se você quer um runtime TypeScript estável e com baterias incluídas, valoriza o sandbox de permissões, está construindo cargas no lado do servidor ou de scripting, ou precisa de compatibilidade total com o ecossistema V8 em runtime.

Veredito

Ambos permitem entregar um programa TypeScript como um único binário; a diferença está no que há dentro desse binário. Deno entrega V8 + runtime curado + sandbox de permissões. Perry entrega código de máquina nativo sem motor. Deno é a melhor escolha para trabalho no servidor e scripting onde o ecossistema e o modelo de permissões importam. Perry é a melhor escolha quando você precisa de um binário pequeno e de inicialização rápida, alvos mobile ou UI nativa.

Experimente o Perry

Compile seu TypeScript para nativo hoje.

Começar