Acute: high-level programming language design for distributed computation
Acute: high-level programming language design for distributed computation
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 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, 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.
1-59593-064-7
15-26
Sewell, Peter
5b0cb169-e8f0-4a57-9a1b-0cfa0e7f51b7
Leifer, James J.
d0f7aff4-5e2c-4a4a-ab86-2aa1d9196579
Wansbrough, Keith
984d8e8f-c19c-4164-9f01-f279cdcfbba5
Zappa Nardelli, Francesco
3bb87053-1bff-4c58-ad0b-59d6113796d6
Allen-Williams, Mair
42b38da6-4f58-48f2-8951-7d2a30664517
Habouzit, Pierre
a5ec736f-6dac-43b7-ba5d-117280ef33de
Vafeiadis, Viktor
22808527-43da-44b4-b598-015d0decca08
2005
Sewell, Peter
5b0cb169-e8f0-4a57-9a1b-0cfa0e7f51b7
Leifer, James J.
d0f7aff4-5e2c-4a4a-ab86-2aa1d9196579
Wansbrough, Keith
984d8e8f-c19c-4164-9f01-f279cdcfbba5
Zappa Nardelli, Francesco
3bb87053-1bff-4c58-ad0b-59d6113796d6
Allen-Williams, Mair
42b38da6-4f58-48f2-8951-7d2a30664517
Habouzit, Pierre
a5ec736f-6dac-43b7-ba5d-117280ef33de
Vafeiadis, Viktor
22808527-43da-44b4-b598-015d0decca08
Sewell, Peter, Leifer, James J., Wansbrough, Keith, Zappa Nardelli, Francesco, Allen-Williams, Mair, Habouzit, Pierre and Vafeiadis, Viktor
(2005)
Acute: high-level programming language design for distributed computation.
the tenth ACM SIGPLAN international conference on Functional programming, Tallinn, Estonia.
.
Record type:
Conference or Workshop Item
(Paper)
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 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, 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.
More information
Published date: 2005
Additional Information:
Event Dates: September 2005
Venue - Dates:
the tenth ACM SIGPLAN international conference on Functional programming, Tallinn, Estonia, 2005-09-01
Organisations:
Electronics & Computer Science
Identifiers
Local EPrints ID: 261487
URI: http://eprints.soton.ac.uk/id/eprint/261487
ISBN: 1-59593-064-7
PURE UUID: 4b86dd75-3892-4055-b7d5-d8f9e450c048
Catalogue record
Date deposited: 18 Oct 2005
Last modified: 14 Mar 2024 06:53
Export record
Contributors
Author:
Peter Sewell
Author:
James J. Leifer
Author:
Keith Wansbrough
Author:
Francesco Zappa Nardelli
Author:
Mair Allen-Williams
Author:
Pierre Habouzit
Author:
Viktor Vafeiadis
Download statistics
Downloads from ePrints over the past year. Other digital versions may also be available to download e.g. from the publisher's website.
View more statistics