The Alice project works on the design and implementation of the programming language Alice. Alice can either be regarded as a statically typed dialect of Oz, or as an extension of Standard ML that supports the main features of Mozart, with a focus on open programming. My responsibilities included, among others:
The design and implementation of the Simple Extensible Abstract Machine (SEAM). SEAM is a concurrent virtual machine featuring an abstract store for data representation, generic facilities for thread scheduling and execution, I/O handling, and persistence (pickling and unpickling). SEAM supports any number of language layers that are implemented on top of the generic services. We currently provide a language layer for Alice, and the prototype of a language layer that emulates a Java Virtual Machine.
Thorsten Brunklaus and Leif Kornstaedt. Open Programming Services for Virtual Machines: The Design of Mozart and SEAM. Technical Report. March 2003.
Thorsten Brunklaus and Leif Kornstaedt. A Virtual Machine for Multi-Language Execution, Technical Report. November 2002.
The Alice compiler backends. Alice features backends that produce Mozart pickles, SEAM components, and Microsoft .NET assemblies.
Leif Kornstaedt. Alice in the Land of Oz. An Interoperability-based Implementation of a Functional Language on Top of a Relational Language, Proceedings of the First Workshop on Multi-language Infrastructure and Interoperability (BABEL'01), Firenze, Italy. September 2001.
The Alice runtimes. Each backend needs an associated runtime system, providing the language primitives and system libraries. Accordingly, there are runtimes for Alice-on-Mozart (implemented in Oz), for Alice-on-SEAM (implemented in C++), and for Alice-on-.NET (implemented in C#).