Publications

Mandel L., Pasteur C. (2013). Réactivité des systèmes coopératifs: le cas de ReactiveML. In JFLA'13. [HAL]
Le compilateur implémentant cette analyse peut être téléchargé ici ou testé en ligne.

La concurrence coopérative est un modèle de programmation très répandu. On peut par exemple l'utiliser en OCaml à travers des bibliothèques comme Lwt, Async ou Equeue. Il a de nombreux avantages tels que l'absence de courses critiques et des implantations légères et efficaces. Néanmoins, un des inconvénients majeurs de ce modèle est qu'il dépend de la discipline du programmeur pour garantir que le système est réactif : un processus peut empêcher les autres de s'exécuter.
ReactiveML est un langage qui étend OCaml avec des constructions de concurrence coopérative. Il propose une analyse statique, l'analyse de réactivité, qui permet de détecter les expressions qui risquent de produire des comportements non coopératifs. Dans cet article, nous présentons cette analyse statique qui se définit à l'aide d'un système de types et effets. Ainsi, comme le typage de données aide les programmeurs à détecter des erreurs d'exécution au plus tôt, l'analyse de réactivité aide à détecter des erreurs de concurrence.

Gérard L., Guatto A., Pasteur C. and Pouzet M. (2012). A Modular Memory Optimization for Synchronous Data-flow Languages. In LCTES'12.
Cet article a reçu le prix du meilleur article de la conférence. Une archive contenant le compilateur et les exemples de l'article est disponible ici.

The generation of efficient sequential code for synchronous data-flow languages raises two intertwined issues: control and memory optimization. While the former has been extensively studied, for instance in the compilation of LUSTRE and SIGNAL, the latter has only been addressed in a restricted manner. Yet, memory optimization becomes a pressing issue when arrays are added to such languages.
This article presents a two-level solution to the memory optimization problem. It combines a compile-time optimization algorithm, reminiscent of register allocation, paired with language annotations on the source given by the designer. Annotations express in-place modifications and control where allocation is performed. Moreover, they allow external functions performing in-place modifications to be safely imported. Soundness of annotations is guaranteed by a semilinear type system and additional scheduling constraints. A key feature is that annotations for well-typed programs do not change the semantics of the language: removing them may lead to less efficient code but will not alter the semantics.
The method has been implemented in a new compiler for a LUSTRE-like synchronous language extended with hierarchical automata and arrays. Experiments show that the proposed approach removes most of the unnecessary array copies, resulting in faster code that uses less memory.

Mallet, A., Pasteur, C., Herrb, M., Lemaignan, S., and Ingrand, F.-F. (2010). Genom3 : Building middleware-independent robotic components. In IEEE International Conference on Robotics and Automation.

The topic of reusable software in robotics is now largely addressed. Components based architectures, where components are independent units that can be reused accross applications, have become more popular. As a consequence, a long list of middlewares and integration tools is available in the community, often in the form of open-source projects. However, these projects are generally self contained with little reuse between them. This paper presents a software engineering approach that intends to grant middleware independance to robotic software components so that a clear separation of concerns is achieved between highly reusable algorithmic parts and integration frameworks. Such a decoupling let middlewares be used interchangeably, while fully benefitting from their specific, individual features. This work has been integrated into a new version of the open-source GenoM component generator tool: GenoM3.

Exposés

INRIA Rocquencourt Junior Seminar (27 feb. 2013) PDF AVI

Programming concurrency.

JFLA 2013 (3 fev. 2013) PDF

Réactivité des systèmes coopératifs: le cas de ReactiveML.

Synchron 2012 (19 nov. 2012) PDF

Reactivity analysis in ReactiveML.

LCTES'12 (12 juin 2012) PDF

A Modular Memory Optimization for Synchronous Data-flow Languages.

Séminaire des Thesards PPS-LIAFA (14 mars 2012) PDF

ReactiveML : Un langage de haut-niveau pour la programmation de systèmes concurrents.

Séminaire UEI - ENSTA Paristech (31 jan. 2012) PDF

ReactiveML : Un langage de haut-niveau pour la programmation de systèmes concurrents.

Synchron 2011 (28 nov. 2011) PDF

Clock domains in a reactive functional language.

GDR LTP/MTV2 2011 (28 oct. 2011) PDF

Domaines d'horloges dans un langage synchrone réactif fonctionnel.

Journées Synchronics (29 mars 2011) PDF

Parallelising ReactiveML.

Synchron 2010 (29 nov. 2010) PDF

Memory optimisation in a first-order dataflow synchronous language.

Genom3 (31 juil. 2009) Video

Cet exposé a été donné en juillet 2009 au LAAS-CNRS à Toulouse. Je présente (en francais) les résultats de mon stage de recherche, sous la direction d'Anthony Mallet, sur le développement d'un prototype de Genom3, un générateur de code pour la robotique autonome. Ce travail a ensuite fait l'objet d'une publication à ICRA2010.