|
ABSTRACT
Existing languages provide good support for typeful programming of standalone 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 programminglanguage 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, e.g. 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 runtime 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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
 |
3
|
Gavin Bierman , Michael Hicks , Peter Sewell , Gareth Stoyle , Keith Wansbrough, Dynamic rebinding for marshalling and update, with destruct-time ?, Proceedings of the eighth ACM SIGPLAN international conference on Functional programming, p.99-110, August 25-29, 2003, Uppsala, Sweden
|
| |
4
|
Alex Buckley, Michelle Murray, Susan Eisenbach, and Sophia Drossopoulou. Flexible bytecode for linking in .NET. In Proc. BYTECODE 2005, April 2005.
|
| |
5
|
D. Le Botlan, A. Rossberg, C. Schulte, G. Smolka, and G. Tack, 2005. www.ps.uni-sb.de/alice/.
|
 |
6
|
|
| |
7
|
|
| |
8
|
|
| |
9
|
Packacking and deploying .Net framework applications (.Net framework tutorials, msdn), 2003.
|
| |
10
|
|
| |
11
|
Jun Furuse and Pierre Weis. Entrées/sorties de valeurs en Caml. In J. Francophones des Langages Applicatifs, 2000.
|
 |
12
|
|
 |
13
|
|
| |
14
|
R. Harper and B. C. Pierce. Design issues in advanced module systems, 2005. Chapter in Advanced Topics in Types and Programming Languages, B. C. Pierce, editor.
|
| |
15
|
M. Hennessy, J. Rathke, and N. Yoshida. Safedpi: A language for controlling mobile code. In Proc. FOSSACS, LNCS 2987, 2004.
|
| |
16
|
|
| |
17
|
JoCaml. http://pauillac.inria.fr/jocaml/.
|
 |
18
|
Xavier Leroy, Manifest types, modules, and separate compilation, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.109-122, January 16-19, 1994, Portland, Oregon, United States
[doi> 10.1145/174675.176926]
|
 |
19
|
James J. Leifer , Gilles Peskine , Peter Sewell , Keith Wansbrough, Global abstraction-safe marshalling with hash types, Proceedings of the eighth ACM SIGPLAN international conference on Functional programming, p.87-98, August 25-29, 2003, Uppsala, Sweden
|
| |
20
|
|
| |
21
|
|
| |
22
|
|
 |
23
|
|
 |
24
|
|
| |
25
|
M. R. Shinwell. The Fresh Approach: functional programming with names and binders. Technical Report UCAM-CLTR-618, University of Cambridge, Computer Laboratory, 2005.
|
| |
26
|
P. Sewell, J. J. Leifer, K. Wansbrough, M. Allen-Williams, Francesco Z. Nardelli, P. Habouzit, and V. Vafeiadis. Acute: High-level programming language design for distributed computation. design rationale and language definition. Technical Report 605, University of Cambridge Computer Laboratory, October 2004. Also published as INRIA RR-5329. 193pp.
|
| |
27
|
P. Sewell, J. J. Leifer, K. Wansbrough, M. Allen-Williams, F. Zappa Nardelli, P. Habouzit, and V. Vafeiadis. Source release of the Acute system, January 2005. Available from http://www.cl.cam.ac.uk/users/pes20/acute/.
|
 |
28
|
|
| |
29
|
|
| |
30
|
|
 |
31
|
|
| |
32
|
Vesta. http://www.vestasys.org/.
|
CITED BY 12
|
|
|
Manuel Serrano , Erick Gallesio , Florian Loitsch, Hop: a language for programming the web 2.0, Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
|
Sébastien Baehni , João Barreto , Patrick Eugster , Rachid Guerraoui, Efficient distributed subtyping tests, Proceedings of the 2007 inaugural international conference on Distributed event-based systems, June 20-22, 2007, Toronto, Ontario, Canada
|
|
|
|
|
|
|
|
|
|
John Billings , Peter Sewell , Mark Shinwell , Rok Strniša, Type-safe distributed programming for OCaml, Proceedings of the 2006 workshop on ML, September 16-16, 2006, Portland, Oregon, USA
|
|
|
|
|
PETER SEWELL , JAMES J. LEIFER , KEITH WANSBROUGH , FRANCESCO ZAPPA NARDELLI , MAIR ALLEN-WILLIAMS , PIERRE HABOUZIT , VIKTOR VAFEIADIS, Acute: High-level programming language design for distributed computation, Journal of Functional Programming, v.17 n.4-5, p.547-612, July 2007
|
|
|
|
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.3
Language Constructs and Features
General Terms:
Design,
Languages
Keywords:
ML,
abstract types,
distributed programming,
marshalling,
modules,
programming languages,
rebinding,
serialisation,
type theory,
version control
|