Distributed ML: Abstractions for Efficient and Fault-Tolerant Programming
Krumvieda, Clifford Dale
Despite the availability, inherent parallelism, and potential fault tolerance of networked workstations and microcomputers, most programmers do not write distributed code. Those that do are often overwhelmed by the asynchrony, concurrency, and tricky failure behaviour inherent in such systems. In this thesis, we describe the design and implementation of a new programming language called Distributed ML. Distributed ML provides a programming construct called a port group that hides the sources of complexity listed above and can be implemented efficiently. Port groups are intermachine multicast channels which provide membership and failure information to application programmers. Although inherently asynchronous, port groups guarantee the delivery of data sent through them and can order such data in several different ways, thereby providing many of the assurances of synchronous communication. Port groups are general-purpose communication abstractions that can be used to transfer information between machines, between processes on the same machine, and between threads within the same process. In this thesis, we demonstrate that efficient distributed programs-even highly available and fault-tolerant distributed programs-can be quickly developed, easily reasoned about, and properly coded in a well-designed high level programming language. First, we provide an implementation and description of port groups in the context of the Concurrent ML concurrent programming language, which is a superset of the Standard ML general-purpose programming language. Second, we introduce a formal theory for relating the membership and ordering properties of port groups. Finally, we argue that our implementation matches the formal specification.
computer science; technical report
Previously Published As