OCaml Labs internship overview

My research on OCaml/ESP32 devices was done as a research project in Cambridge Computer Laboratory’s OCaml Labs. The internship lasted 5 months, from March to July 2018, and I worked under the supervision of Anil Madhavapeddy. I presented my internship work on September 4, and I got a final mark of 18/20, confirming the validation of my first year of Master’s degree in computer science !

As a recap, I achieved:

  • a working OCaml native compilation backend for Xtensa architecture.
  • an opam distribution containing cross-compilation package support for ESP32.
  • decent Mirage integration, including:
    • operating system features: time, events and collaborative threading.
    • network features: TCP/IP, DHCP, DNS, HTTP, TLS.
    • esp32 features: Wifi, LCD screen.
    • mirage command line interface integration that allows easy builds.

All the information you might need to actually use this project is available on the status page.

ICFP 2018 - OCaml Workshop talk

My talk was accepted for the OCaml Workshop co-located with ICFP 2018 in Saint-Louis, USA. Informations on the talk are available on the ICFP 2018 website: here. A video will be available soon. You can find the slides here. Finally, here are some pictures!


What comes next ?

I’ll pause my ESP32 work, to focus on other fields and courses for a semester. However this is not the end of the project and there remains a lot to achieve. Things that I want to do include building new libraries to take advantage of ESP32 features and make them available trough Mirage abstractions.


  • Programming Ultra-Low Power processor
  • Reading sensors
  • Integrating sensors in the event system
  • Bluetooth integration
  • Reducing OCaml memory footprint
  • Benchmarking