Book · Chapter 17

15. HIR, MIR et pipeline

15. HIR, MIR et pipeline

La compilation est un pipeline. La comprendre vous fait gagner un temps énorme quand vous déboguez un programme ou un bug du compilateur.

Les grandes étapes

Parsing et AST : le texte devient structure. HIR : les formes sont normalisées. MIR : le programme est prêt pour la génération. Backend : le binaire est produit.

Pourquoi cela compte

Quand un bug apparaît, savoir dans quel étage il se trouve réduit immédiatement l’espace de recherche. Vous pouvez poser de meilleures questions et éviter les hypothèses floues.

Méthode de diagnostic

Reproduire le problème. Localiser l’étape qui change l’information. Inspecter les sorties intermédiaires.

HIR : rendre explicite

Le HIR simplifie la structure pour rendre les décisions explicites. C’est la première étape où le compilateur commence à “comprendre” ce que vous avez écrit.

MIR : préparer le terrain

Le MIR est le niveau où les transformations deviennent mécaniques. L’objectif est d’obtenir une forme qui se traduit proprement vers le backend.

À retenir

Comprendre la pipeline, même à haut niveau, est une compétence centrale pour travailler proche de la machine.

Exemple guidé : diagnostiquer un bug

Supposez qu’un match se compile mal. Essayez de localiser si le bug est dans le parsing, le HIR, ou le MIR. Cette méthode réduit drastiquement le temps de debug.

Checklist pipeline

Vous savez reproduire le bug. Vous savez isoler l’étape fautive. Vous savez vérifier l’output intermédiaire.

Exercice : tracer une erreur

Simulez une erreur de parsing, puis une erreur de type. Notez comment elles apparaissent dans le pipeline. Cette observation vous aide à classifier rapidement les bugs.

Code complet (API actuelle)

Exemple conceptuel : compiler en mode normal, puis activer les sorties intermédiaires si votre driver les expose.

vitte build src/main.vit

API idéale (future)

Un mode --explain-pipeline qui enregistre automatiquement les étapes dans un dossier daté.