Pierrick Couderc

I am a PhD student working between OCamlPro and the U2IS laboratory at Ensta Paristech. During my thesis, I am working on a typed intermediate language for the OCaml compiler, under the supervision of Michel Mauny (Ensta Paristech) and Grégoire Henry (OCamlPro). When I am not hacking (and adding bugs into) the OCaml compiler, I heavily use OCaml for everyday programming.



During my PhD thesis, I am focusing on type systems and compilation of functional languages, especially how to improve the safety of optimizations of the OCaml compiler. The goal of this work is to propagate the types infered into the backend of the compiler as a typed intermediate language, and at the end verifying that optimizations will not break programs. This might become more important with Flambda, which is a new intermediate language designed for optimizations introduced in 4.03, that comes with huge inlining and constant propagation passes. This might also allow more specialization of programs during inlining. Another property is that it can help to catch regressions of the type checker, or verify future features added to the type system.
More generally, I am interested in programming languages design, type systems and compilation.


  • 2015-2016:
    • INF441 (Programmation Avancée) at École Polytechnique.
    • IN102 (Cours Système et Programmation en C) at Ensta Paristech
  • 2014-2015:
    • INF441 (Programmation Avancée) at École Polytechnique.



All of my public programming stuff can be found either on my professional Github's page or my personal's one, however the latter contains mainly old programs and stuff from my Master 2 at UPMC.
  • Modified OCaml compiler
    • OCaml 4.02.3 with namespaces and functor units (branch functor-units): this hack adds two features:
      • a namespace mechanism that allows to distinguish compilation units with identical names, similar to Scala's packages.
      • functor units, which allows to have multiple compilation units that are parameterized over a given signature. This allows to make libraries into huge functors, to make functorized namespaces.
      A complete description can be found here (report in french, presentation available in english).
    • OCaml 4.02.3 with type information in the Lambda (branch propagate that propagates naively the infered types (when possible) into the first intermediate language, Lambda.
  • ocp-ppx-namespace: a ppx for selective opens and imports.
  • ocp-ppx-debug: a library that generates ppx to add informations into the program to help debugging. An example of a generated call trace can be found here (list items can be clicked).