Précédent : Grands domaines d'application
Remonter : Avant-projet COMPOSE, Conception de programmes
Suivant : Résultats nouveaux
Contact: Charles Consel
Schism est un système d'évaluation partielle pour programmes fonctionnels d'ordre supérieur. C'est un évaluateur partiel générique qui permet de traiter une variété de langages applicatifs comme Scheme et ML. L'évaluation partielle des appels de fonctions est guidée par des annotations qui assurent la terminaison de ce traitement. Ces annotations sont produites automatiquement à partir des programmes. Schism repose sur une analyse de temps de liaison polyvariante. Cette analyse permet de collecter plusieurs descriptions abstraites de chaque fonction d'un programme pour tenir compte des différents contextes dans lesquels cette fonction est appelée.
Schism est disponible par le Web à l'adresse
http://www.irisa.fr/compose/schism.html
Il a été installé dans les universités d'Aarhus, de Carnegie
Mellon, d'Indiana, de Kansas State, de Stanford, de Yale et à
l'Oregon Graduate Institute. Il est utilisé pour l'enseignement
et la recherche. D'autre part, nous l'utilisons en interne pour
divers travaux tels que le traitement de programmes impératifs
par des outils fonctionnels.
Contact: Renaud Marlet
Nous avons conçu et développé un évaluateur partiel pour des programmes C, nommé Tempo [3,14,15,12]. Une innovation importante apportée par ce système est qu'il permet la spécialisation de programmes à la compilation et à l'exécution. Diverses analyses dont le but est de préparer la phase de spécialisation ont été conçues pour ce système. Etant donné la richesse du langage C et le fait qu'il ait été peu étudié dans le contexte de l'évaluation partielle, le développement de ces analyses a constitué une partie importante de notre travail. Les principales analyses de programmes sont les suivantes :
Pour s'assurer que les transformations de programmes offertes par Tempo produisent un programme très spécialisé, nous avons ciblé notre travail sur les programmes système qui sont très propices à la spécialisation. Nous avons ainsi pu recenser les besoins principaux de spécialisation existants dans ce domaine et introduire les analyses et transformations correspondantes. Tempo a été notamment validé par la spécialisation d'un code système faisant partie d'un produit commercial, en l'occurence l'implémentation de l'appel de procédure à distance (RPC) développé par Sun en 1984 [24,19]. Les gains en vitesse obtenus par spécialisation de ce code vont jusqu'à un facteur de 3,7 sur l'encodage des données.
En mars 1998, nous organiserons un cours de trois jours sur Tempo. Les participants à ce cours viennent à la fois du monde de la recherche et de l'industrie. A cette occasion, nous rendrons disponible la première version publique de notre spécialiseur.
Dans le futur, nous envisageons la transformation de Tempo en un moteur de spécialisation multi-langages. Pour ce faire, nous comptons développer un certain nombre de frontaux à Tempo pour nous permettre de traiter d'autres langages que C. Cette approche est actuellement expérimentée pour les langages Fortran, C++ et Java.
Contact: Gilles Muller
Harissa est un environnement d'exécution du langage Java qui intègre un interpréteur et un compilateur de code intermédiaire vers C [17]. Harissa permet de mélanger au sein d'une même application du code compilé et du code interprété. Il conjugue ainsi les avantages de performance et de flexibilité. Harissa a été développé pour permettre la spécialisation du langage Java ; son compilateur est utilisable en tant que frontal de Tempo.
Le code C produit par le compilateur d'Harissa est de 5 à 40
fois plus rapide que le code interprété par le JDK 1.0.2 de SUN.
Il est également plus rapide que la plupart des autres
traducteurs/compilateurs de recherche ou commerciaux. Une version
binaire d'Harissa est disponible via le Web à l'adresse
http://www.irisa.fr/compose/harissa/harissa.html
; plus de 600 utilisateurs d'Harissa sont actuellement recensés
dans le monde entier.
Contact: Gilles Muller
L'utilisation directe d'un moteur de spécialisation comme
Tempo nécessite la compréhension des concepts de base de
l'évaluation partielle tels que l'analyse de temps de liaison.
Afin de simplifier l'utilisation d'un spécialiseur, nous avons
introduit une approche déclarative à la spécialisation dans le
contexte de la programmation orientée objet (voir la
section ).
Dans notre approche, l'unité de déclaration est la classe de spécialisation [23]. Elle enrichit l'information concernant une classe existante en décrivant comment et quand la spécialisation doit être réalisée. À partir de ces informations, un compilateur produit des fichiers de contexte permettant de guider le spécialiseur. Une implémentation d'un compilateur des classes de spécialisation a été réalisée pour le langage Java. Ce compilateur, nommé JSCC, prend en entrée du source Java étendu avec les classes de spécialisation et produit du Java standard. JSCC est disponible via le Web à l'adresse http://www.irisa.fr/compose/sc .
Contact: Charles Consel
Le langage GAL est le résultat d'une expérience grandeur
réelle visant à valider notre schéma général de conception et
d'implémentation de générateurs d'applications basé sur la notion
de langage dédié (voir module ). GAL (Graphic
Adaptor Language) est un langage qui permet la description de
pilotes de cartes graphiques[22]. GAL a été
implémenté pour le serveur X Window SVGA XFree86 3.3 en
suivant chaque étape de la démarche que nous avons proposée.
L'implémentation finale contient notamment plusieurs analyses
(qui seraient impossible à mettre en oeuvre sur les pilotes
existants écrits en C) et un générateur automatique de
documentation. Cette implémentation est disponible sur le Web à
l'adresse
http://www.irisa.fr/compose/dsl/gal.html