Run-time supported Haskell Serialisation - an API
Departing from our experience in implementations of parallel Haskell dialects on shared-nothing architectures, we discuss an API to serialise Haskell data structures, factored out from a parallel Haskell implementation as a separable feature. The approach to serialisation presented here is highly flexible and has interesting (and unrivalled) properties: it is orthogonal to evaluation and independent of type class mechanisms. Haskell heap structures can be serialised in their current evaluation state, including functions and IO actions. This opens the way to interesting applications such as memoisation and checkpointing, in a much easier way than with other approaches. The essence of this orthogonal serialisation approach has been presented and illustrated in earlier work, therefore the required runtime support and basic Haskell wrapper code will only be summarised briefly. In this talk, we discuss ongoing work towards extending the serialisation routines, especially adding exceptions and the ability to use user-allocated memory to the serialisation API. Furthermore, we provide a larger picture of serialisation as one of the essential features used in parallel Haskell implementations on shared-nothing architectures; either directly for explicit message passing, or for implementing virtual shared memory within Haskell.
(This talk is about work in progress)