Composing Concurrent Libraries

Writing concurrent programs manually is challenging. Therefore many modern programming languages such as Java, Scala, and C# already provide efficient concurrent data structure implementations which hides the complexity of developing concurrent system.

However it is tricky to use these implementations. It is hard for programmers to build complex operations from a few primitive ones. Therefore, much of the art of API design comes in choosing a set of primitives that is both simple and complete. Unfortunately, existing efficient concurrent data structures do not allow to safely compose operations. The lack of a generic mechanism for composition of concurrent ADTs leads to complex and less complete APIs.

The theme of this project is developing effective tools to ease the task of employing such concurrent data structures for more secure and effective programming.

Preliminary Results