Implementation of Message Passing Language

Date
2018-02
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Message Passage Language (MPL) is a programming language based on the work of Cockett and Pastro. MPL is a statically typed concurrent programming language with message passing as the concurrency primitive. It brings communication safety to interacting processes using a type system. MPL consists of two languages, concurrent MPL and sequential MPL, which can interact with each other. Concurrent MPL programs are written using concurrency constructs built into the language and protocols, which are concurrent data types. These concurrency constructs allow intuitive modelling of real world concurrency scenarios. Sequential MPL is a functional programming language. In addition to data definitions, sequential MPL allows codata definitions, which can model infinite structures. Sequential MPL allows for disciplined recursion using folds and unfolds in addition to normal recursion. In this thesis, we develop the first prototype of a compiler for MPL. We reformulate MPL's design to allow normal recursion in addition to primitive recursion, the only form of recursion allowed in previous designs. In light of the changes made to MPL, we describe MPL's type system. Then we develop an algorithm for type inferencing MPL programs, and implement it. In addition, we develop and implement an abstract machine to run MPL programs. We also develop the intermediate languages through which MPL programs compile to the abstract machine. We describe and implement the algorithms used in the compilation of MPL programs to the abstract machines, namely lambda lifting and compilation of pattern-matching.
Description
Keywords
Concurrency, Compilers, Message Passing Language, Abstract Machine
Citation
Kumar, P. (2018). Implementation of Message Passing Language (Master's thesis, University of Calgary, Calgary, Canada). Retrieved from https://prism.ucalgary.ca. doi:10.11575/PRISM/5476