2 puntos por dopeflamingo 3 시간 전 | Aún no hay comentarios. | Compartir por WhatsApp

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.

    Publicidad
  • 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.

    Publicidad
  • 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.

Aún no hay comentarios.