Hostname: page-component-77f85d65b8-2tv5m Total loading time: 0 Render date: 2026-03-29T01:40:20.587Z Has data issue: false hasContentIssue false

Acute: High-level programming language design for distributed computation

Published online by Cambridge University Press:  01 July 2007

PETER SEWELL
Affiliation:
University of Cambridge, Cambridge, England, UK (e-mail: Peter.Sewell@cl.cam.ac.uk)
JAMES J. LEIFER
Affiliation:
INRIA Rocquencourt, France
KEITH WANSBROUGH
Affiliation:
University of Cambridge, Cambridge, England, UK (e-mail: Peter.Sewell@cl.cam.ac.uk)
FRANCESCO ZAPPA NARDELLI
Affiliation:
INRIA Rocquencourt, France
MAIR ALLEN-WILLIAMS
Affiliation:
University of Cambridge, Cambridge, England, UK (e-mail: Peter.Sewell@cl.cam.ac.uk)
PIERRE HABOUZIT
Affiliation:
INRIA Rocquencourt, France
VIKTOR VAFEIADIS
Affiliation:
University of Cambridge, Cambridge, England, UK (e-mail: Peter.Sewell@cl.cam.ac.uk)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

Existing languages provide good support for typeful programming of stand-alone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (but not necessarily all) of their module structure, and with some instances rebuilt with new versions of certain modules as time goes on. In this paper, we discuss programming-language support for such systems, focussing on their typing and naming issues. We describe an experimental language, Acute, which extends an ML core to support distributed development, deployment, and execution, allowing type-safe interaction between separately built programs. The main features are (1) type-safe marshalling of arbitrary values; (2) type names that are generated (freshly and by hashing) to ensure that type equality tests suffice to protect the invariants of abstract types, across the entire distributed system; (3) expression-level names generated to ensure that name equality tests suffice for type safety of associated values, for example, values carried on named channels; (4) controlled dynamic rebinding of marshalled values to local resources; and (5) thunkification of threads and mutexes to support computation mobility. These features are a large part of what is needed for typeful distributed programming. They are a relatively lightweight extension of ML, should be efficiently implementable, and are 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. This disentangles the language run-time from communication intricacies. This paper highlights the main design choices in Acute. It is supported by a full language definition (of typing, compilation, and operational semantics), by a prototype implementation, and by example distribution libraries.

Information

Type
Article
Copyright
Copyright © Cambridge University Press 2007
Submit a response

Discussions

No Discussions have been published for this article.