Projet Para

previous up next contents
Précédent : Présentation générale et objectifs Remonter : Projet PARA, Parallélisme Suivant : Grands domaines d'application



Fondements scientifiques

 

Analyse statique de programmes

L'analyse statique vise à prédire statiquement et automatiquement les comportements possibles des programmes, sans les exécuter. La découverte automatique du comportement exact des programmes étant indécidable, on cherche ici à découvrir des propriétés approchées des programmes. Ces propriétés sont typiquement utilisées pour optimiser les programmes on encore pour les vérifier.

L'interprétation abstraite est un cadre théorique initié par P. Cousot et R. Cousot [CC79] permettant de justifier formellement la correction d'algorithmes d'analyse statique, de spécifier constructivement de nouvelles méthodes d'analyse et aussi de donner un critère de complétude. Par exemple, la notion d'approximation des propriétés exactes des programmes est ici formalisée par des correspondances de Galois ou encore par des opérateurs de fermeture sur des treillis complets.

Dans ce cadre, notre agenda scientifique consiste à concevoir de nouveaux algorithmes d'analyse statique pouvant s'appliquer de manière effective aux programmes industriels, qui sont caractérisés par leur grande taille, ainsi que par des traits de langage non triviaux, comme les pointeurs ou bien la concurrence.

Sur le plan théorique, il s'agit de prouver formellement la correction de ces algorithmes, d'étudier leur complexité, et le cas échéant de démontrer leur complétude. Sur le plan expérimental, il s'agit de quantifier l'applicabilité, l'efficacité et la précision de ces nouveaux algorithmes.

Le join-calcul

La théorie de la concurrence existe depuis 15 ans à l'initiative du CCS de R. Milner (Cambridge/Edimbourg) [Mil89]. En 89, avec J. Parrow et D. Walker, il a introduit la notion de réseaux reconfigurables, et en a fait la théorie, théorie reprise et affinée par D. Sangiorgi (Edimbourg/INRIA Sophia). Les calculs de processus ont fleuri pendant cette époque. Nous nous intéressons principalement au pi-calcul[MPW92], dont la théorie de l'équivalence est loin d'être simple: bisimulations early, late, open, etc.

Nous avons introduit un nouveau calcul de processus, le join-calcul [FG96,FGL+96], qui est facilement implémentable dans tout système distribué, car il ne nécessite aucun protocole sophistiqué, tels que ceux qui permettent de faire du consensus distribué.

Un langage est construit au dessus de ce nouveau calcul, le langage du join-calcul. Dans ce langage, la synchronisation a une écriture proche de celle de l'appel des fonctions dans les langages fonctionnels, le langage est d'ailleurs interfaçable avec le système Caml. Notre projet s'intéresse aux développements de compilateurs et d'environnements pour un tel langage. Une toute première version est maintenant disponible sur le réseau. Une deuxième version est en cours d'écriture pour tenir compte d'un meilleur interfaçage avec Caml et pour détecter les erreurs asynchrones, comme les pannes dues à la déconnexion d'un site. La détection d'erreurs en milieu asynchrone étant clairement indécidable, il est nécessaire d'ajouter un minimum d'opérateurs synchrones à notre modèle.

Le contexte scientifique du projet bénéficie également des travaux sur la compilation des langages fonctionnels, tels que Caml où se posent des problèmes assez proches comme le filtrage ou l'inférence de types.



previous up next contents Précédent : Présentation générale et objectifs Remonter : Projet PARA, Parallélisme Suivant : Grands domaines d'application