- El REPL fue reescrito completamente en Zig, ofreciendo ejecución instantánea y una interfaz de terminal enriquecida, con funciones como copia al portapapeles, autocompletado con tabulador y guardado del historial
- El comando de compilación con destino al navegador puede generar un solo archivo HTML con todo en línea, que puede ejecutarse sin servidor
- Hay soporte completo para los decoradores ES estándar de TC39, lo que permite usar sintaxis moderna como
accessor, Symbol.metadata y addInitializer
- Incluye múltiples mejoras de plataforma y rendimiento, como soporte para Windows ARM64, optimización de barrel imports, opción de reintento en pruebas y un motor JavaScriptCore con mejor rendimiento
- En general, es una versión que mejora notablemente la experiencia de desarrollo, el rendimiento y la compatibilidad de Bun
Nuevo REPL
- El REPL fue reemplazado por una implementación nativa basada en Zig, por lo que puede ejecutarse al instante sin depender de paquetes npm externos
- Soporta resaltado de sintaxis, atajos de teclado de Emacs, autocompletado con tabulador, guardado del historial y entrada multilínea, entre otros
- Incluye comandos integrados como
.copy, .help, .exit y .editor
- Conserva declaraciones
const/let y soporta tanto top-level await como import/require
--compile --target=browser
bun build --compile --target=browser genera HTML con JavaScript, CSS y recursos en línea
- Las etiquetas
<script src="..."> y <link rel="stylesheet"> se convierten respectivamente en código en línea
- Puede ejecutarse incluso en entornos
file:// sin restricciones de CORS
- Soporta TypeScript, JSX, React, CSS, ESM y CJS
Decoradores ES estándar de TC39
- Soporte completo para decoradores estándar Stage-3
- Implementa las especificaciones más recientes, como la palabra clave
accessor, Symbol.metadata y ClassMethodDecoratorContext
- Soporta decoradores de campos, métodos y clases, así como inicializadores (
addInitializer)
- Los decoradores experimentales de TypeScript existentes (
experimentalDecorators) siguen funcionando
Soporte para Windows ARM64
- Bun puede ejecutarse y compilarse en Windows basado en ARM64, como equipos con Snapdragon
- Soporta compilación cruzada con el objetivo
bun-windows-arm64
- Puede usarse de la misma forma tanto desde el CLI como desde la API
Optimización de barrel imports
- Detecta automáticamente estructuras de reexportación mediante barrel files como
import { Button } from 'antd'
- Se optimiza automáticamente cuando está configurado
"sideEffects": false
- También puede indicarse de forma explícita con la opción
optimizeImports
- Al parsear solo los submódulos necesarios, la velocidad de compilación puede mejorar hasta 2 veces
Optimización de la salida del bundle
- En bundles ESM/CJS se redujo la cantidad de closures y el uso de memoria heap
- 11% menos objetos, 4 MB menos de heap y una fuerte reducción en la cantidad de funciones y objetos de entorno
- Se aplica automáticamente sin cambios en el código
bun test --retry
- Ahora es posible establecer un número predeterminado de reintentos para toda la suite de pruebas (
--retry N)
- La opción
{ retry: N } en pruebas individuales tiene prioridad
- En el reporter JUnit XML, cada intento se registra como su propio
<testcase>
Mejoras en Bun.generateHeapSnapshot("v8")
- La opción
"arraybuffer" permite devolver el heap snapshot como un ArrayBuffer
- Elimina la sobrecarga de conversión a cadena al procesar snapshots grandes
Actualizaciones de TLS y certificados
- Mejora de rendimiento gracias al soporte de keepalive para conexiones mTLS y CA personalizadas
- Las mismas configuraciones TLS se deduplican en un registro global
- Los certificados raíz se actualizaron a NSS 3.119 (Firefox 147.0.3)
- Se eliminaron 4 certificados raíz de CommScope
Actualización del motor JavaScriptCore
- Múltiples mejoras de rendimiento, incluyendo 168 veces más rápido en slicing de cadenas, 10.5 veces en
endsWith, 1.6 veces en acceso a flags de RegExp y hasta 7 veces en path.parse()
structuredClone es hasta 25 veces más rápido con arreglos y arreglos de objetos
Buffer.slice() y subarray() mejoran alrededor de 1.8 veces
- También hay optimizaciones internas en
BigInt, iteradores de cadenas y operaciones enteras
Correcciones de errores principales
- Se resolvió un problema de compatibilidad de pipes con servidores MCP de Python asyncio (
Bun.spawn)
- Compatibilidad con Node.js: múltiples correcciones en
AsyncLocalStorage, fs.watch, manejo de encabezados http y fallos relacionados con GC
- API de Bun: se corrigieron crashes y fugas de memoria relacionadas con
spawn, plugin, sql y build
- Mejoras generales de estabilidad en WebSocket, bun install, parser de CSS, bun shell y entornos Windows
- Vulnerabilidades de seguridad: se corrigieron inyección de encabezados HTTP, path traversal en tarballs y fugas de streams de S3
1 comentarios
Después de observar su evolución durante bastante tiempo y de usarlo de vez en cuando desde sus inicios, lo que he sentido es que los desarrolladores de Bun de verdad, muy en serio, quieren hacer que el mundo de JS/TS avance más rápido. Es sorprendente. De verdad...