Bun 1.4 llega con reescritura en Rust y grandes avances de compatibilidad con Node.js
Bun 1.4 completa la reescritura del runtime de Zig a Rust, supera 1.517 tests adicionales de la suite de Node.js y reduce cinco veces el uso de CPU en reposo.
HACKER NEWS (DEV, ≥100 P.) — Entre las novedades: Bun.Image, Bun.WebView, Bun.cron, un PTY nativo, streams web nativos y HTTP/3 experimental.
Bun 1.4 ya está disponible, y el cambio principal es estructural: el runtime se ha reescrito de Zig a Rust. Claude Code lleva meses funcionando sobre el port en Rust, y Prisma construyó Prisma Compute sobre él. La versión también corrige más de 2.900 issues.
La compatibilidad con Node.js da su mayor salto desde Bun 1.0. Bun ejecuta ahora 1.517 tests adicionales de la suite de Node.js en cada commit. node:http, node:fs, node:cluster, node:timers, node:zlib, node:vm y node:stream superan el 97% de los tests propios de Node, node:quic el 99%, y node:events, node:trace_events y node:sqlite el 100%. Playwright, vitest con cobertura, Next.js 16.3 con Turbopack y React Compiler, la instrumentación de OpenTelemetry y dd-trace de Datadog ya funcionan en Bun. Nuxt, testcontainers, amqplib, TypeORM, nock, inject() de Fastify y las subidas en streaming del cliente S3 de AWS funcionan sin cambios.
El consumo de recursos baja en todos los frentes. Bun se consolida sobre el asignador mimalloc, ampliado con limpieza parcial de páginas y un hilo scavenger que libera memoria mientras JavaScript está inactivo. La CPU en producción de Claude Code se redujo a la mitad: p99 del 24% al 10%, p50 del 5,8% al 2,5%. En una aplicación mínima, la CPU en reposo cae cinco veces. Las cargas de servidores HTTP usan entre un 13% y un 48% menos de memoria; un benchmark de Fastify alcanza 120 MB frente a 233 MB en Bun 1.3. Un patrón SSR de App Router de Next.js que crecía sin límite en 1.3 se estabiliza en 238 MB tras 4.000 páginas, por debajo de los 410 MB de Node.
El arranque es 2,5 veces más rápido en Windows (15,5 ms para hello.js frente a 40,1 ms de Node.js 26) y el doble de rápido en Linux con 5,1 ms y menos de la mitad de memoria. Los binarios de Linux y Windows se reducen hasta un 17%.
ReadableStream, WritableStream y TransformStream son ahora nativos y superan el 100% de los Web Platform Tests. En los pipelines de 64 MB de Bun, una descarga a través de DecompressionStream y TextDecoderStream corre a 1.519 MB/s frente a 204 MB/s de Node.js 26 y 530 MB/s de Deno 2.9. CompressionStream y DecompressionStream son nativos, con 2.291 MB/s en descompresión gzip frente a 491 MB/s de Node. Response.clone() y Request.clone() ahora comparten los chunks del cuerpo en lugar de copiarlos. Bun.serve aplica backpressure a los cuerpos en stream, de modo que un cliente lento ocupa como máximo un búfer de memoria del servidor.
La biblioteca estándar crece y absorbe 15 dependencias npm habituales. Bun.Image decodifica, redimensiona, rota y codifica JPEG, PNG, WebP, GIF y BMP con una API similar a sharp, sin addon nativo, y es 1,38 veces más rápido que sharp en un pipeline de redimensionado y codificación. Bun.WebView controla un navegador headless mediante el WebKit del sistema en macOS o un Chrome, Chromium o Edge instalado en otras plataformas. Bun.markdown analiza GFM hacia HTML, elementos React o callbacks propios; la salida HTML no está sanitizada. Bun.cron() registra tareas en el planificador del sistema operativo (crontab, launchd, Programador de tareas) o ejecuta funciones en el bucle de eventos. Bun.Terminal es un PTY integrado que sustituye a node-pty. bun run --parallel ejecuta scripts en paralelo con salida prefijada, reemplazando a npm-run-all y concurrently. Las rutas de Bun.serve pueden servir directorios con sendfile, ETag, Range y 304, protegidas en Linux con openat2 y O_RESOLVE_BENEATH contra escapes por enlace simbólico. Se añaden API para JSON5, XML, archivos tar y utilidades de cadenas compatibles con ANSI.
bun:ffi pasa a funcionar sobre soporte FFI integrado directamente en JavaScriptCore, sustituyendo a TinyCC. Los puntos de llamada calientes se compilan con JIT en llamadas C directas. Una llamada FFI vacía baja de 2,13 ns a 0,70 ns, el triple de rápido. El nuevo tipo buffer_length pasa la longitud de un TypedArray junto a su puntero, y returns: "cstring" devuelve cadenas normales o null.
En observabilidad llegan herramientas nativas en Markdown. --cpu-prof-md y --heap-prof-md generan perfiles de CPU y de heap en Markdown, legibles por SSH o listos para pegar en un informe de error; se mantienen las salidas .cpuprofile y .heapsnapshot, y BUN_CPU_PROFILE=1 perfila procesos sin acceso a flags. Las trazas asíncronas vinculan los errores de fs.promises, fetch(), S3, DNS o crypto con el await que los originó. process.on("memoryPressure") se dispara cuando el sistema se queda sin memoria, en macOS, Linux y Windows.
En red, Bun.serve incorpora HTTP/3 experimental (http3: true, 2,7 veces más rápido que HTTPS/1.1 en un benchmark de rutas estáticas, aún no apto para producción) y fetch() suma clientes HTTP/2 y HTTP/3 experimentales tras flags. La actualización se realiza con bun upgrade.
Tribuna de lectores
Aún no hay aportaciones — abre el debate.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.