Distributed
Interaction: Abstraction, Rebinding, and Version Control
(joint work with James Leifer, Keith Wansbrough, Mair
Allen-Williams, Francesco
Zappa Nardelli, and Pierre Habouzit)
Abstract:
This talk is on the design of programming languages for distributed
computation, focusing on support for type-safe marshalling of arbitrary
language values.
I'll discuss the design space and describe our ongoing work on an
experimental language, Acute, which collects a coherent set of design
choices. Acute extends an ML fragment with marshalling and versions, it
has a complete semantic definition (of typing, compilation, and
runtime), and an implementation.
The main features are: (1) unmarshalling can involve rebinding to local
resources; (2) values of abstract types can be communicated, and a
globally-coherent notion of type equality ensures that unmarshalling
respects abstraction; and (3) interoperation between separately-built
programs with different versions of shared modules is supported, with
fine-grain version control.