- Ion es un runtime de código abierto diseñado para embeber un motor de JavaScript dentro de aplicaciones Rust
- Permite construir entornos de sistema de plugins, renderizado del lado del servidor (SSR) y ejecución de funciones serverless (FaaS)
- Ofrece un event loop basado en Tokio, soporte multihilo y una API de alto nivel fácil de usar (como napi-rs)
- Gracias a su estructura extensible, se pueden agregar fácilmente biblioteca estándar, módulos de extensión y preprocesadores
- Diferencias frente a runtimes existentes (Node.js, Deno, Bun)
- Node.js: depende de una biblioteca dinámica externa (
libnode), no permite compilación como biblioteca estática y no soporta C FFI
- Deno: aunque está basado en Rust, el acceso a la biblioteca estándar está fuertemente acoplado al CLI, lo que dificulta su reutilización
- Bun: no permite embeberlo en absoluto
- Ion.js evita las limitaciones de embedding de estos runtimes y adopta una arquitectura ligera y componible para ofrecer simplicidad en el despliegue y una API amigable para el usuario
- Puede añadir un entorno ligero y flexible de ejecución de JS a proyectos Rust, y permite invocar JS de forma segura en servidores basados en múltiples hilos o herramientas de build
2 comentarios
Con la IA, me pregunto si realmente habrá muchas ocasiones para usarlo.
También me da la impresión de que quizá sería más conveniente convertir JS a Rust para usarlo.
¿Será útil cuando quieras reutilizar librerías de JS desde Rust?
Parece que podría ser útil cuando quieras implementar una función tipo processor como en filebeat..
https://www.elastic.co/docs/reference/beats/filebeat/processor-script