This document describes the rationale and design of a programming model based on events, constraints, and objects and the use of this model in the Moonlight project. It describes the inter-object communication or invocation mechanism, and the way in which concurrency, synchronisation, and timing properties are expressed and controlled. The invocation mechanism is unusual in that it is event-based. It encourages loose coupling among the objects and this supports a high degree of encapsulation for each object. Concurrency, synchronisation, and timing properties are expressed in a uniform way using constraints which may be associated with objects and events. We describe the way in which the abstractions of the ECO model are expressed at the language level, and the support for them which is required from the runtime code and the underlying system.
Many object-oriented programming language implementations have been extended to support persistence, distribution or atomicity by integrating the necessary additional support with the language''s runtime library.
Many object-oriented programming language implementations have been extended to support persistence, distribution or atomicity by integrating the necessary additional support with the language''s runtime library. We argue that a better approach is to provide a Generic Runtime library (the GRT) which implements that part of the support which is independent of any language. The GRT should be designed to interface to a language''s existing runtime in such a way that the language''s local object reference format and invocation mechanism can be retained. Hence existing compilers do not necessarily have to be modified, and a range of different object-oriented languages can be supported simultaneously. This approach has significant merits including: the ease with which a language can be extended; the sophistication of the underlying support immediately available to a language implementer; and the ability to support fine-grained language interworking.
This report describes the different implementations of the Comandos platform.