Sobre o projeto

Perry é um compilador ahead-of-time para TypeScript e JavaScript, implementado em Rust. Ele usa SWC para análise sintática e LLVM para geração de código, produzindo binários de código de máquina independentes em vez de incluir um motor JavaScript. O README o posiciona contra Node.js, Bun e Electron, enfatizando ausência de runtime para instalar, binários pequenos (hello world em torno de 330 KB) e inicialização instantânea a frio. Os alvos incluem macOS, Windows, Linux, iOS, iPadOS, visionOS, tvOS, watchOS, Android, Wear OS, além de saída para web e WebAssembly. Uma API de UI semelhante a SwiftUI compila para widgets nativos de plataforma (AppKit, UIKit, Android Views, Win32, GTK4) em vez de um WebView, e o projeto menciona suporte a widgets de tela inicial. O README afirma aproximadamente 97% de taxa de aprovação no próprio conjunto de testes do Node em 53 módulos node:*, com implementações de fs, http/http2, net/tls, crypto, stream, child_process, worker_threads, fetch e globais web, além de compatibilidade com cerca de 50 pacotes npm, como Fastify, Express, mysql2, pg, ioredis, ws, bcrypt e jsonwebtoken. JavaScript puro também é suportado. Concorrência é exposta por meio de parallelMap, parallelFilter e spawn em threads reais do SO; o compilador rejeita estado mutável compartilhado, então corridas de dados falham em tempo de compilação. A biblioteca padrão cobre bancos de dados, WebSockets, contêineres, i18n, keychain, notificações, auto-atualização e um framework TUI. Números de desempenho são publicados a partir de benchmarks abertos (Apple M1 Max, medianas de execuções repetidas), cobrindo convolução de imagens, Fibonacci recursivo, pipelines JSON, alocação de objetos e gravações em arrays, com comparações a Node.js, Bun e Rust. O README observa explicitamente cargas de trabalho onde o JIT do V8 ainda vence e vincula ao harness e à metodologia para que os resultados possam ser reproduzidos. A instalação está disponível via npm (@perryts/perry), Homebrew, winget, APT, Scoop, script de instalação ou builds a partir do código-fonte. O uso típico é `perry init`, `perry run` e `perry compile src/main.ts -o myapp`, com `perry doctor` para verificação da configuração. A telemetria é opcional e pode ser desativada via configuração ou variáveis de ambiente. Projetos listados como construídos com Perry incluem Bloom Engine (um motor de jogos nativo em TypeScript), Mango (um GUI nativo para MongoDB), Hone (um editor de código com IA) e dB Meter (um medidor de nível de som). O projeto é licenciado sob MIT e desenvolvido abertamente, com comunidade no Discord e rastreador de problemas público.