Présentation de Cruller
Cruller est une version améliorée du runtime Bun, spécifiquement conçue pour être utilisée avec Zig 0.16. Il s'agit d'une fork de la dernière version de Bun basée sur Zig, réduite aux éléments nécessaires pour exécuter des serveurs JavaScript de production déjà construits.
Architecture et fonctionnement
Cruller conserve les fonctionnalités clés de Bun, telles que JavaScriptCore, Bun.serve, HTTP/1-3, WebSockets, fetch, streams, Blob, Request/Response, la résolution de modules pour le JavaScript pré-construit, ainsi que le service de fichiers statiques. En revanche, il supprime les sous-systèmes orientés développement, comme le gestionnaire de paquets, le bundler/transpiler, le shell, l'exécuteur de tests, la plupart des dispatcheurs CLI, N-API, les clients SQL, le support d'archive, etc.
La partie la plus intéressante de cette adaptation a été la séparation du runtime de l'ancienne intégration de construction Zig patchée de Bun. Cruller dispose désormais d'un graphique de construction Zig 0.16 standard, de shims de compatibilité pour les API modifiées depuis Zig 0.15, ainsi que d'un module d'intégration de code généré pour que les versions de release restent portables au lieu de charger le code JS généré à partir du répertoire de construction au moment de l'exécution.
Performances et limites
Les mesures actuelles sur Linux x64, comparées au runtime officiel Bun 1.3.14, montrent que Cruller offre une réduction de taille d'environ 18% (73,0 MiB contre 88,5 MiB) sans compromettre les performances. Les tests de benchmark V8 Crypto pure-JS ont révélé une parité de performance, avec une médiane de Cruller environ 2% supérieure, bien dans la variance normale de run-to-run.
État actuel et versions supportées
Le runtime est encore en cours de développement, mais les vérifications sémantiques Zig, les constructions de release, les points d'entrée CJS/ESM, les tests de chemin Node et les tests de fumée HTTP Bun.serve plus fetch() intégré passent actuellement avec succès. Cruller prend en charge Zig 0.16.0 et Linux x64 est actuellement la cible de construction supportée.