Skip to content
ai news

Bun 1.4: La actualización que elimina tus dependencias

La controvertida reescritura en Rust de Bun ya está aquí, y no se trata solo de velocidad. Una nueva biblioteca estándar integrada busca eliminar la sobrecarga de dependencias y asegurar tu cadena de suministro, ¿pero acaso va demasiado lejos?

Jonah Park
Bun 1.4: La actualización que elimina tus dependencias

La biblioteca estándar de JavaScript que nunca tuvimos

El ecosistema de JavaScript ha lidiado durante mucho tiempo con la ausencia de una biblioteca estándar integral. Este vacío obligó a los desarrolladores a integrar numerosos micro-paquetes, contribuyendo a una sobrecarga significativa de dependencias en los proyectos y aumentando la exposición a vulnerabilidades en la cadena de suministro. Esta dependencia de soluciones fragmentadas de terceros se convirtió en un desafío arquitectónico persistente.

Bun 1.4, presentado como The Rust Rewrite, confronta directamente este problema. El runtime ahora incluye utilidades esenciales de alto rendimiento, diseñadas en Rust, para proporcionar funcionalidades principales que antes requerían paquetes externos. Esto elimina la necesidad de más de 15 dependencias comunes en varios tipos de proyectos.

Ejemplos específicos de reemplazo de dependencias incluyen:

  • Bun.WebView reemplazando a Playwright y Puppeteer para el control de navegadores headless.
  • Bun.Image manejando la manipulación de imágenes, eliminando la necesidad de bibliotecas como Sharp.
  • Bun.Markdown integrando un análisis robusto de markdown.
  • Bun.Terminal ofreciendo un pseudo-terminal integrado, eliminando la dependencia de node-pty.

Este enfoque integrado señala un cambio filosófico importante para el ecosistema de JavaScript. Se aleja de una cultura de micro-paquetes fragmentados hacia un runtime más robusto y 'con todo incluido'. Bun 1.4 tiene como objetivo consolidar las capacidades fundamentales, fomentando una mayor estabilidad y reduciendo la sobrecarga del proyecto.

Elimina Puppeteer y Sharp con APIs nativas

Bun 1.4 introduce Bun.WebView, un navegador headless integrado para automatización, diseñado para reemplazar dependencias como Playwright y Puppeteer. En Mac, Bun.WebView utiliza el WebKit del sistema, el motor que impulsa Safari, sin requerir instalaciones adicionales. Para usuarios de Windows y Linux, aprovecha una instancia existente de Chrome o Chromium, capaz de ejecutar un subproceso headless o conectarse a un navegador ya abierto.

Esta integración nativa envía eventos de navegador nativos para las interacciones, haciendo que los clics, la escritura y el desplazamiento parezcan más humanos para las páginas web. Su API cubre operaciones fundamentales como encontrar elementos, hacer clic, escribir y ejecutar JavaScript específico de la página a través de evaluate. Aunque es eficaz para la automatización y el scraping ligero de navegadores, Bun.WebView aún no reemplaza completamente herramientas como Playwright, ya que carece de funciones como un ejecutor de pruebas o un visor de trazas.

Reduciendo aún más la sobrecarga de dependencias, Bun.Image sirve como un potente reemplazo para Sharp. Esta biblioteca de imágenes nativa ofrece operaciones encadenables directamente dentro de Bun. Los desarrolladores pueden cambiar el tamaño, rotar, voltear, ajustar el brillo y la nitidez, y convertir formatos de imagen de manera eficiente. Bun.Image también lee metadatos, incluidos el ancho, la altura y el formato, sin requerir la decodificación completa de los datos de píxeles. Esto elimina la necesidad de compilaciones nativas complejas y soluciona los problemas de despliegue que a menudo se encuentran con bibliotecas externas de procesamiento de imágenes.

Tu flujo de trabajo de desarrollo, ahora integrado

Bun 1.4 introduce un ejecutor de scripts integrado, eliminando dependencias externas como concurrently o npm-run-all. Los desarrolladores ahora pueden ejecutar múltiples scripts de package.json de forma concurrente usando --parallel o secuencialmente con --sequential. Esta función incluye una salida prefijada por el nombre del script, coincidencia de patrones (glob) para nombres de scripts y filtrado de espacios de trabajo. Una opción también permite que otros scripts continúen incluso si uno de ellos falla.

Para la programación de tareas, Bun.cron reemplaza paquetes como node-cron. Admite dos modos: una función que se ejecuta en el event loop para trabajos simples, mientras que un script registra un cron job nativo a nivel de sistema operativo. Estos trabajos a nivel de sistema aprovechan crontab en Linux, launchd en Mac, y el Programador de tareas en Windows para una ejecución robusta y persistente. Se admite la sintaxis cron estándar, incluidos los días con nombre y ayudantes como daily.

Una API de pseudo-terminal, Bun.Terminal, se integra directamente en el runtime, eliminando la necesidad de node-pty. Esto permite que JavaScript controle aplicaciones de línea de comandos interactivas como Bash, Vim o Htop. Bun.spawn obtiene una opción terminal, asegurando que los subprocesos reciban un entorno de terminal genuino para salida con color, movimiento del cursor y prompts interactivos. Para obtener más detalles sobre estas y otras características, consulte las notas de la versión de Bun 1.4.

¿Te está gustando? Recibe uno así en tu bandeja cada mañana.

un correo al día · date de baja en dos clics · sin rastreadores de terceros

El verdadero dividendo de la reescritura en Rust

La reescritura en Rust fundamental de Bun 1.4 ofrece ganancias de rendimiento sustanciales, el verdadero dividendo de la rearquitectura. Esta reingeniería produce tiempos de inicio más rápidos y un uso de CPU mediblemente menor para todas las operaciones. Cabe destacar que el binario de Bun es un 17% más pequeño, incluso con la adición de nuevas funcionalidades extensas como Bun.WebView y Bun.Image.

Utilidades adicionales agilizan aún más los flujos de trabajo de desarrollo. Bun.Archive proporciona una implementación nativa y rápida para inspeccionar tarballs, permitiendo a los desarrolladores leer archivos específicos, como un package.json de un archivo .tgz, sin necesidad de una extracción completa. Bun también introduce soporte nativo para analizar y convertir a cadena tanto JSON5 como XML, eliminando la necesidad de bibliotecas de terceros para estos formatos de datos comunes.

Una mejora significativa en la calidad de vida para la gestión de paquetes es el nuevo almacén virtual global, isolatedLinker. Esta característica ahorra una cantidad considerable de espacio en disco al crear enlaces simbólicos de los paquetes instalados en las carpetas node_modules de cada proyecto, en lugar de duplicarlos. El isolatedLinker también acelera los comandos bun install posteriores en múltiples proyectos, aumentando la eficiencia general del desarrollador.

Preguntas frecuentes

¿Cuál es el cambio más importante en Bun 1.4?

La 'reescritura en Rust' introduce una potente biblioteca estándar integrada, con el objetivo de reemplazar más de 15 dependencias comunes de NPM para tareas como automatización de navegadores, procesamiento de imágenes y cron jobs, directamente dentro del runtime.

¿Reemplaza Bun 1.4 completamente a Playwright o Puppeteer?

No completamente. Bun.WebView es excelente para la automatización ligera de navegadores, scraping y scripting de UI. Sin embargo, actualmente carece de características avanzadas que se encuentran en Playwright, como un ejecutor de pruebas dedicado y un visor de trazas.

¿Cuáles son algunas dependencias clave que Bun 1.4 puede reemplazar?

Bun 1.4 puede reemplazar paquetes como Playwright/Puppeteer (Bun.WebView), Sharp (Bun.Image), Marked (Bun.Markdown), node-cron (Bun.cron), concurrently (scripts paralelos) y varias bibliotecas de tar y cadenas ANSI.

¿Cómo funciona el almacén virtual global de Bun 1.4?

Cuando el 'isolatedLinker' está habilitado, bun install extrae los paquetes a un único almacén global en su máquina. Luego utiliza enlaces simbólicos para conectarlos a los node_modules de su proyecto, ahorrando un espacio significativo en disco y acelerando las instalaciones en múltiples proyectos.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only