Le langage Rust a largement gagné en visibilité ces dernières années, au point qu’on le retrouve désormais dans le noyau de Linux. Pour de nombreux acteurs de la filière du développement de logiciels, c’est le moment d’arrêter d’initier de nouveaux projets en C ou en C++ et de passer au Rust compte tenu des avantages qu’il offre en matière de sécurisation des logiciels. Un autre pan des réflexions en cours concerne la conversion des anciennes bases de code C vers le Rust. Canonical annonce le financement d’une thèse de doctorat en la matière. Les chercheurs entendent mettre l’intelligence artificielle à profit pour atteindre leur objectif
L’équipe de recherche propose un modèle neurosymbolique hybride qui combine l'apprentissage automatique avec des méthodes classiques d'analyse, de tests de résistance et de vérification formelle. Le flux de travail se divise en quatre étapes principales :
- Primo, la phase de programmation divise le dépôt massif en fragments indépendants, en conservant le fil sémantique nécessaire concernant les types et les dépendances.
- Deuxio, la phase de traduction, qui utilise des modèles de langage optimisés avec des bibliothèques de conversions C vers Rust connues pour générer des abstractions correctes au lieu d'une simple copie syntaxique.
- La troisième étape part du principe que le code généré n'est pas fiable tant que les techniques de fuzzing et les vérifications d'équivalence n'ont pas démontré qu'il se comporte exactement comme le code C original.
- Enfin, un système de débogage localise les échecs de validation et applique des corrections précises à l'aide de techniques de réparation symbolique.
L’objectif est de pallier à certaines limitations en matière de conversion de code C vers le Rust. En effet, la réécriture manuelle d'un logiciel écrit en C comporte en réalité un risque technique important. Les projets établis contiennent des décennies de corrections de bogues, d'optimisations de performances et de connaissances opérationnelles qui sont souvent perdues lors du processus de refactorisation.
Il est vrai que les outils traditionnels de traduction de code source peuvent traiter de grands volumes de données, mais ils génèrent du code Rust non sécurisé qui conserve des structures artificielles héritées du C. D'autre part, les outils d'IA disponibles peuvent générer du code à partir de petits exemples, mais ils échouent à traiter des dépôts entiers en raison de leurs volumes importants et finissent par perdre l'idée centrale, sans pour autant offrir de garanties que le programme résultant conservera le comportement du code original.
L’approche neurosymbolique proposée par les chercheurs de l’université de Bristol entend corriger des tares comme celles observées avec la récente migration de la base de code Bun de C vers le RustUbuntu Funding Automated C to Rust Translation Research
— The Lunduke Journal (@LundukeJournal) August 21, 2026
Ubuntu parent Canonical is "funding a [3 year] University of Bristol PhD to translate large C repos into safe, equivalent Rust". pic.twitter.com/WPJVGqd3UJ
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 la tête derrière l’initiative 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.