previous up next top index
Précédent : Modularité Remonter : Modularité Suivant : Ajout d'une construction conditionnelle dans


Systèmes de modules

Participant : Xavier Leroy

Le travail de Xavier Leroy sur la formalisation de systèmes de modules dans le cadre des formalismes classiques de typage a débouché sur la conception et l'implémentation du système de modules du langage Objective Caml. Ce travail dote donc Caml d'un système de modules expressif (il atteint la puissance de celui de Standard ML, la référence en la matière), mais qui se prête cependant à la compilation séparée dans le style de Modula-2 (avec détection immédiate des erreurs de types inter-fragments, au contraire des modules de Standard ML, qui repoussent la détection de ces erreurs au moment de l'édition de liens).

Une année d'utilisation de cette implémentation a confirmé la viabilité du système de modules et a permis de le mettre à l'épreuve sur des programmes réalistes (le navigateur MMM, le proxy Web V6, le compilateur lui-même) et de le compléter sur certains points sous-estimés lors de l'étude théorique mais importants en pratique.

En parallèle, Xavier Leroy a poursuivi l'étude théorique de ce système de modules, en étudiant d'une part les conditions de complétude de l'algorithme de typage, et d'autre part en étendant la plupart de ses résultats antérieurs au cas des foncteurs applicatifs, une extension simple de son système qui augmente considérablement l'expressivité des foncteurs d'ordre supérieur [24].

Xavier Leroy a également publié une implémentation de référence de son système de modules, mettant en valeur sa grande indépendance vis-à-vis du langage de base [20].