Stage Master Recherche en Informatique --- 2011-2012
Etude préliminaire d'une machine virtuelle en héritage
multiple et typage statique
Encadrants : Roland Ducournau
Présentation du problème et Objectif du stage
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.
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.
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 a donné des résultats assez
satisfaisants.
L'objectif du présent stage est de réaliser un certain
nombre d'études préliminaires pour démontrer la
faisabilité d'une machine virtuelle et d'un compilateur JIT pour
un langage en héritage multiple :
- d'étudier les langages de bytecode existants (JAVA, .NET)
pour examiner dans quelles conditions ils pourraient être
utilisés pour un langage en héritage multiple ;
- d'étudier les implémentations existantes de machine
virtuelle 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 ;
- d'élaborer un protocole de compilation et recompilation
paresseuse d'un compilateur JIT pour héritage multiple ;
- de faire des simulations sur des benchmarks extraits de grands
programmes en héritage multiple : un benchmark extrait du
compilateur PRM existe déjà ;
- d'extraire de tels benchmarks de hiérarchies de classes de
programmes existants : les langages cible seraient SCALA et JAVA ;
- enfin, de spécifier 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,
le raffinement de classes est incompatible avec le chargement
dynamique.
Tout n'est pas faisable dans la durée d'un stage et il s'agira
de sélectionner 2 ou 3 points.
Le stage pourra vraisemblablement donner lieu à une poursuite en
thèse dans le cadre du projet PRM.
Références de l'équipe
- R.
Ducournau.
Implementing statically
typed
object-oriented programming
languages.
ACM Computing Surveys, to appear in
2009, (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 ( 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, 2011
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)
Voir aussi le site du
langage PRM.
Références sur des machines virtuelles