Sujet de thèse en Informatique --- rentrée 2011
Etude, conception et réalisation d'une machine virtuelle en
héritage
multiple
Encadrant : Roland Ducournau
Ce sujet fait partie des sujets
prioritaires pour une allocation ministérielle en 2012.
Présentation du problème et Objectif de la
thèse
Dans le cadre des recherches sur les techniques
d'implémentations des langages à objets et le langage PRM (thèses
de Jean Privat et de Floréal Morandat) nous avons
développé une technique d'implémentation
basée sur le hachage parfait [2,5].
Les tests réalisés sur le compilateur PRM montrent que
cette technique donne de très bon résultats pour le test
de sous-typage et l'invocation de méthodes [3].
Comme elle est aussi compatible avec l'hypothèse du monde ouvert
et le chargement dynamique, c'est une technique qui devrait donner de
bons résultats pour l'implémentation des interfaces en
Java, mais son usage dans la machine virtuelle d'un langage en
héritage multiple est plus problématique. Cependant une
première simulation [6] a donné des résultats
assez
satisfaisants.
L'objectif de cette thèse est de concevoir un protocole de
compilation-recompilation pour un compilateur JIT (just in time), et
d'implémenter une machine virtuelle pour un langage en
héritage multiple (PRM, ou un avatar de PRM), utilisant le
hachage parfait et ce protocole de compilation.
La question de ce protocole de compilation-recompilation est
elle-même nouvelle : les compilateurs en utilisent un,
forcément, mais il n'est jamais explicité ce qui fait des
systèmes existants des usines à gaz.
Le sujet est ambitieux, mais l'expérience des 2 thèses
précédentes montre diverses étapes sont
identifiées :
- études des langages de bytecode existants (JAVA, .NET)
pour examiner dans quelles conditions ils pourraient être
utilisés pour un langage en héritage multiple ;
- études des implémentations existantes de machines
virtuelles pour voir s'il en existe qui sont assez modulaires pour
être réutilisées pour un langage en héritage
multiple avec une implémentation basée sur le hachage
parfait ;
- élaboration d'un protocole de compilation et recompilation
paresseuse d'un compilateur JIT pour héritage multiple ;
- simulations de ce protocole sur des benchmarks extraits de grands
programmes en héritage multiple : un benchmark extrait du
compilateur PRM existe déjà ;
- extraction de tels benchmarks de hiérarchies de classes de
programmes existants : les langages cible seraient SCALA et JAVA ;
- spécification d'une transformation de programme PRM
permettant de générer du PRM sans raffinement de classes
à partir des hiérarchies de modules actuelles : en effet,
l'une des spécificités de PRM, le raffinement de classes,
est incompatible avec le chargement
dynamique.
Variantes
Ce premier sujet est la suite d'un premier
sujet de stage de Master dans un contexte de typage statique et d'héritage
multiple.
Une variante est possible dans le contexte du langage Smalltalk,
c'est-à-dire en héritage
simple et typage dynamique : c'est la suite d'une autre sujet de stage de Master.
Le choix dépendra des gouts et compétences du candidat.
Références du projet PRM (sélection)
- R.
Ducournau.
Implementing statically
typed
object-oriented programming
languages.
ACM Computing Surveys,
43
(4), to
appear in
2011, (pdf file)
- R. Ducournau.
Perfect
hashing as an almost
perfect subtype test.
ACM Transactions on
Programming Languages and Systems, 30(6), 2008 (56p) (pdf
file, doi)
- R. Ducournau, F.
Morandat, J. Privat.
Empirical assessment of
object-oriented implementations with multiple inheritance and static
typing.
In Proc. OOPSLA'09. ACM Press, 2009.
- R. Ducournau, J. Privat.
Meta-Modeling
Semantics
of
Multiple
Inheritance
Science of Computing Programming,
40 pages (in press, pdf
file)
doi:
10.1016/j.scico.2010.10.006
- R. Ducournau, F. Morandat.
Perfect class hashing and
numbering for object-oriented implementation
Software Practice & Experience,
32 pages, John Wiley & Sons, 2010 (in press)
doi: 10.1002/spe.1024
- R. Ducournau, F.
Morandat.
Towards a full multiple
inheritance virtual machine.
MASPEGHI/ICOOOLPS workshop at
ECOOP'2010. (slides .pdf files)
une version longue est en cours de soumission
Voir aussi le site du
langage PRM.