Abstractions for robust higher-order message-based communication
Message passing programming idioms alleviate the burden of reasoning about implicit program interactions that can lead to deadlock or race conditions by explicitly defining the interactions between threads and modules. This simplicity comes at the cost of having to reason about global protocols that span multiple interacting threads and software components. Reasoning about a given thread or component requires reasoning about potential communication partners and protocols in which the thread participates. Therefore, building modular yet composable communication abstractions is challenging. In this dissertation we present three language abstractions for building robust and efficient communication protocols. We show how such language abstractions can be leveraged to simplify protocol design, improve protocol performance, and modularly extend protocols with asynchronous actions. Extending protocols with asynchronous actions, specifically asynchronous events, is currently not possible in the context of languages like Concurrent ML.^
Suresh Jagannathan, Purdue University.