ChatPaper.aiChatPaper

Compilation générative : retour du compilateur à la volée pendant que l'IA génère du code

Generative Compilation: On-the-Fly Compiler Feedback as AI Generates Code

July 15, 2026
Auteurs: Niels Mündler-Sasahara, Hristo Venev, Dawn Song, Martin Vechev, Jingxuan He
cs.AI

Résumé

Les langages dotés d’une sémantique statique riche, comme Rust, offrent de meilleures garanties pour le code généré par IA, mais leur rigueur rend la génération plus difficile. Les compilateurs prêts à l’emploi peuvent fournir un retour utile après génération, mais ils ne guident pas les étapes intermédiaires de génération, comme celles lors du décodage autorégressif des LLM. Le décodage contraint intervient plus tôt en rejetant les jetons invalides pendant l’échantillonnage, mais nécessite un accès au modèle en boîte blanche et une réimplémentation coûteuse pour les contraintes sémantiques. Nous introduisons la compilation générative, la première approche permettant d’obtenir un retour du compilateur sur des programmes partiels pendant la génération. Le dispositif technique central est un sealor : une transformation légère, principalement guidée par la syntaxe, qui convertit des programmes partiels en programmes complets que les compilateurs standards peuvent diagnostiquer. Il est conçu de sorte que les programmes partiels potentiellement complétables ne soient jamais rejetés, tout en préservant suffisamment de contexte de code pour détecter rapidement les impasses réelles. Nous construisons un tel sealor sur un calcul de type Rust de base et prouvons qu’il satisfait ces propriétés, le tout mécanisé dans Lean. Nous l’étendons au premier vérificateur de programmes partiels pour Rust réel. Nous évaluons notre méthode sur des tâches de codage Rust difficiles au niveau du dépôt, à la fois sur des modèles frontières en boîte noire et à poids ouverts. Nous montrons que la compilation générative réduit les sorties non compilables et améliore la correction fonctionnelle, par rapport au retour standard post-génération. Ceci est réalisé en détectant un large éventail d’erreurs près de leur source et tôt pendant la génération, réduisant ainsi les cascades d’erreurs et permettant des diagnostics ciblés. Plus largement, la compilation générative est un pas vers la reconnaissance des compilateurs comme citoyens de première classe de la programmation assistée par IA, actifs pendant la génération, plutôt qu’une vérification post-génération distincte.
English
Languages with rich static semantics, such as Rust, provide stronger guarantees for AI-generated code, but their strictness makes generation more difficult. Off-the-shelf compilers can provide useful feedback post-generation, but does not guide intermediate generation steps, such as those during autoregressive LLM decoding. Constrained decoding intervenes earlier by rejecting invalid tokens during sampling, but requires white-box model access and costly reimplementation for semantic constraints.We introduce generative compilation, the first approach to obtaining compiler feedback on partial programs during generation. The core technical device is a sealor: a lightweight, mostly syntax-guided transformation that converts partial programs into complete ones that standard compilers can diagnose. It is designed such that possible-to-complete partial programs are never rejected, while preserving enough code context to catch genuine dead ends early. We construct such a sealor on a core Rust-like calculus and prove that it satisfies these properties, all mechanized in Lean. We extend it to the first partial-program checker for real Rust. We evaluate our method on challenging repository-level Rust coding tasks, across both frontier black-box and open-weight models. We show that generative compilation reduces non-compiling outputs and improves functional correctness, relative to standard post-generation feedback. It does so by detecting a broad range of errors close to their source and early during generation, thereby reducing errors cascades and enabling focused diagnostics. More broadly, generative compilation is a step toward making compilers a first-class citizen of AI-assisted programming active during generation, rather than a separate post-generation check.