IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Bun, le moteur d'exécution Javascript racheté par Anthropic, passe à la version 1.4 et marque les esprits via une migration controversée de son code de Zig vers Rust, menée à l'aide de Claude Fable

Le , par Patrick Ruiz

178PARTAGES

11  0 
Bun a fait passer son code de Zig vers Rust pour résoudre des problèmes complexes de gestion de la mémoire, de stabilité et de maintenance, tout en s'appuyant sur un flux de travail piloté par l'IA (notamment via Claude Fable) qui a rendu cette migration massive possible en un temps record. La manœuvre relance le débat sur la comparaison de Rust avec d’autres langages utilisés dans la filière de la programmation système (Zig, C, C++), ainsi que celui de la pertinence du vibe coding dans la filière du développement de logiciels.

Bun est un moteur d’exécution initialement développé en Zig – un langage de programmation présenté comme un remplaçant potentiel du C. La tête derrière le projet vient d’annoncer le passage complet du code source de Zig vers Rust. Selon Jared Sumner, ce choix a été motivé par la nécessité de la mise à contribution de Rust pour corriger certaines tares de Zig, notamment en matière de gestion des accès à la mémoire.

Google a opéré une migration similaire de C++ vers Rust pour les mêmes raisons sous-jacentes : l’exploitation des avantages de Rust (en comparaison aux autres langages) en matière de sécurisation des accès à la mémoire. Mais certains acteurs de la filière sont d'avis que le véritable gage de sécurisation de la mémoire réside dans les aptitudes des programmeurs

Le billet de blog y relatif souligne entre autres des dizaines de bugs de type use-after-free (le noyau réutilise un pan de mémoire qu’il a déjà libéré), double-free (double utilisation de la fonction free() sur la même adresse mémoire) et fuites mémoire dans des modules critiques (node:zlib, node:http2, UDPSocket, crypto.scrypt, TLS…) dus à l’utilisation de Zig comme langage de programmation dans le processus de développement de Bun.

L’argument central est que Zig, comme le C, ne gère pas la mémoire pour le programmeur, et ne dispose pas de constructeurs/destructeurs. Le nettoyage repose sur le mot-clé explicite defer. Il est manuel et il faut donc penser à l’utiliser, rendant l’erreur humaine quasi inévitable à grande échelle. Google aussi a adopté Rust et rapporte avoir constaté une réduction de 1000 fois des vulnérabilités liées à la sécurité de la mémoire.

Mais Bjarne Stroustrup est d’avis que ce qu’il est possible d’obtenir du C++ en matière de sécurisation des logiciels dépend entre autres du développeur et notamment de la connaissance des outils que lui offre le langage, de sa maîtrise du compilateur, etc. En gros, le problème en matière de sécurisation de la mémoire se trouve entre la chaise et le clavier et d’avis de Bjarne Stroustrup c’est le programmeur.

En droite ligne avec cette position, le créateur du C++ propose donc des Profils qui ont pour but de définir des modes de C++ qui imposent des contraintes sur la manière dont le programmeur utilise le langage et la bibliothèque, afin de garantir certaines propriétés de sécurité. Il s'agit principalement de contraintes au moment de la compilation, bien que dans la pratique, certaines vérifications puissent être mises en œuvre à l'aide de fonctionnalités de bibliothèque qui ajoutent une surcharge d'exécution limitée.

Au lieu d'introduire des constructions de langage entièrement nouvelles, les Profils limitent principalement les fonctionnalités et les utilisations existantes. L'idée est que vous pouvez activer un profil, et tout code qui l'utilise accepte de se conformer aux restrictions. Si vous ne l'activez pas, tout fonctionne comme avant. Il est donc rétrocompatible.

Jared Sumner a envisagé le C++ pour cette initiative de migration mais a finalement opté pour le Rust et ses avantages en matière de sécurisation de la mémoire.

Le vibe coding via Claude Fable a joué un rôle prépondérant dans cette migration en permettant de la boucler en quelques jours. De l’autre côté, cette initiative est la preuve que l’expertise humaine reste requise pour obtenir des produits logiciels utilisables et maintenables sur le long terme après mise à contribution de l’IA

La plus-value de l’utilisation de l’intelligence artificielle qui est en général mise en avant dans le processus du développement de logiciels est le gain de productivité. Le cas de la migration du code source Bun de Zig vers Rust ne fait pas exception étant donné que Jared Sumner rapporte que cette transition a été possible en seulement 11 jours contre une année pour une petite équipe d’ingénieurs lancée sur les 535 496 lignes de code de Zig, selon son estimatif.

Résultat :

  • le code en Rust produit par l'IA contient plus de 13 000 blocs unsafe, soit une proportion anormalement élevée comparée aux projets écrits par des humains. Par exemple, la gestion de la mémoire de bas niveau et les allocateurs personnalisés s'interfacent directement avec les pointeurs bruts via des constructions non sécurisées (unsafe). Elle gère la provenance des pointeurs et les appels explicites de désallocation par le biais des tables virtuelles (vtables) des allocateurs standard comme on peut le voir dans la section de code suivante :...


Code Rust : Sélectionner tout
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.

Une erreur dans cette actualité ? Signalez-nous-la !