Sylvan Clebsch: Language Runtimes for Parallel Programming: Weak Memory, and Program Orde

Language runtimes notoriously involve frantic bit twiddling, very fine grained atomic operations, and a reliance on the specific behaviour of particular architectural targets. Achieving both high and scalable (based on core count) performance requires taking advantage of weak memory models. The code we write doesn’t express these models directly, but rather through some abstraction, such as the C11 or C++11 atomic API.

How do we know our code implements our intended memory model? How do we know our memory model maps, and maps efficiently, to the hardware memory model? What is “program order” when we need interleaved and independent “happens before” guarantees? I’ll use the Pony runtime as example code to walk through some scenarios, and propose a low-level systems language that treats “happens before” as a core building block.


Sylvan ClebschSylvan Clebsch is the designer of the Pony programming language. After a career in embedded OSes, video games, and financial systems, he now works at Microsoft Research Cambridge in the Programming Language Principles group. He is interested in massively concurrent and distributed systems, garbage collection, type systems, actor-model programming, and trusted computing.