Proposition de projets de diplôme
Professeur Ch. Rapin
Laboratoire de Compilation
Ecole Polytechnique Fédérale de Lausanne
Philippe Altherr
Alessandro Vernet
Préambule
La courante proposition se décompose en deux parties. Chacune
d'entre elles pourra donner suite à un projet de diplôme.
Ces deux parties sont à la fois:
- liées, car ensemble, elles constituent un tout;
- indépendantes, car la réalisation de chacune des
deux parties aboutira sur un composant logiciel tout à fait fonctionnelle.
Le schéma ci-dessous donne une vue d'ensemble des différentes
parties constituantes des deux projets proposés.
- Les parties déjà existantes sont représentées
dans un rectangle non hachuré.
- Les parties qui seront développées dans le cadre du premier
projet (compilateur Haskell optimisant) sont représentées
avec une hachure nord-ouest sud-est.
- Les parties qui seront développées dans le cadre du deuxième
projet (génération de bytecode Java) sont représentées
avec une hachure nord-est sud-ouest.


Partie I - Compilateur Haskell optimisant, Philippe Altherr
L'objectif de ce projet sera de réaliser un compilateur Haskell
optimisant générant du lambda calcul. Le système
sera peut-être basé sur le Glasgow Haskell Compiler (voir
références ci-dessous). Il permettra en plus à l'utilisateur
de demander au compilateur si certaines propriétés
des fonctions contenues dans son code source sont vérifiées
(par exemple commutativité des paramètres d'une fonction).
Ces informations seront bien entendu exploitées automatiquement
lors de la compilation de manière à générer
du code le plus efficace possible.
Partie II - Génération de bytecode Java, Alessandro Vernet
Cette partie a été décomposée en plusieurs
étapes qui devront être réalisées dans l'ordre
indiqué. La réalisation de l'ensemble des étapes dépasse
peut-être le cadre d'un projet de diplôme.
- Étape I - Il s'agira de compiler du lamba calcul pour
générer du bytecode Java. Le système acceptera
certainement en entrée le même lambda calcul que celui utilisé
en interne par le Glasgow Haskell Compiler ou une forme légèrement
modifiée de ce dernier. Il acceptera également en entrée
le lamda calcul généré par le compilateur CAML.
- Étape II - Il s'agira de concevoir et d'implémenté
un modèle qui permettrait à un programme écrit
en Haskell de manipuler des instances de classes dont le code source
est écrit en Java. Si possible on évitera de faire des
modifications au compilateur Haskell (le modèle serait alors supporté
par une bibliothèque écrite en Haskell ainsi que le nécessaire
au niveau du générateur de bytecode Java). Si jamais une
modification du compilateur Haskell se révèle nécessaire,
cette dernière sera implémentée en collaboration avec
l'étudiant réalisant la première partie. L'intérêt
de ce modèle sera notamment de permettre à un programme d'utiliser
la bibliothèque standard Java. Il sera alors possible d'écrire
des logiciels portables en Haskell ayant une interface graphique
(via l'AWT ou les JFC), utilisant le stack TCP/IP, etc.
- Étape III - Il s'agira de modifier ou d'apporter les
adaptations nécessaires au programme réalisé dans
les précédantes étapes de manière à
ce que le générateur de bytecode Java puisse accepter
en entrée non seulement du lambda calcul mais également
le format intermédiaire utilisé par compilateur Newton
développé au LCO (fichiers post). Le runtime Newton, écrit
en C dans l'implémentation actuelle, devra être réécrit
en Java.
- Étape IV - Il s'agira d'écrire un compilateur
prenant en entrée le lambda calcul accepté par le
générateur bytecode réalisé aux étapes
I et II. Ce compilateur générera en sortie le format intermédiaire
utilisé dans le compilateur Newton (fichiers POST). Le présent
compilateur pourra être couplé d'une part au Glasgow Haskell
Compiler ou au compilateur CAML utilisés comme frontend,et au générateur
de code C du compilateur Newton (ccode generator), utilisé comme
backend, de manière à générer du code exécutable
natif pour Digital UNIX, Linux, OS/2, Windows NT, etc à partir
des langages Haskell et CAML.
Nous pensons que les deux premières étapes pourront être
concrêtement réalisées lors d'un projet de diplôme.
Références
| For comments, additions, corrections, gripes, kudos, etc. please send
e-mail to avernet@di.epfl.ch.
Copyright © 1995-1997 by Alessandro Vernet. All Rights Reserved.
|
 |