Encadreurs: Denis Caromel & David Sagnol
Organisme: INRIA et I3S
Adresse: Rte des Colles, B.P. 145 F-06903 Sophia Antipolis Cedex
Téléphone : 04 92 96 51 09
Email: caromel@unice.fr, sagnol@essi.fr
Matériels et logiciels utilisés: Dec Alpha (OSF/1), GNU C/C++, Front End C++
Description et objectifs du sujet:
C++// (``C++ parallel'') [1] est un langage à objets pour la programmation parallèle et distribuée développé par le projet SLOOP (projet commun INRIA et I3S). Il est développé à partir du standard européen EUROPA décrit [2] auquel participe SLOOP.
Le but d'Europa Working Group on Parallel C++ (Esprit Reference Number 9502) et de proposer et de définir un standard pour la programmation parallèle en C++. Des résultats très encourageants ont été obtenus; une proposition préliminaire est diffusée (http://www.lpac.ac.uk/europa), et une version synthétique a été publiée dans une conférence internationale dédiée à la programmation parallèle et distribuée [2]. Le langage C++// est conforme au standard proposé par Europa. Il est constitué d'une bibliothèque C++, et d'un pré-processeur qui implémente le standard.
Pour l'implantation du langage, il a été choisi de réaliser un pré-processeur non-intrusif (qui ne modifie pas le code source du programme) : on se contente d'ajouter des classes supplémentaires pour la phase de compilation. C++// utilise également un MOP (Meta-Object Protocol) qui permet d'obtenir des informations sur des objets lors de l'exécution. Il reste à réaliser la partie avant de ce pré-processeur.
Les étudiants utiliseront le Front End C++ d'EDG (Edison Design Group): il s'agira, à l'aide de l'arbre abstrait généré par EDG, de déterminer les classes qui ont besoin de méta-classes (en utilisant en particulier un algorithme simple de fermeture transitive), ainsi que des informations sur ces classes (functions membres, etc.). Ces informations sont ensuite écrites dans des fichiers selon un format existant. Lors de la deuxième phase de la compilation qui est déjà réalisée [3], ces fichiers sont utilisés pour générer automatiquement des classes C++ (proxies, etc.). Elles sont ensuite compilées avec les classes initiales et des librairies pour donner le programme C++//.
Note: Embauche possible après le stage sur CDD d'une durée d'au moins un an.