Bun.js a été publié en version bêta il y a environ un mois, mais le nouveau-né de la famille JavaScript suscite déjà l'intérêt d'une grande partie de la communauté du langage. Son objectif principal est de fournir un environnement pour exécuter JavaScript en dehors du navigateur, tout comme Node.js et Deno.js, mais le développeur de Bun affirme que le moteur progresse pour offrir de nouveaux niveaux de vitesse et une complexité accrue. Bun est présenté comme le "couteau suisse" du monde JS puisque vous avez un empaqueteur, un transpileur et un gestionnaire de paquets en un seul outil. Mais parviendra-t-il à surpasser Node et Deno à l'avenir ?L'arrivée de nouveaux frameworks et de nouvelles bibliothèques en permanence est une caractéristique de JavaScript. En juillet 2022, l'écosystème JavaScript a accueilli un nouveau membre : Bun.js. Il est défini comme "un moteur d'exécution JavaScript rapide tout-en-un". Bun est le troisième outil du troisième de ce type après Node.js et Deno.js, et a été créé par Jarred Sumner à l'aide du langage de programmation Zig. Le langage est encore à ses débuts dans sa version 0.9.1, mais Sumner justifie le choix Zig par les avantages que présente son contrôle manuel de la mémoire de bas niveau et l'absence d'un "flux de contrôle caché".
Bun met l'accent sur la simplicité et la rapidité
Les développeurs auraient ainsi plus de facilité à écrire des logiciels rapides. Bun est un projet open source et est publié sous licence MIT. Il est basé sur le moteur JavaScriptCore de WebKit, qui est plus rapide que les alternatives courantes telles que V8, et comme Deno, Bun prend nativement en charge TypeScript. Mais contrairement à Deno, Bun est destiné à remplacer Node, Webpack, Babel, Yarn et PostCSS, le tout dans un seul et même paquet. Il est important de rappeler que Deno n'a pas été conçu comme un remplacement de Node. Son créateur, Ryan Dahl, l'a conçu pour améliorer la productivité. Alors, comment Bun se compare-t-il à Deno et Node ?
Bun veut surtout convaincre les développeurs avec un paquet complet qui comprend entre autres, un transpileur JSX/TypeScript, un client npm, un empaqueteur ainsi que des clients pour SQLite, HTTP et Websocket. Bien que Bun soit inspiré par les concurrents Node et Deno, Sumner a déclaré lors de sa présentation qu'il tente aussi clairement d'améliorer l'expérience de développement et la productivité en fournissant un ensemble d'outils. Bun supporte la résolution de modules Node.js, aussi bien avec des modules CommonJS qu'avec des modules EcmaScript (ESM). Cela devrait permettre d'utiliser une grande partie des paquets npm.
Sumner a expliqué que Bun est né de sa frustration face à la vitesse, ou au manque de vitesse, d'un langage : « j'ai été tellement frustré par la lenteur de tout ce qui est en JavaScript. Je sais que JavaScript peut être beaucoup plus rapide ». En tant qu'ancien développeur front-end chez Stripe, il a déclaré qu'il sait combien un cycle d'itération rapide est essentiel à la productivité. Ainsi, la vitesse de Bun ne se limiterait pas simplement à servir les requêtes plus rapidement que les autres moteurs d'exécution. Cela signifierait également qu'il est plus rapide pour installer des paquets, exécuter des tests, regrouper et transpiler.
La page d'accueil de Bun indique des performances 3 et 4 fois supérieures à celles de Deno et Node. Ce sont des des chiffres impressionnants, mais Tomas Fernandez, développeur et ingénieur en informatique dématérialisée, a réalisé quelques tests pour voir comment Bun se comporte réellement, mais aussi pour déterminer à quel point il est rapide. Il a récemment partagé les résultats de ces tests, dont en voici quelques points forts :
Gestion des paquets avec npm et Bun
Dans ce premier test, Fernandez a comparé les performances de Bun à celles de npm pour la création de nouveaux projets. Les résultats ont révélé que npm prend 49 secondes pour créer une application React vide. Par contre, il faut moins d'une seconde à Bun pour terminer la configuration. « C'est une sacrée amélioration », a écrit Fernandez. Mais est-ce une comparaison valable ? Après une inspection plus poussée, il a constaté que :
- npm a installé 1 392 paquets et la taille de node_modules est de 250 Mo ;
- Bun n'a installé que 8 paquets, pour une taille totale de 72 Mo.
D'après Fernandez, l'on compare ici des pommes et des oranges ici, car le modèle React de départ de Bun est plus petit. Toutefois, il a ajouté que le modèle tout à fait utilisable pour le développement. « Je peux lancer bun dev pour commencer à bidouiller immédiatement »,...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.