Generative Kompilierung: On-the-Fly-Compiler-Feedback während der KI-Codegenerierung
Generative Compilation: On-the-Fly Compiler Feedback as AI Generates Code
July 15, 2026
Autoren: Niels Mündler-Sasahara, Hristo Venev, Dawn Song, Martin Vechev, Jingxuan He
cs.AI
Zusammenfassung
Sprachen mit reichhaltiger statischer Semantik, wie Rust, bieten stärkere Garantien für KI-generierten Code, doch ihre Strenge erschwert die Generierung. Fertige Compiler können nach der Generierung nützliches Feedback geben, leiten aber keine Zwischenschritte der Generierung an, wie sie etwa bei der autoregressiven Dekodierung in großen Sprachmodellen (LLMs) auftreten. Constrained Decoding greift früher ein, indem es während des Samplings ungültige Token zurückweist, erfordert jedoch White-Box-Modellzugriff und eine aufwändige Neuimplementierung für semantische Einschränkungen.
Wir führen die generative Kompilierung ein – den ersten Ansatz, um Compiler-Feedback zu partiellen Programmen während der Generierung zu erhalten. Das zentrale technische Hilfsmittel ist ein Sealor: eine leichte, überwiegend syntaxgesteuerte Transformation, die partielle Programme in vollständige Programme umwandelt, die Standardcompiler diagnostizieren können. Es ist so konzipiert, dass partiell vervollständigbare Programme nie abgelehnt werden, während genügend Codekontext erhalten bleibt, um echte Sackgassen frühzeitig zu erkennen. Wir konstruieren einen solchen Sealor für einen rust-ähnlichen Kernkalkül und beweisen, dass er diese Eigenschaften erfüllt – alles in Lean formalisiert. Wir erweitern ihn zum ersten Partialprogramm-Prüfer für echtes Rust. Wir evaluieren unsere Methode an anspruchsvollen Rust-Codeaufgaben auf Repository-Ebene, sowohl mit modernen Black-Box-Modellen als auch mit Open-Weight-Modellen. Wir zeigen, dass generative Kompilierung im Vergleich zu standardmäßigem Post-Generations-Feedback die Anzahl nicht kompilierender Ausgaben reduziert und die funktionale Korrektheit verbessert. Dies gelingt, indem sie ein breites Spektrum von Fehlern nahe ihrer Quelle und früh während der Generierung erkennt, wodurch Fehlerkaskaden reduziert und gezielte Diagnosen ermöglicht werden. Im weiteren Sinne ist generative Kompilierung ein Schritt dahin, Compiler zu Bürgern erster Klasse in der KI-gestützten Programmierung zu machen, die während der Generierung aktiv sind, anstatt eine separate Nachkontrolle darzustellen.
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.