Les LLM peinent avec le Rust unsafe : six mois de tests révèlent des erreurs critiques
L'auteur a fait écrire du code Rust unsafe à des LLM pendant six mois dans des projets réels et analysé les résultats avec Miri. Les modèles se trompent de façon constante : aliasing, provenance, layout dans la gestion de la mémoire, ManuallyDrop oublié, courses de données dans le FFI, Send/Sync incorrects et mémoire non initialisée. Chaque erreur peut être reproduite et corrigée.
Traité par IA depuis Habr AI ; édité par Hamidun News
L'auteur a fait écrire du code Rust unsafe à des LLM pendant six mois dans des projets en production, et a vérifié chaque bloc avec Miri et des sanitizers. Le résultat est décevant : les modèles commettent les mêmes erreurs, de façon prévisible et constante.
Sept catégories d'erreurs des LLM en Rust unsafe
Les modèles se trompent sans cesse aux mêmes endroits :
- Aliasing — violation de la règle sur les références qui ne se chevauchent pas
- Provenance — tentatives d'utiliser des pointeurs obtenus de manière incorrecte
- Layout dans alloc/dealloc — incohérence de taille et d'alignement entre l'allocation et la libération
- ManuallyDrop — oubli d'appeler drop, ou utilisation de l'objet après drop
- Courses dans les callbacks FFI — race conditions lors d'appels de fonctions C depuis des threads
- Send/Sync manuels — implémentation incorrecte des traits de sûreté entre threads
- Mémoire non initialisée — traitement de données non initialisées comme si elles l'étaient
Pourquoi Miri a mis les problèmes au jour
Miri est un interpréteur Rust qui traque les comportements indéfinis. Quand un LLM génère du code contenant des violations peu visibles au premier regard (par exemple, un pointeur temporaire à la provenance incorrecte), le compilateur ordinaire le laisse passer, alors que Miri l'attrape. Sous les sanitizers (AddressSanitizer, ThreadSanitizer), des courses et des use-after-free sont apparus, qui peuvent ne pas se manifester dans des tests ordinaires.
«
Chaque catégorie est accompagnée d'un exemple minimal et d'un correctif » — l'auteur montre qu'il ne s'agit pas de simples observations, mais de schémas d'erreurs reproductibles.
Ce que cela signifie
Les LLM ne sont pas encore prêts à écrire du Rust unsafe sans contrôle humain. Ils génèrent bien la syntaxe et la logique générale, mais se trompent systématiquement dès qu'il s'agit de mémoire et de multithreading. Pour le code critique (logiciels système, bibliothèques système), le Rust unsafe produit par des modèles doit impérativement être vérifié sous Miri.
Questions clés sur cet article
Que sait-on sur Sept catégories d'erreurs des LLM en Rust unsafe ?
Les modèles se trompent sans cesse aux mêmes endroits : Aliasing — violation de la règle sur les références qui ne se chevauchent pas Provenance — tentatives d'utiliser des pointeurs obtenus de manière incorrecte Layout dans alloc/dealloc — incohérence de taille et d'alignement entre l'allocation et la libération ManuallyDrop — oubli d'appeler drop, ou utilisation de l'objet après drop Courses dans les callbacks FFI — race conditions lors d'appels de fonctions C depuis des threads Send/Sync manuels — implémentation incorrecte des traits de sûreté entre threads Mémoire non i
Pourquoi Miri a mis les problèmes au jour?
Miri est un interpréteur Rust qui traque les comportements indéfinis. Quand un LLM génère du code contenant des violations peu visibles au premier regard (par exemple, un pointeur temporaire à la provenance incorrecte), le compilateur ordinaire le laisse passer, alors que Miri l'attrape. Sous les sanitizers (AddressSanitizer, ThreadSanitizer), des courses et des use-after-free sont apparus, qui peuvent ne pas se manifester dans des tests ordinaires. « Chaque catégorie est accompagnée d'un exemple minimal et d'un correctif » — l'auteur montre qu'il ne s'agit pas de simples o
Que sait-on sur Ce que cela signifie ?
Les LLM ne sont pas encore prêts à écrire du Rust unsafe sans contrôle humain. Ils génèrent bien la syntaxe et la logique générale, mais se trompent systématiquement dès qu'il s'agit de mémoire et de multithreading. Pour le code critique (logiciels système, bibliothèques système), le Rust unsafe produit par des modèles doit impérativement être vérifié sous Miri.
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
L'essentiel de l'IA — une fois par semaine
Sept actus qui ont vraiment compté, choisies à la main. Sans bruit ni communiqués.
C'est fait ! Vérifiez votre boîte mail pour la confirmation.