I am a third-year PhD student in the PARKAS team of the Computer Science department of the École normale supérieure in Paris. I work on the design and implementation of programming languages for embedded multiprocessors, under the supervision of Albert Cohen, Marc Pouzet and Louis Mandel. Before that, I did a master in CS/EE in Université Pierre et Marie Curie.

During my thesis, I focus on the design and implementation of a language dedicated to high-performance stream-processing systems. More precisely, I try to extend the ideas found in synchronous languages such as Lustre and Lucy-n while keeping their good properties. I believe that it is a nice research area that involves several distinct computer science traditions:

  • Functional programming and denotational semantics
  • Digital synchronous circuits and latency-insensitive design
  • Optimization and in particular cyclic scheduling
  • Parallel language runtimes and relaxed memory programming

I am currently working on a compiler prototype for a language embodying several of my ideas. A preliminary release should be available here soon!


  • Bursty Kahn Networks and Integer Clocks [PDF, in French]

    A. Guatto and L. Mandel (in JFLA 2014)

    Data-flow synchronous languages à la Lustre offer an high-level equational formalism dedicated to the design and implementation of real-time systems. These languages have traditionally been restricted to critical systems with low computational demand; in particular, the generated code does not usually feature loops.

    Lucy-n is a recent derivative of Lustre tailored to multimedia processing. In this paper, we propose an extension of Lucy-n's semantics where streams transport bursts of values rather than single scalars, and a type system characterizing the size of these bursts. The end goal is to adapt the code generation techniques in order to produce nested loops.

  • Correct and Efficient Bounded FIFO Queues [PDF]

    N.-M. Lê, A. Guatto, A. Cohen and A. Pop (in SBAC-PAD 2013)

    This paper gives an efficient, portable and correct implementation of bounded single-producer single-consumer first-in first-out queues in C11. This data-structure can serve as an elementary building block for high-performance data-flow language runtimes.

  • A Modular Memory Optimization for Synchronous Data-flow Languages [PDF]

    L. Gérard, A. Guatto, C. Pasteur and M. Pouzet (in LCTES 2012, Best Paper)

    Data-flow synchronous programming languages are pure functional programming languages. Modifying a value thus consists in non-destructively introducing a new version of the same value. This is a problem when handling composte data structures such as arrays: a naive impelmentation will mandate the use of costly memory copies.

    The paper proposes a two-level solution to drastically reduce the number of copies while preserving the original functional semantics. At the intra-procedural level, we use an algorithm akin to register allocation to share non-interfering local variables. At the inter-procedural level, a linear type system enables programmer-controlled modular memory sharing. These ideas have been implemented in an experimental compiler.


  • Synchronous Machines: a Traced Category [HAL-INRIA]

    M. Bagnol and A. Guatto (2012)

    This paper describes a monoidal category of automata. We show how applying a categorical construction coming from models of linear logic gives for free a category with (linear) higher-order features.

  • SCADE/Lustre to VHDL research report [PDF, in French]

    A. Guatto and M. Pouzet (2010)

    This research report describes a straightforward translation from the synchronous programming language Lustre (and its industrial variant SCADE) to digital synchronous circuits. This procedure is fully automatic and produces synthesizable VHDL.

    This is a very small step in the direction of a unified hardware/software programming language.


  • Integer clocks [PDF], Synchron 2012 workshop
  • Dynamic Scheduling of Synchronous Programs in Lucid Synchrone [PDF], Synchron 2011 workshop
  • Generating Code from Lucy-n: Issues and Perspectives [PDF], PARKAS meeting, may 2012


I teach at university Paris 6 (UPMC) and the Polytech'UPMC engineering school.
  • C Programming [2011-2012] (Polytech'UPMC, CS/EE first year)
  • Electronics Project [2011-2014] (UPMC, EE third year)
  • Synchronous Programming [2013-2014] (UPMC, CS fifth year)
  • Computer Architecture [2012-2014] (Polytech'UPMC, CS/EE first year)