Computer Laboratory

Technical reports

Acute: High-level programming language design for distributed computation
Design rationale and language definition

Peter Sewell, James J. Leifer, Keith Wansbrough, Mair Allen-Williams, Francesco Zappa Nardelli, Pierre Habouzit, Viktor Vafeiadis

October 2004, 193 pages

Abstract

This paper studies key issues for distributed programming in high-level languages. We discuss the design space and describe an experimental language, Acute, which we have defined and implemented.

Acute extends an OCaml core to support distributed development, deployment, and execution, allowing type-safe interaction between separately-built programs. It is expressive enough to enable a wide variety of distributed infrastructure layers to be written as simple library code above the byte-string network and persistent store APIs, disentangling the language runtime from communication.

This requires a synthesis of novel and existing features:

(1) type-safe marshalling of values between programs;

(2) dynamic loading and controlled rebinding to local resources;

(3) modules and abstract types with abstraction boundaries that are respected by interaction;

(4) global names, generated either freshly or based on module hashes: at the type level, as runtime names for abstract types; and at the term level, as channel names and other interaction handles;

(5) versions and version constraints, integrated with type identity;

(6) local concurrency and thread thunkification; and

(7) second-order polymorphism with a namecase construct.

We deal with the interplay among these features and the core, and develop a semantic definition that tracks abstraction boundaries, global names, and hashes throughout compilation and execution, but which still admits an efficient implementation strategy.

Full text

PDF (1.2 MB)

BibTeX record

@TechReport{UCAM-CL-TR-605,
  author =	 {Sewell, Peter and Leifer, James J. and Wansbrough, Keith
          	  and Allen-Williams, Mair and Nardelli, Francesco Zappa and
          	  Habouzit, Pierre and Vafeiadis, Viktor},
  title = 	 {{Acute: High-level programming language design for
         	   distributed computation : Design rationale and language
         	   definition}},
  year = 	 2004,
  month = 	 oct,
  url = 	 {http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-605.pdf},
  institution =  {University of Cambridge, Computer Laboratory},
  number = 	 {UCAM-CL-TR-605}
}