Retrofitting Concurrency – Lessons from the Engine Room
A new major release of the OCaml programming language is on the horizon. OCaml 5.0 brings native support for concurrency and parallelism to OCaml. While recent languages like Go and Rust have been designed with concurrency in mind, OCaml is not so fortunate. There are millions of lines of OCaml code in production, and none of which was written with concurrency in mind. Extending OCaml with concurrency brings the challenge of not just maintaining backwards compatibility but also preserving the performance profile of single-threaded applications. In this talk, I will describe the approach taken by the Multicore OCaml project that has helped deliver OCaml 5.0, focusing on what worked well and what didn’t. I hope that these lessons are useful to other researchers building programming language abstractions with the aim to retrofit them onto industrial-strength programming languages.
KC Sivaramakrishnan is an Assistant Professor at the Indian Institute of Technology, Madras, and a Hacker at Tarides. He is interested in the intersection of programming languages and (concurrent, distributed, parallel, operating, secure) systems. He leads the Multicore OCaml project, a concurrent and parallel extension of the OCaml programming language. Multicore OCaml has been merged into OCaml and will be available for general use in OCaml 5.0, the next major release of the OCaml programming language. In the past, KC was a Senior Research Fellow at the University of Cambridge Computer Lab. He obtained his PhD and MS from Purdue University. His awards include the Royal Commission for the Exhibition of 1851 Fellowship, Darwin College Cambridge Research Fellowship, Maurice H. Halstead Memorial Award for outstanding research in software engineering, and distinguished paper awards at ICFP and PADL.