Against Query Based Compilers
Un compilateur fondé sur des requêtes applique l'idée des calculs incrémentiels à la compilation, et son exécution peut être vue comme un graphe d'appels de fonctions. Si une entrée change, il suffit de recomposer les résultats uniquement sur le chemin menant de l'entrée modifiée à la requête racine, ce qui permet des mises à jour locales. Le texte introduit l’« early cutoff » qui permet d'arrêter la propagation des changements lorsque le résultat n'est pas affecté. Il est aussi montré que l'effort de mise à jour ne peut pas être inférieur à l'ampleur du changement dans le résultat, ce qui limite les gains potentiels et dépend fortement de la structure des dépendances. Des comparaisons entre Zig et Rust illustrent l'impact des possibilités d'analyse par fichier isolé par rapport à l'expansion des macros, et le texte décrit un schéma multi‑étapes impliquant parsing, résolution, évaluation de signatures, type-checking et génération pour aboutir à un binaire finalement lié.