Composable Scheduler Activations for Haskell

The runtime for a modern, concurrent, garbage collected language like
Haskell is like an operating system: sophisticated, complex,
performant, but alas very hard to change. If more of the runtime
system were in Haskell it would become far more modular and malleable. In this paper
we describe a new concurrency design that allows the scheduler for
concurrent and parallel programs to be written in Haskell. In
particular, this substrate allows new primitives to be constructed
modularly, obviating the need to re-engineer or reason about
the interactions with GHC's existing concurrency support.

Lightweight concurrency primitives for GHC

Abstract

The Glasgow Haskell Compiler (GHC) has quite sophisticated support
for concurrency in its runtime system, which is written in low-level
C code. As GHC evolves, the runtime system becomes increasingly
complex, error-prone, difficult to maintain and difficult to add new
concurrency features.

This paper presents an alternative approach to implement concurrency
in GHC. Rather than hard-wiring all kinds of concurrency features,
the runtime system is a thin substrate providing only a small set of
concurrency primitives, and the rest of concurrency features are
implemented in software libraries written in Haskell. This design
improves the safety of concurrency support; it also provides more
customizability of concurrency features, as new concurrency features
can be developed as Haskell library packages and deployed modularly.