I am a recent PhD graduate working in the PARKAS team of the Computer Science department of the École normale supérieure in Paris. During my PhD, I worked on the design and implementation of a programming language for digital hardware, 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.
My scientific interests center around the practice and theory of programming languages. I am also curious about digital synchronous circuits and static scheduling techniques. Specific subjects of inquiry include the following areas:
 Functional programming languages and their metatheory;
 Compiler design, including optimizations and formal correctness proofs;
 Highlevel languages for circuit design;
 Parallel execution of sequential languages such as the λcalculus.
I will soon start a postdoc in the Deepsea project.
Publications

A Synchronous Functional Language with Integer Clocks [PDF]
Adrien Guatto (PhD thesis, January 2016)
My PhD thesis tackles the modular description of space/time tradeoffs in streaming programs at the language level. My work extends the nsynchronous framework proposed by Cohen, Mandel, Plateau, Pouzet and others. Clocks now feature arbitrary positive integers that model bursty communication between subprograms: "integer clocks". The activation conditions of Lustre, revisited in this new setting, become "local time scales" that allow subprograms to perform several reactions atomically from the point of view of the context. The thesis details the integration of these features in a clock type system for a higherorder functional language, giving full formal treatment of its metatheory and compilation to finitestate digital circuits.

Bursty Kahn Networks and Integer Clocks [PDF, in French]
A. Guatto and L. Mandel (in JFLA 2014)
Dataflow synchronous languages à la Lustre offer an highlevel equational formalism dedicated to the design and implementation of realtime systems. These languages have traditionally been restricted to critical systems with low computational demand; in particular, the generated code does not usually feature loops.
Lucyn is a recent derivative of Lustre tailored to multimedia processing. In this paper, we propose an extension of Lucyn'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 SBACPAD 2013)
This paper gives an efficient, portable and correct implementation of bounded singleproducer singleconsumer firstin firstout queues in C11. This datastructure can serve as an elementary building block for highperformance dataflow language runtimes.

A Modular Memory Optimization for Synchronous Dataflow Languages [PDF]
L. Gérard, A. Guatto, C. Pasteur and M. Pouzet (in LCTES 2012, Best Paper)
Dataflow synchronous programming languages are pure functional programming languages. Modifying a value thus consists in nondestructively 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 twolevel solution to drastically reduce the number of copies while preserving the original functional semantics. At the intraprocedural level, we use an algorithm akin to register allocation to share noninterfering local variables. At the interprocedural level, a linear type system enables programmercontrolled modular memory sharing. These ideas have been implemented in an experimental compiler.
Drafts

Synchronous Machines: a Traced Category [HALINRIA]
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) higherorder 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.
Talks
 Integer Clocks and Local Time Scales [PDF], Synchron 2014 workshop
 Integer clocks [PDF], Synchron 2012 workshop
 Dynamic Scheduling of Synchronous Programs in Lucid Synchrone [PDF], Synchron 2011 workshop
 Generating Code from Lucyn: Issues and Perspectives [PDF], PARKAS meeting, may 2012
Teaching
I was a teaching assistant at University Pierre et Marie Curie (UPMC) and the Polytech'UPMC engineering school during my PhD. The courses I participated in are listed below.
 C Programming [20112012] (Polytech'UPMC, CS/EE first year)
 Electronics Project [20112014] (UPMC, EE third year)
 Synchronous Programming [20132014] (UPMC, CS fifth year)
 Computer Architecture [20122014] (Polytech'UPMC, CS/EE first year)