Cloud Haskell 2.0
Edsko de Vries
Cloud Haskell brings Erlang-style concurrency to Haskell. It was introduced in "Towards Haskell in the Cloud" by Epstein et al. in 2011, and comes with a prototype implementation.
Well-Typed are working on a reimplementation of Cloud Haskell. The main motivation is a split between the Cloud Haskell layer proper, the underlying network layer, and a backend providing initialization, peer discovery, node creation, etc. The separate network layer makes it possible to run Cloud Haskell over TCP, UDP, CCI or other protocol simply by swapping the network layer, and is reusable in other projects.
We describe the reorganization of the Cloud Haskell infrastructure, the new Network.Transport package, and various improvements that we have made to the Cloud Haskell layer itself, in particular:
- A precise semantics of message passing and reliability guarantees, with special attention to reconnects.
- Support for closure combinators. This greatly improves expressiveness; for instance, it becomes possible to define "call" ("run this process over there and send its result back to me") in terms of spawn ("run this process over there").
We also discuss a limitation of new type construct "static" (proposed in the original Cloud Haskell paper) and a potential solution.