Featherweight concurrency in a portable assembly language

Norman Ramsey and Simon Peyton Jones

What abstractions should a reusable code generator provide to make it easy for a language implementor to compile a highly concurrent language? The implementation of concurrency is typically tightly interwoven with the code generator and run-time system of the high-level language. Our contribution is to tease out the tricky low-level concurrency mechanisms and to package them in an elegant way, so they can be reused by many front ends.

Here, then, is the problem we address: we want to make it easy for a front end to support efficient user-level threads, in such a way that all the policy decisions are in the hands of the front end, while all the tricky mechanism is supported by C--. Like many fine phrases, this goal is easier to state than achieve. The contribution of this paper is a design that extends C-- with clean, architecture-independent mechanisms that can be used to implement common concurrency policies efficiently.

Full paper

The paper is available as US Letter PostScript (218K), US Letter PDF (238K), and US Letter TeX DVI (85K).


Since this paper was written, our thinking about C-- and concurrency has evolved. Here are some notes: