Cruller: Continuación del Runtime Zig de Bun en la versión 0.16

Cruller: Continuación del Runtime Zig de Bun en la versión 0.16

La comunidad de desarrolladores ha dado la bienvenida a Cruller, un nuevo proyecto que surge como un fork de la reciente versión de Bun basada en Zig. Este lanzamiento se enfoca en los componentes esenciales necesarios para ejecutar servidores JavaScript de producción ya construidos, adaptándose a la versión estándar de Zig 0.16.

Una de las características más notables de Cruller es que mantiene una serie de componentes críticos que permiten una interacción efectiva con JavaScript, tales como JavaScriptCore, Bun.serve, manejo de HTTP/1-3, WebSockets, el método fetch, y otros elementos como streams y objetos Blob. Sin embargo, se han eliminado diversas funcionalidades, como el gestor de paquetes, el sistema de bundling/transpilación, el shell, y el runner de pruebas, entre otros subsistemas orientados al desarrollo.

El objetivo principal de este nuevo runtime es diferenciarse de Bun, convirtiéndose en una opción enfocada exclusivamente en la ejecución. Cruller cuenta con un lanzador minimalista que carga un punto de entrada preconstruido, dejando afuera características que requieren la instalación de paquetes, transformaciones de TypeScript, o ejecución de pruebas, lo que limita su uso a implementaciones más específicas.

Rendimiento Medido y Comparativas

En cuanto al rendimiento, Cruller ha sido sometido a pruebas comparativas con el binario oficial de Bun 1.3.14 en un entorno Linux x64. Los resultados indican que Cruller, en su versión ReleaseFast y después de ser despojado de elementos innecesarios, presenta un tamaño de 73.0 MiB, en comparación con los 88.5 MiB del runtime oficial de Bun. Este análisis recalca una reducción significativa de aproximadamente el 18%. En términos de rendimiento, las pruebas de benchmark en V8 Crypto con código JavaScript puro han mostrado que Cruller no solo iguala el rendimiento de Bun, sino que en ciertas ejecuciones logró un desempeño promedio un 2% superior, lo cual se encuentra dentro de las variaciones normales entre ejecuciones.

A pesar de que Cruller aún está en proceso de desarrollo, ha pasado diversas pruebas, incluyendo chequeos semánticos de Zig, compilaciones para producción, y tests de HTTP con Bun.serve y el método fetch().

Compatibilidad y Requisitos Técnicos

Actualmente, el proyecto es compatible con Zig 0.16.0 y el objetivo de construcción es Linux x64. Esta especificación sugiere que los desarrolladores interesados deberán contar con un entorno compatible para aprovechar al máximo las capacidades de Cruller.

Además, se ha utilizado inteligencia artificial como asistente en varios aspectos del proyecto, incluyendo la migración a Zig 0.16 y la verificación de builds y pruebas. No obstante, las decisiones arquitectónicas y la revisión de cambios son gestionadas por los mantenedores, asegurando que el proyecto no se limite a ser generado por AI, sino que esté guiado por una dirección técnica bien definida.