Jarred Sumner, crĂ©ateur et dĂ©veloppeur principal de la plateforme JavaScript serveur Bun, a reconnu le succĂšs de l'expĂ©rimentation consistant Ă réécrire le projet en utilisant les langages Zig et Rust avec l'assistant AI Claude Code, et a dĂ©cidĂ© de transfĂ©rer Bun vers le langage Rust. La version réécrite en Rust a dĂ©jĂ Ă©tĂ© acceptĂ©e dans le dĂ©pĂŽt principal du projet, tandis que le code en Zig est prĂ©vu pour ĂȘtre supprimĂ©. L'auteur de Bun a Ă©galement annoncĂ© le recrutement de personnel pour soutenir Bun, avec plus de 5 ans d'expĂ©rience en dĂ©veloppement sur C/C++ et Rust.
Actuellement, un port direct de Zig vers Rust a Ă©tĂ© rĂ©alisĂ©, comprenant de nombreux blocs de code non sĂ©curisĂ©, utilisant la mĂȘme architecture, les mĂȘmes structures de donnĂ©es et les anciennes bibliothĂšques externes. Il est notĂ© que le port vers Rust a rĂ©ussi Ă passer les tests existants sur toutes les plateformes. En parallĂšle, plusieurs fuites de mĂ©moire et Ă©checs de tests ont Ă©tĂ© corrigĂ©s.
AprĂšs la compilation de la version en Rust, l'exĂ©cutable s'est avĂ©rĂ© ĂȘtre de 3 Ă 8 Mo plus lĂ©ger que lors de la compilation de la version en Zig. Dans les tests de performance, la version en Rust s'est rĂ©vĂ©lĂ©e soit plus rapide, soit Ă un niveau Ă©quivalent. Selon Jarred, le principal avantage de la version en Rust est la possibilitĂ© de dĂ©tecter et de prĂ©venir les erreurs de gestion de la mĂ©moire, dont le diagnostic avait coĂ»tĂ© des heures de travail aux dĂ©veloppeurs de Bun ces derniĂšres annĂ©es.
Comme raison de la réécriture en Rust, il a été précédemment souligné le désir de résoudre les problÚmes de Bun causés par des fuites de mémoire, ainsi que des désaccords avec les auteurs de Zig sur l'utilisation de l'IA pour l'écriture de code et la politique inacceptable de Zig concernant les changements affectant la compatibilité pour les grands projets.
La plateforme JavaScript Bun évolue comme un équivalent haute performance des plateformes Node.js et Deno. Le projet est développé en gardant à l'esprit la compatibilité avec les applications serveur pour Node.js et supporte la plupart des API de Node.js. La plateforme comprend un ensemble d'outils pour créer et exécuter des applications en JavaScript et TypeScript, ainsi qu'un runtime pour exécuter des applications JavaScript sans navigateur, un gestionnaire de paquets (compatible avec NPM), des outils pour effectuer des tests, un systÚme de construction de paquets autonomes et une couche pour intégrer des gestionnaires écrits en C. En termes de performance, Bun surpasse nettement Deno et Node.js (dans les tests basés sur le framework React, la plateforme Bun surpasse Deno par 2 fois et presque par 5 fois Node.js). Pour l'exécution de JavaScript, le moteur JavaScriptCore et les composants du projet WebKit avec des patches supplémentaires sont utilisés.
Source : opennet.ru
