Compilar TypeScript directamente a código máquina LLVM: "Perry", un compilador nativo
(github.com/PerryTS)El paradigma tradicional de desarrollo con TypeScript ha dado por hecho transpilar código TS, una abstracción de alto nivel, a JavaScript, y luego ejecutarlo sobre motores de runtime JIT pesados como V8 o JavaScriptCore (Node.js, Bun, Deno, etc.).
Perry, que apareció recientemente en el ecosistema open source, es un compilador Native-First basado en Rust que busca eliminar por completo ese modelo tradicional de runtime y compilar código TypeScript directamente a binarios nativos standalone.
💡 Arquitectura y características clave
-
No Runtime (cero runtime): sin capas intermedias pesadas como el motor V8, Electron o la JVM, analiza código TS con SWC y lo construye directamente a código máquina de la plataforma objetivo mediante la infraestructura de LLVM.
-
Compilación multiplataforma desde una sola base de código: genera binarios para macOS, iOS, Android, Linux y Windows a partir de una única base de código TypeScript.
-
True TypeScript Support: en lugar de ser un "lenguaje aparte similar a TS" como AssemblyScript, apunta a soportar de forma completa el ecosistema de TypeScript basado en Strict Mode.
-
Compatibilidad con frameworks de UI ultraligeros: presume binarios de apenas unos pocos MB y un cold start sub-second cercano a 0 ms. Además de integrarse con GUI nativas de plataforma como SwiftUI, GTK4 y WinUI, también permite escribir JSX mediante su propio renderizador de React.
🛠️ Estado de desarrollo y limitaciones (reflejando comentarios de Hacker News)
Como es un proyecto que ha generado mucho interés recientemente en HN y otros sitios, también se están discutiendo con claridad los retos para llevarlo a nivel de producción.
-
Restricciones de las características dinámicas de JS: estilos dinámicos de JavaScript como inyectar campos o métodos arbitrarios en objetos en runtime o modificar prototipos no están soportados por la naturaleza de la compilación estática, y el proyecto opera sobre un subconjunto estricto y determinista de TS.
-
Emulación de módulos integrados de Node.js: actualmente emula la biblioteca estándar HTTP de Node.js apoyándose en el ecosistema Rust, incluyendo hyper, rustls y tokio. Ya ha logrado compilar algunos módulos como Fastify y avanza con rapidez, pero la compatibilidad al 100% con librerías complejas del ecosistema, como Express, donde se mezclan imports dinámicos, sigue siendo un desafío en etapa alfa.
# El uso es extremadamente simple
$ perry compile src/main.ts -o myapp
$ ./myapp # Ejecuta un binario nativo puro sin dependencias
Como un intento por expandir TypeScript, hasta ahora encerrado en el ecosistema web, hacia la programación de sistemas y las apps nativas ultraligeras, es un proyecto que vale la pena seguir para quienes tienen interés en arquitecturas de sistemas de alto rendimiento o en pipelines de compiladores con LLVM.
GitHub: https://github.com/PerryTS/perry
Aún no hay comentarios.