Affiliation:
1. University of Cambridge
2. INRIA Rocquencourt
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.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference30 articles.
1. Dynamic rebinding for marshalling and update, with destruct-time ?
2. Flexible Bytecode for Linking in .NET
3. D. Le Botlan A. Rossberg C. Schulte G. Smolka and G. Tack 2005. www.ps.uni-sb.de/alice/.]] D. Le Botlan A. Rossberg C. Schulte G. Smolka and G. Tack 2005. www.ps.uni-sb.de/alice/.]]
Cited by
12 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. An order-aware dataflow model for parallel Unix pipelines;Proceedings of the ACM on Programming Languages;2021-08-22
2. A Survey of Multitier Programming;ACM Computing Surveys;2021-07-31
3. PaSh;Proceedings of the Sixteenth European Conference on Computer Systems;2021-04-21
4. Ignis: scaling distribution-oblivious systems with light-touch distribution;Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation;2019-06-08
5. A programming model and foundation for lineage-based distributed computation;Journal of Functional Programming;2018