6 puntos por GN⁺ 2024-04-02 | 1 comentarios | Compartir por WhatsApp

Soporte para Windows

  • Bun ahora puede ejecutarse en Windows 10 y versiones posteriores
  • Supera el 98% de la suite de pruebas de Bun en macOS y Linux
  • Incluye un administrador de paquetes compatible con npm integrado, y al instalar una app de Vite React es 18 veces más rápido que yarn y 30 veces más rápido que npm
  • Soporta ejecución de scripts más rápida en Windows con el formato de archivo .bunx
  • Optimiza la API de Node.js usando las llamadas al sistema más rápidas en Windows
    • Ejemplo: fs.readdir() es 58% más rápido que en Node.js

Bun es un runtime de JavaScript

  • Soporta JavaScript, TypeScript y JSX
  • Las herramientas de línea de comandos como tsc son hasta 2 veces más rápidas que en Bun 1.0
  • Bun Shell ahora es un shell multiplataforma disponible también en Windows
    • Incluye utilidades básicas como ls, rm y cat
    • Es posible ejecutar el shell desde JavaScript y TypeScript usando la API Bun.$
  • Bun.Glob
    • Ofrece una API Glob integrada para coincidencia de archivos y cadenas
    • Similar a fast-glob y micromatch, pero con coincidencia de cadenas 3 veces más rápida
  • Bun.Semver
  • Nueva API Semver para parsear y ordenar cadenas semver
  • Similar al paquete node-semver, pero 20 veces más rápida
  • Bun.stringWidth()
    • Nueva API para medir el ancho visible de una cadena en la terminal
    • Soporta códigos de escape ANSI, caracteres de ancho completo, grafemas y emoji
  • server.url: con Bun.serve() se puede obtener la URL del servidor HTTP creado mediante la propiedad server.url
  • server.requestIP(): la dirección IP de una solicitud HTTP se puede obtener con el método server.requestIP()
  • subprocess.resourceUsage(): se puede acceder al uso de CPU y memoria de un subproceso creado con Bun.spawn() mediante el método resourceUsage()
  • Mejoras en la compatibilidad con Node.js
    • Diversas mejoras de API, como compatibilidad con la API cliente de node:http2, compatibilidad con Date.parse() y soporte para fs.readdir() recursivo
    • IPC posible entre Bun y Node.js
    • También soporta algunas API no documentadas de Node.js
  • Web API: soporte para API estándar de la Web como WebSocket, performance.mark(), fetch() con compresión Brotli y URL.canParse()

Bun es un administrador de paquetes compatible con npm

  • Con bun install, se pueden instalar paquetes de npm hasta 29 veces más rápido
  • Mejoras en funciones como scripts de ciclo de vida, trustedDependencies y bun pm trust

Bun es un bundler de JavaScript

  • Soporta el bundling de código ejecutable en Node.js usando bun build --target=node
  • Con la bandera --compile, es posible compilar archivos TypeScript y JavaScript en un único ejecutable

Bun es un test runner

  • Ofrece un módulo de pruebas integrado con la misma API que Jest
  • Se agregaron nuevos matchers de expect() y soporte para mocking de módulos

Soporte integrado para SQLite

  • Soporte para SQLite con una API inspirada en better-sqlite3
  • Mejoras en consultas multi-statement, mensajes de error detallados, importación de bases de datos y soporte integrado

Opinión de GN⁺

  • Bun es un toolkit de JavaScript que mejora mucho el rendimiento manteniendo la compatibilidad con Node.js, y con el soporte para Windows ahora puede llegar a una comunidad de desarrolladores más amplia.
  • El test runner integrado y el soporte para SQLite permiten a los desarrolladores trabajar de forma eficiente sin herramientas adicionales.
  • El alto rendimiento de Bun y la mejora en la experiencia de desarrollo pueden destacar especialmente en proyectos grandes o aplicaciones sensibles al rendimiento.
  • A pesar de las múltiples funciones y mejoras que ofrece Bun, para lograr compatibilidad total con la amplia variedad de paquetes del ecosistema de Node.js seguirá siendo necesario el desarrollo continuo y la retroalimentación de la comunidad.
  • Hace falta un análisis adicional sobre cómo las nuevas funciones de Bun pueden competir o colaborar con las herramientas existentes basadas en Node.js.

1 comentarios

 
GN⁺ 2024-04-02
Comentarios en Hacker News
  • La impresionante lista de cambios de Bun

    • Bun parece una alternativa ideal a Node.js, y dedicar tiempo al soporte para Windows es algo que a menudo se pasa por alto en el mundo del desarrollo web.
    • Hay una pregunta sobre si la frase "Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux." significa que la versión para Windows se lanzó incluyendo pruebas fallidas, o si se trata de un malentendido.
  • La función de macros de Bun

    • Se descubrió que Bun tiene una función básica de macros que ejecuta código en tiempo de bundling. Es una característica muy interesante.
  • Dudas sobre por qué usar Bun y Deno

    • Aunque quedó claro que la compatibilidad con Node.js es esencial para Bun y Deno, existen dudas sobre la sostenibilidad del producto cuando hay financiamiento de VC.
    • A pesar de que Bun y Deno forman parte de un ecosistema como el de Node.js (algo imperfecto), no está claro cuál es la razón convincente para usarlos.
  • Un gran fan de Bun

    • Empezó a usar Bun por su compatibilidad con TypeScript y sigue usándolo por su rendimiento.
    • Probó Deno, pero le resultó difícil de usar; en cambio, Bun fue fácil de integrar y una experiencia muy agradable.
  • Evaluación del nuevo lanzamiento de Bun

    • Vio el video de Bun, pero los gráficos no eran claros, así que no pudo saber si la comparación era contra una versión anterior de Bun o contra Node.js.
    • La experiencia de usar Bun en proyectos secundarios fue buena, y la API integrada funciona bien. Le gustaría que Deno y Node.js también adoptaran parte de estas APIs.
    • Bun recopila cierta telemetría por defecto. El script de instalación no lo informa, y solo se menciona en la documentación de Bunfile.
    • Le gustaría que los usuarios recibieran instrucciones sobre cómo desactivar la telemetría durante la instalación y que pudieran optar por activarla.
    • Bun ofrece una opción para empaquetar el punto de entrada .js del proyecto y el runtime para crear un ejecutable sin dependencias. Esto es útil cuando se quiere distribuir un único binario a los usuarios, pero actualmente el tamaño del archivo sigue siendo bastante grande (más de 90 MB para un proyecto pequeño en GNU/Linux).
    • Se pregunta si Bun ofrecerá una opción para desactivar ciertas funciones y así obtener binarios más pequeños.
    • Está probando usar Bun como target de Haxe, y podría ser una opción a considerar si se prefiere Haxe sobre TypeScript o si se quiere agregar un servidor web a un proyecto existente de Haxe.
  • Solicitud al equipo de Bun

    • Hay una petición para que proporcionen una política de soporte/línea de tiempo del ciclo de vida clara. También es importante tener claridad sobre las garantías de estabilidad entre versiones y módulos.
  • Participación de un desarrollador de Bun

    • Un desarrollador de Bun dijo que está listo para responder preguntas. Mencionó que Bun v1.1 todavía se está compilando y que tardará unos 20 minutos más en completarse.
  • Preguntas sobre la estabilidad de Bun

    • Alguien comentó que probó Bun tres veces en varios proyectos, pero experimentó segmentation fault durante el runtime o al instalar paquetes.
  • El modelo de ingresos de Bun y el financiamiento de VC

    • Hay preguntas sobre cuál es el modelo de ingresos de Bun y qué pasará cuando se agote el financiamiento de VC.