Bun 1.1: El Kit de Herramientas Todo en Uno para JavaScript y TypeScript

Por adminburbuja Abr3,2024 #java #javascript

Por Jarred, Dave, Ashcon, Dylan, Meghan, Georgijs, Ciro · 1 de abril de 2024

Bun es una herramienta rápida y completa para ejecutar, construir, probar y depurar JavaScript y TypeScript, desde un único script hasta una aplicación completa de pila completa. Si eres nuevo en Bun, puedes aprender más en la publicación del blog Bun 1.0.

Bun 1.1 es una actualización enorme.

Se han realizado más de 1.700 commits desde Bun 1.0, y hemos estado trabajando arduamente para hacer que Bun sea más estable y compatible con Node.js. ¡Hemos corregido más de mil errores, agregado toneladas de nuevas características y APIs, y ahora, Bun es compatible con Windows!

Soporte para Windows

¡Ahora puedes ejecutar Bun en Windows 10 y versiones posteriores! Este es un gran hito para nosotros, y estamos emocionados de llevar Bun a un nuevo grupo de desarrolladores.

Bun en Windows pasa el 98% de nuestra propia suite de pruebas para Bun en macOS y Linux. Eso significa que todo, desde el tiempo de ejecución, el corredor de pruebas, el gestor de paquetes, hasta el empaquetador, todo funciona en Windows.

Para comenzar con Bun en Windows, ejecuta el siguiente comando en tu terminal:

> powershell -c "irm bun.sh/install.ps1 | iex"

Bun cuenta con un gestor de paquetes integrado, compatible con npm, que instala paquetes. Al instalar una aplicación React de Vite, bun install se ejecuta 18 veces más rápido que yarn y 30 veces más rápido que npm en Windows.

Tiempo dedicado a instalar dependencias en una aplicación React de Vite usando --ignore-scripts en Windows.

Además, puedes ejecutar scripts utilizando bun run, que es una alternativa más rápida a npm run. Para hacer que bun run sea aún más rápido en Windows, hemos desarrollado un nuevo formato de archivo: .bunx.

El archivo .bunx es un enlace simbólico entre sistemas de archivos que puede iniciar scripts o ejecutables utilizando Bun o Node.js. Decidimos crear esto por varias razones:

  • Los enlaces simbólicos no están garantizados para funcionar en Windows.
  • Los shebangs en la parte superior de un archivo (#!/usr/bin/env bun) no se leen en Windows.
  • Queremos evitar crear tres permutaciones de cada ejecutable: .cmd, .sh y .ps1.
  • Queremos evitar confusiones con las solicitudes “¿Terminar trabajo por lotes? (Y/n)”.

El resultado final es que bun run es 11 veces más rápido que npm run, y bunx también es 11 veces más rápido que npx.

Tiempo dedicado a ejecutar bunx cowsay vs npx cowsay en Windows.

Incluso si solo usas Bun como un gestor de paquetes y no como un tiempo de ejecución, .bunx simplemente funciona con Node.js. Esto también resuelve la molesta pregunta “¿Terminar trabajo por lotes?” a la que los desarrolladores de Windows están acostumbrados cuando envían ctrl-c a un script en ejecución.

bun --watch en Windows

Bun tiene soporte incorporado para el modo --watch. Esto te brinda un ciclo de iteración rápido entre realizar cambios y que esos cambios afecten tu código. En Windows, nos aseguramos de optimizar el tiempo que lleva entre presionar control-s y recargar el proceso.

APIs de Node.js en Windows

También hemos dedicado tiempo a optimizar las APIs de Node.js para usar las llamadas al sistema más rápidas disponibles en Windows. Por ejemplo, fs.readdir() en Bun es un 58% más rápido que en Node.js en Windows.

Si bien no hemos optimizado todas las API, si notas algo en Windows que es lento o más lento que Node.js, presenta un problema y encontraremos la manera de hacerlo más rápido.

Bun es un tiempo de ejecución de JavaScript

El soporte para Windows es solo una anécdota cuando se compara con las docenas de nuevas características, APIs y mejoras que hemos realizado desde Bun 1.0.

Los proyectos grandes comienzan 2 veces más rápido. Bun tiene soporte incorporado para JavaScript, TypeScript y JSX, impulsado por el transpilador propio de Bun escrito en código nativo altamente optimizado.

Desde Bun 1.0, hemos implementado una caché de direcciones de contenido para archivos mayores de 50 KB para evitar la sobrecarga de rendimiento de transpilar los mismos archivos repetidamente.

Esto hace que las herramientas de línea de comandos, como tsc, se ejecuten hasta 2 veces más rápido que en Bun 1.0.

Tiempo dedicado a ejecutar tsc --help en Bun y Node.js.

La Cáscara de Bun

Bun es ahora una cáscara multiplataforma, como bash, pero también en Windows.

JavaScript es el lenguaje de secuencias de comandos más popular del mundo. Entonces, ¿por qué ejecutar scripts de shell es tan complicado?

import { spawnSync } from "child_process";

// esto es mucho más trabajo del que podría ser
const { status, stdout, stderr } = spawnSync("ls", ["-l", "*.js"], {
  encoding: "utf8",
});

Las plataformas también tienen diferentes shells, cada uno con reglas de sintaxis ligeramente diferentes, comportamientos e incluso comandos. Por ejemplo, si quieres ejecutar un script de shell usando cmd en Windows:

  • rm -rf no funciona.
  • FOO=bar <comando> no funciona.
  • which no existe. (se llama where en su lugar)

La Cáscara de Bun es un lexer, parser e intérprete que implementa un lenguaje de programación similar a bash, junto con una selección de utilidades básicas como ls, rm y cat.

La cáscara también se puede ejecutar desde JavaScript y TypeScript, utilizando la API $ de Bun.

import { $ } from "bun";

// pipa a stdout:
await $`ls *.js`;

// pipa a cadena:
const text = await $`ls *.js`.text();

La sintaxis facilita pasar argumentos, buffers y tuberías entre la cáscara y JavaScript.

“`javascript
const response = await fetch(“https://example.com/”);

// tubo a una respuesta como stdin,
// tubo el stdout de vuelta a JavaScript:
const stdout = await $`gzip -c <

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *