Bienvenido a JavaScript, Bun

Construido por Jarred Sumner, un antiguo ingeniero de frontend en Stripe, Bun tiene como objetivo ejecutar la mayor parte del JavaScript del mundo fuera de los navegadores, aportando mejoras en el rendimiento y la complejidad de su futura infraestructura, así como la productividad de los desarrolladores a través de herramientas mejores y más sencillas.

Diseñado como un reemplazo para ejecutar aplicaciones JavaScript y Typescript, Bun, un nuevo tiempo de ejecución de JavaScript construido con un motor JavaScriptCore, fue diseñado para ser una herramienta todo en uno para agrupar, transpilar y ejecutar código a la velocidad del rayo.

Bun procesa unas tres veces más peticiones HTTP por segundo que Node.js cuando renderiza React del lado del servidor. WebSocket, ReadableStream y fetch están integrados. Bun también es un transpilador, por lo que TypeScript y JSX funcionan desde el principio. Como Bun implementa el algoritmo de resolución de módulos de Node.js, los paquetes npm también funcionan.



Cómo superar un ciclo de iteración lento

Fue la velocidad lo primero que provocó la necesidad de algo nuevo que llevó a la creación de Bun. En ese momento, Sumner estaba desarrollando un juego en Next.js pero estaba frustrado con la velocidad del ciclo de iteración.  La primera solución fue utilizar el constructor de es build con Next.js, pero eso no dio el resultado que buscaba, incluso después de conseguir que las tecnologías funcionaran con plugins. La siguiente idea de Sumner fue construir un bundler y un transpiler pero al final, construyó un runtime que incluye un bundler y un transpiler.

Después de estudiar varios lenguajes para construir Bun, Sumner se decantó por el relativamente poco conocido Zig. El enfoque de metaprogramación "comptime" de Zig ayudó a cerrar el trato. Comptime es una metaprogramación basada en la ejecución de código en tiempo de compilación y la evaluación perezosa.

En Zig, el programador puede etiquetar una variable en tiempo de compilación garantizando al compilador que cada carga y almacenamiento de la variable se realiza en tiempo de compilación. Esencialmente, comptime puede ejecutar código arbitrario en tiempo de compilación. "Lo probé y me di cuenta de que comptime sería una herramienta increíblemente potente para escribir código rápido", explicó Sumner.

El tiempo de computación se utiliza en el analizador léxico, llamado "lexer", una de las partes más lentas del análisis sintáctico de Bun. Su trabajo consiste en recorrer todo el texto para determinar si el token actual es un identificador válido o una palabra clave. Debido al tiempo de compilación, Bun utiliza un conjunto de bits que se genera en tiempo de compilación. Este proceso da un 2% de aumento de rendimiento a Bun.

Sacudiendo los bugs...

Y por último, pero no menos importante, las pruebas. Bun es nuevo y tiene errores; Sumner es consciente de ello y atribuye esta situación a la falta de pruebas generalizadas. Sobre esto dice: "Bun no tiene suficiente cobertura de pruebas y por eso tiene tantos errores". Bun tiene un corredor de pruebas de JavaScript y el comando cli es bun wiptest.

Tanto los desarrolladores como Sumner están muy entusiasmados con Bun, y, aunque todavía es nuevo, hay muchas esperanzas puestas en él. Sumner dijo: "He estado viniendo desde la perspectiva de, tiene que trabajar tanto como sea posible con el ecosistema existente porque la gente no debería tener que reescribir su código, pero tal vez debería empezar a pensar más en lo que si hacemos qué nuevas cosas son posibles porque el bollo API permite".




- Kolozzuzz

No hay comentarios:

Con la tecnología de Blogger.