Jarred Sumner, créateur et développeur principal de la plateforme serveur JavaScript Bun, a créé une branche Git pour réécrire Bun du langage Zig en Rust. La réécriture est effectuée à l'aide de l'assistant AI Claude, pour lequel un guide spécifique a été élaboré pour le portage. Selon Jarred, c'est pour l'instant un simple expériment, et il est trÚs probable que l'aventure ne dépasse pas ce stade expérimentale et que le code réécrit ne soit pas utilisé.
Le portage n'est pas encore terminĂ©, et Ă ce stade, tout l'intĂ©rĂȘt du projet est de dĂ©terminer dans quelle mesure le port sera fonctionnel, s'il rĂ©ussira les tests du projet principal et quelle sera la complexitĂ© de la maintenance du nouveau code. En fin de compte, une comparaison des variantes de Bun en Zig et en Rust est prĂ©vue.
En dĂ©cembre de l'annĂ©e derniĂšre, le projet Bun a Ă©tĂ© acquis par la sociĂ©tĂ© Anthropic, donnant ainsi Ă Jarred les ressources nĂ©cessaires pour engager les modĂšles AI avancĂ©s Claude dans le processus de portage. La plateforme Bun est utilisĂ©e dans les produits Claude Code et Claude Agent SDK, et Anthropic s'intĂ©resse Ă l'amĂ©lioration de sa qualitĂ© et Ă son dĂ©veloppement. Bun est l'un des projets les plus rĂ©ussis Ă©crits en Zig, mais les dĂ©veloppeurs de Zig et de Bun ont des opinions divergentes sur l'utilisation de l'IA dans le processus de dĂ©veloppement. Le projet Zig impose une interdiction stricte de l'utilisation de grands modĂšles linguistiques lors de la prĂ©paration des pull requests, des issues et des commentaires (mĂȘme la traduction via l'IA des commentaires en langues autres que l'anglais est interdite).
L'introduction de telles restrictions est expliquĂ©e par les dĂ©veloppeurs de Zig en raison d'expĂ©riences nĂ©gatives avec l'examen des pull requests créées via l'IA, qui prennent des ressources et du temps (par exemple, des modifications sans sens, des hallucinations de l'IA et des commits gonflĂ©s de 10 000 lignes). De plus, le projet Zig se prĂ©sente comme Ă©tant axĂ© sur les participants, et non sur leurs contributions au dĂ©veloppement â l'objectif principal de l'acceptation des pull requests Ă©tant d'aider Ă accueillir de nouveaux participants.
L'auteur de Bun, Bun, n'est pas d'accord avec l'interdiction de l'IA dans Zig et pense que l'IA sera un souvenir nostalgique en 2025 et 2026, tandis que le développement de logiciels open-source évoluera vers une interdiction d'accepter le code des humains. Les gens discuteront des problÚmes, définiront des tùches et établiront des priorités, tandis que l'écriture du code et l'envoi des modifications dans les dépÎts seront l'apanage de l'IA. Une des raisons des expériences de réécriture en Rust est également le désir de résoudre les problÚmes dans Bun causés par des fuites de mémoire et la politique inacceptable de Zig sur l'acceptation des changements dans le langage qui violent la compatibilité.
En raison de l'interdiction de l'application de l'IA, les dĂ©veloppeurs de Bun sont contraints de maintenir leur propre fork de l'outil Zig, dans lequel l'application de l'IA a permis de quadrupler la vitesse de compilation grĂące Ă la parallĂ©lisation de l'analyse sĂ©mantique et de la gĂ©nĂ©ration de code. Cependant, selon le commentaire d'un des dĂ©veloppeurs de Zig, la raison du rejet des patches n'est pas l'IA, mais le fait que la parallĂ©lisation de l'analyse sĂ©mantique concerne non seulement le compilateur, mais aussi le langage lui-mĂȘme - pour rĂ©aliser la fonctionnalitĂ© proposĂ©e sans erreurs ni incompatibilitĂ©s, des modifications dans le langage Zig doivent ĂȘtre apportĂ©es. Au lieu de la parallĂ©lisation, les dĂ©veloppeurs de Zig dĂ©veloppent la compilation incrĂ©mentale, qui, selon leurs hypothĂšses, permettra d'augmenter considĂ©rablement la vitesse de compilation.
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
