Perry
pt
v0.5.306 — GC geracional + tape JSON preguiçosa por padrão, mais rápido que Node e Bun na maioria dos benchmarks

Um único código. Todas as plataformas.
Desempenho nativo.

Perry compila TypeScript para aplicações GUI e CLI nativas em macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly e Web. Sem runtime. Sem Electron. Apenas binários nativos.

terminal
$ perry compile main.ts
Compilando main.ts...
✓ Executável compilado: main (2,3 MB)

$ ./main
Hello, World!
10
Alvos
25+
Widgets UI nativos
<50 ms
Tempo de inicialização
App Store
Pronto

Por que Perry?

Tudo o que você precisa para compilar TypeScript em aplicações nativas

noRuntime
fastCompilation
smallBinaries
deterministicBuilds
stdLib
v8Runtime
widgets
plugins
threading
i18n

Veja o que as pessoas constroem

Apps nativas reais, compiladas a partir de TypeScript. Sem Electron, sem web views — apenas UI nativa em cada plataforma.

Mango

Mango

GUI MongoDB nativa — construída inteiramente em TypeScript

macOSLinuxWindows
Mango — document editor
Mango — query explorer
Hone

Hone

Editor de código nativo com IA — TypeScript para binário nativo

macOSiOSWeb
Hone — native AI code editor

Nativo em todas as plataformas

Perry compila seu TypeScript para frameworks UI nativos, WebAssembly e JavaScript — sem web views, sem Electron. Widgets nativos reais em cada plataforma, mais a web.

🍎
macOS
Estável
📱
iOS
Estável
📲
iPadOS
Estável
watchOS
Estável
📺
tvOS
Estável
🤖
Android
Estável
🐧
Linux
Estável
🪟
Windows
Estável
🌐
Wasm
Estável
💻
Web
Estável

Do código à App Store

Perry não apenas compila sua app — coloca-a nas mãos dos seus usuários.

perry compileCompilar e assinar
perry publishEmpacotar e enviar
Lojas e downloadsApp Store, Play Store, direto
perry verifyTestar em cada plataforma

Compilar e assinar

Builds multiplataforma com um único comando. Assinatura de código para macOS, iOS, Android e Windows feita por você. Sem lutar com perfis de provisionamento do Xcode ou keystores do Android.

Distribuir

Publique na App Store, Play Store ou envie downloads diretos. Perry Publish cuida do empacotamento, notarização e envio.

Verificar

Powered by Geisterhand. Testes de UI automatizados em todas as 6 plataformas. Saiba que sua app funciona em todos os lugares antes que seus usuários digam o contrário.

Grátis para projetos de código aberto. Planos para equipes → /publish

Comparação de frameworks

O único framework que marca todas as caixas

TypeScript compilado para código nativo. Widgets reais da plataforma. Zero overhead de runtime.

FrameworkLinguagemCódigo nativoWidgets nativosOverhead de runtime
PerryTypeScript✓ Compilado nativo✓ Widgets reais da plataforma✓ Zero overhead de runtime
React NativeJS / TSJS bridgeParcialJS engine + bridge
FlutterDartAOTSem UI compartilhadaDart VM
ElectronJS / TSChromium runtimeHTML mimicsChromium + Node

Escreva TypeScript, entregue nativo

Use a sintaxe e APIs familiares do TypeScript. Perry cuida do resto.

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

// Compiles to ~2MB native executable
// No runtime needed!
$ perry build hello.ts
Binário nativo

Comparação de desempenho

A compilação nativa oferece eficiência incomparável

Tamanho do binário
1.8 MB
Bun 96 MB · Node 110 MB
Tempo de inicialização
<50 ms
Bun ~200 ms · Node ~800 ms
Dependências de runtime
Nenhuma
Bun + Node need runtimes
Overhead de memória
Mínimo
Bun ~80 MB · Node ~120 MB

Começar

Instale Perry e comece a compilar TypeScript para executáveis nativos

Homebrew (macOS)

brew install perry-ts/perry
Requer Homebrew. Suporta macOS arm64 e x86_64.

APT (Debian/Ubuntu)

apt-get install perry
Suporta Linux x86_64 e arm64.

Windows (winget)

scoop install perry-ts/perry
Requer o Windows Package Manager. Suporta Windows x86_64 e arm64.

Suporte de funcionalidades

Cobertura abrangente de APIs TypeScript e Node.js

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
Suporte completo
Parcial

Mais de 30 pacotes npm nativos

Pacotes npm populares reimplementados em Rust nativo. Sem npm install, sem node_modules, apenas código nativo rápido.

Banco de dados

mysql2pgmongodbbetter-sqlite3ioredis

Segurança

bcryptargon2jsonwebtokencrypto

HTTP

httphttpsaxiosnode-fetchwsnodemailer

Processamento de dados

cheeriosharpzliblodash

Data e hora

dayjsmomentdate-fnsnode-cron

Utilitários

uuidnanoidslugifyvalidatordotenvrate-limiter-flexible
Basta importar e usar — Perry utiliza automaticamente a implementação nativa

Como funciona

Do código-fonte TypeScript ao executável nativo em segundos

TypeScriptArquivos .ts
SWC
ParserAnálise rápida
HIR
TransformaçãoMonomorphization
LLVM
CodegenCódigo de máquina
ExecutávelBinário de 2-5 MB

Quer saber como o compilador funciona por dentro? Internos do compilador