Sobre el proyecto
Perry es un compilador ahead-of-time para TypeScript y JavaScript, implementado en Rust. Usa SWC para el análisis y LLVM para la generación de código, produciendo binarios de código máquina independientes en lugar de incluir un motor de JavaScript. El README lo posiciona frente a Node.js, Bun y Electron, enfatizando que no requiere instalación de runtime, binarios pequeños (hola mundo alrededor de 330 KB) y arranques en frío instantáneos.
Los objetivos incluyen macOS, Windows, Linux, iOS, iPadOS, visionOS, tvOS, watchOS, Android, Wear OS, además de salida web y WebAssembly. Una API de UI similar a SwiftUI compila a widgets de plataforma nativa (AppKit, UIKit, Android Views, Win32, GTK4) en lugar de un WebView, y el proyecto menciona soporte para widgets de pantalla de inicio.
El README afirma aproximadamente un 97% de tasa de aprobación en la propia suite de pruebas de Node en 53 módulos node:*, con implementaciones de fs, http/http2, net/tls, crypto, stream, child_process, worker_threads, fetch y globales web, además de compatibilidad con alrededor de 50 paquetes npm como Fastify, Express, mysql2, pg, ioredis, ws, bcrypt y jsonwebtoken. También se admite JavaScript plano.
La concurrencia se expone mediante parallelMap, parallelFilter y spawn en hilos reales del sistema operativo; el compilador rechaza el estado mutable compartido, por lo que las carreras de datos fallan en tiempo de compilación. La biblioteca estándar cubre bases de datos, WebSockets, contenedores, i18n, llavero, notificaciones, autoactualización y un framework TUI.
Las cifras de rendimiento se publican desde marcos de referencia abiertos (Apple M1 Max, medianas de ejecuciones repetidas), cubriendo convolución de imágenes, Fibonacci recursivo, pipelines JSON, asignación de objetos y escrituras en arrays, con comparaciones con Node.js, Bun y Rust. El README señala explícitamente cargas de trabajo donde el JIT de V8 aún gana y enlaza al marco y la metodología para que los resultados puedan reproducirse.
La instalación está disponible vía npm (@perryts/perry), Homebrew, winget, APT, Scoop, un script de instalación o compilación desde fuente. El uso típico es `perry init`, `perry run` y `perry compile src/main.ts -o myapp`, con `perry doctor` para verificar la configuración. La telemetría es opcional y puede desactivarse mediante configuración o variables de entorno.
Los proyectos listados como construidos con Perry incluyen Bloom Engine (un motor de juegos TypeScript nativo), Mango (una GUI nativa para MongoDB), Hone (un editor de código impulsado por IA) y dB Meter (un medidor de nivel de sonido). El proyecto tiene licencia MIT y se desarrolla abiertamente con una comunidad en Discord y un rastreador de problemas público.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.