Blog>

Fran Acedo
30 May 2024

Abran paso a Bun

Tiempo de lectura 4 minutos
  • bun

Sumario Estamos ante el verdadero enemigo de Node. Bun nace para ser un entorno de ejecución de Javascript y un set de herramientas para el desarrollo.

Contexto

Muy probablemente, si estás leyendo esta entrada, es porque no formaste parte del hype colectivo que se formó alrededor de Bun. Much@s (ahora algo más de 40 mil personas) estábamos pendientes de los avances que hacía el equipo gracias a su cuenta en X @bunjavascript. Debo decir que personalmente me retrasé porque esperaba que llegara la primera versión oficial compatible con Windows. Se hizo amena la espera ya que iban compartiendo semanalmente los progresos que hacían en la ejecución de tests para su versión para Windows. Hasta que por fin llegó la anunciada fecha: el 1 de abril… aunque hasta que no se publicó el lanzamiento de la 1.1 todo apuntaba a una posible trolleada del equipo por el April’s fools.

Bueno, vale, ¿pero de qué estamos hablando? Yo me aventuro a decir que estamos ante el verdadero enemigo de Node. Bun ha nacido para ser un entorno de ejecución de Javascript y un set de herramientas para el desarrollo. Pasemos a enumerar algunas de sus características:

Entrando en materia:

Pequeño inciso antes de seguir: aquí tenéis su repositorio en GitHub, donde podréis comprobar que está escrito mayoritariamente en Zig https://github.com/oven-sh/bun.

Citando al equipo “está diseñado para ser un reemplazo directo de Node.js”. En lugar del motor V8 de Google, se han apoyado en JavaScriptCore de Apple, aparentemente este cambio les ha hecho ganar en rendimiento. Han implementado por debajo varias APIs de Node (todavía están trabajando en ello) como: fs, process, path, etc. y APIs del estándar Web: fetch, WebSocket, FormData, etc. Aquí se puede seguir su progreso con las implementaciones de las APIs de Node https://bun.sh/docs/runtime/nodejs-apis.

Probablemente uno de los puntos más fuertes a favor de Bun es que es totalmente compatible con Typescript, es decir, transpila internamente y ejecuta el código. Citando la documentación “[…] el coste adicional de ejecutar directamente ficheros .ts/.tsx es insignificante”. Claramente, si necesitamos ejecutar el código en navegador o desde Node, se deberá transpilar a Javascript previamente. Para más inri, como se deja entrever en la cita anterior, es totalmente compatible de forma nativa con JSX, preconfigurado para poder trabajar con React.

Es totalmente compatible con los gestores de dependencias más populares: npm, pnpm y yarn. Su equipo se da golpes en el pecho, cómo para no, porque son capaces de mejorar de forma sorprendente los tiempos de instalación de dependencias. En lugar de descargar las dependencias cada vez, se almacenan internamente en caché para hacer uso de ellas cuando sea preciso y mantiene las instalaciones en el directorio node_modules.

Instalación de dependencias desde caché para una aplicación de Remix

Y si todavía no he conseguido que os subáis al barco de Bun… también permite la ejecución de tests. Es totalmente compatible con Jest, permite lanzar los tests al detectar cambios en los ficheros y es escandalosamente rápido en comparación con sus competidores.

Ejecución de los tests de Zod

Conclusión

Cuando Deno llegó al mercado, sonaron las trompetas del apocalipsis, pero finalmente no ha tenido tanta relevancia como se esperaba. Su principal problema fue que no era compatible con lo que se pretendía dejar atrás, Node. No obstante, Bun ya está reemplazando a Node en cientos de proyectos, y lo hará en más a medida que el equipo migre las APIs que faltan. Bun incluye una barbaridad de herramientas y por cuestiones del formato no puedo enumerar todas, por lo que os invito a probarlo y a seguir indagando por vuestra cuenta ya que tenemos Bun para rato.

Autor

Fran Acedo
Fran Acedo

Desarrollador en dev&del

Tiró de un hilo suelto y descosió el sofá

¿Estás interesado?

Déjanos tus datos y contactaremos contigo lo antes posible