Currently, much of the software that we would like to run fast on multi-core processors is written in C — a language in which expressing concurrency is difficult and error prone. Unfortunately, moving such programs to a new language is very difficult, since the programmers only know C, the tools only know C, and developers are unkeen to trust their projects to a language that might not be suppo...