DRUID - Métacompilation des compilateurs JIT de base

Les machines virtuelles (VM) combinent des interprètes et des compilateurs à la volée (JIT) pour obtenir de bonnes performances.Cependant, maintenir plusieurs moteurs d'exécution augmente considérablement les coûts de développement et de maintenance.Alors que des travaux antérieurs se sont intéressés à la génération automatique de compilateurs JIT optimisants, la question de savoir si la métacompilation peut être appliquée efficacement aux compilateurs JIT de base, qui privilégient une compilation rapide et un temps de préchauffage réduit, restait ouverte.Dans cette thèse, nous présentons textbf{Druid, un métacompilateur source-à-source avant d'exécution qui génère un compilateur JIT de base} directement à partir des définitions de l'interpréteur.Les développeurs du langage guident le processus de métacompilation à l'aide d'annotations et d'intrinsèques, pendant que Druid cible une infrastructure JIT existante afin de réutiliser des optimisations et des composants d'exécution éprouvés, offrant ainsi des performances de préchauffage compétitives.Nous avons appliqué Druid à la machine virtuelle Pharo utilisée en production, et évalué les performances du compilateur JIT généré automatiquement.Le JIT de base obtenu est xTimes{1.8} plus rapide que l'interpréteur et atteint {70%} des performances d'un compilateur JIT écrit manuellement et amélioré depuis plus de dix ans.Cela n'a nécessité que 60 modifications ponctuelles dans l'interpréteur, démontrant que Druid réduit considérablement l'effort d'ingénierie requis pour maintenir et faire évoluer les VM de langage.Les compilateurs JIT de base doivent compiler rapidement tout en appliquant des optimisations essentielles.Une stratégie couramment utilisée est l'interprétation abstraite à la compilation, qui réalise en un seul passage l'allocation de registres, la propagation de constantes et l'ordonnancement des instructions.Cependant, il est difficile d'isoler et de quantifier les bénéfices de cette technique en comparant des compilateurs développés indépendamment.Avec Druid, nous avons généré automatiquement plusieurs variantes du compilateur JIT de Pharo afin d'évaluer expérimentalement l'impact de l'interprétation abstraite dans des conditions contrôlées.Nous utilisons la métacompilation pour: (a) réduire l'effort d'expérimentation et (b) produire des variantes de compilateurs comparables, réduisant le bruit lié aux différences implémentations.Nos résultats montrent que l'interprétation abstraite réduit la taille du code machine de {12%} et améliore la vitesse d'exécution de {10%} en moyenne (jusqu'à {30%}), sans augmentation mesurable du temps de compilation JIT par rapport à une approche de traduction directe.

Authors

Publication Details

Journal
SPIRE - Sciences Po Institutional REpository
Published
2025-11-28
Primary Topic
Logic, programming, and type systems
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

DRUID - Métacompilation des compilateurs JIT de base

Nahuel Palumbo
SPIRE - Sciences Po Institutional REpository
Logic, programming, and type systems
article

DRUID - Métacompilation des compilateurs JIT de base

Nahuel Palumbo
article en

Abstract

Les machines virtuelles (VM) combinent des interprètes et des compilateurs à la volée (JIT) pour obtenir de bonnes performances.Cependant, maintenir plusieurs moteurs d'exécution augmente considérablement les coûts de développement et de maintenance.Alors que des travaux antérieurs se sont intéressés à la génération automatique de compilateurs JIT optimisants, la question de savoir si la métacompilation peut être appliquée efficacement aux compilateurs JIT de base, qui privilégient une compilation rapide et un temps de préchauffage réduit, restait ouverte.Dans cette thèse, nous présentons textbf{Druid, un métacompilateur source-à-source avant d'exécution qui génère un compilateur JIT de base} directement à partir des définitions de l'interpréteur.Les développeurs du langage guident le processus de métacompilation à l'aide d'annotations et d'intrinsèques, pendant que Druid cible une infrastructure JIT existante afin de réutiliser des optimisations et des composants d'exécution éprouvés, offrant ainsi des performances de préchauffage compétitives.Nous avons appliqué Druid à la machine virtuelle Pharo utilisée en production, et évalué les performances du compilateur JIT généré automatiquement.Le JIT de base obtenu est xTimes{1.8} plus rapide que l'interpréteur et atteint {70%} des performances d'un compilateur JIT écrit manuellement et amélioré depuis plus de dix ans.Cela n'a nécessité que 60 modifications ponctuelles dans l'interpréteur, démontrant que Druid réduit considérablement l'effort d'ingénierie requis pour maintenir et faire évoluer les VM de langage.Les compilateurs JIT de base doivent compiler rapidement tout en appliquant des optimisations essentielles.Une stratégie couramment utilisée est l'interprétation abstraite à la compilation, qui réalise en un seul passage l'allocation de registres, la propagation de constantes et l'ordonnancement des instructions.Cependant, il est difficile d'isoler et de quantifier les bénéfices de cette technique en comparant des compilateurs développés indépendamment.Avec Druid, nous avons généré automatiquement plusieurs variantes du compilateur JIT de Pharo afin d'évaluer expérimentalement l'impact de l'interprétation abstraite dans des conditions contrôlées.Nous utilisons la métacompilation pour: (a) réduire l'effort d'expérimentation et (b) produire des variantes de compilateurs comparables, réduisant le bruit lié aux différences implémentations.Nos résultats montrent que l'interprétation abstraite réduit la taille du code machine de {12%} et améliore la vitesse d'exécution de {10%} en moyenne (jusqu'à {30%}), sans augmentation mesurable du temps de compilation JIT par rapport à une approche de traduction directe.

SPIRE - Sciences Po Institutional REpository
Industry, innovation and infrastructure
Openalex Percentile: Top 15%
Logic, programming, and type systems
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.