Avant Projet Compose

previous up next contents
Précédent : Grands domaines d'application Remonter : Avant-projet COMPOSE, Conception de programmes Suivant : Résultats nouveaux



Logiciels

 

Schism, un évaluateur partiel applicatif

 Mots-clés : évaluation partielle, Scheme, ML, langage fonctionnel, ordre supérieur


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.

Tempo, un évaluateur partiel pour C

 Mots-clés : évaluation partielle, langage C, spécialisation à l'exécution


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.

Harissa, un environnement d'exécution pour le langage Java

 Mots-clés : compilation, 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.

JSCC, un compilateur de classes de spécialisation

  Mots-clés : compilation, Java, spécialisation


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 .

GAL, un langage et un générateur de pilotes de cartes graphiques

 Mots-clés : génie logiciel, langage dédié, XFree86, pilote de cartes graphiques


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



previous up next contents Précédent : Grands domaines d'application Remonter : Avant-projet COMPOSE, Conception de programmes Suivant : Résultats nouveaux