Types and abstractions for concurrent programming
Programming Languages Seminar
Concurrent programming is the art of coordinating multiple processes into a single program, and is a pervasive part of practical programming. It's also hard to do well, in part because good abstractions for concurrent programming are hard to come by.
This talk discusses Async, a concurrent programming library for OCaml, a statically typed functional language in the ML family. We'll discuss how Async compares to other approaches to concurrent programming, and how we leverage OCaml's type system to build high-quality abstractions for concurrency, without modification to the underlying language.
We'll also discuss how our approach to concurrent programming has evolved over the last decade, and what aspects of the API have turned out to be problematic.