JavaScript: ¿Qué es Bun?

En el artículo de hoy no hablaremos de bollos o de buns comestibles, si no de JavaScript, y otro tipo de bun.

¿Qué es Bun?

Bun es un entorno en tiempo de ejecución de JavaScript, como Node o Deno, todo en uno. Bun tiene un paquete nativo, un transpilador, un ejecutor de tareas  y un cliente npm integrado.

Bun.js es bastante joven aún, pues se creó en abril de 2021. La última versión se lanzó hace algunos días, el 6 de agosto de 2022. Por tanto no está lista para producción.

Características principales de Bun

Las siguientes son algunas de las características más importantes de esta nueva herramienta:

  • JavaScriptCore. Un motor de JavaScript incorporado para WebKit. Más rápido que el V8.
  • Zig. Un lenguaje de programación de propósito general y una cadena de herramientas para mantener un software robusto, óptimo y reutilizable.
  • Esbuild. Un paquete y minificador de JavaScript/CSS extremadamente rápido.
  • EMS internamente y compatible con CommonJS.
  • APIs web integradas (fetch, WebSocket, ReadableStream, etc…)  

¿Cómo funciona Bun?

Como hemos visto anteriormente, Bun.js usa el motor JavaScriptCore que tiende a funcionar un poco más rápido que las otras opciones como V8. Está escrito, la mayor parte desde cero, en un lenguaje de programación de bajo nivel con gestión de memoria manual.

En Bun, cada archivo se transpila. Esto significa que no hay problema en utilizar TypeScript o JSX. Bun quiere posicionarse como una herramienta completa como empaquetador, transpilador y gestor de paquetes.

Sistema rápido

Una de las características de Bun es su velocidad. Perfilar, comparar y optimizar quiere mucho tiempo dedicado. Bun quiere que sea más sencillo escribir software rápido gracias al control de bajo nivel sobre la memoria y la falta de flujo de control oculto.

Conclusión

Como has podido ver, Bun es un entorno en tiempo de ejecución de JavaScript con mucho potencial y que vale la pena echar un vistazo, instalar, hacer pruebas, jugar, etc. Sin embargo, no recomiendo el uso en entornos reales hasta que la herramienta no adquiera la madurez necesaria.

¿Has utilizado Bun.js en algún proyecto? ¡Coméntalo abajo!

Fuente: