Scarlet is a new language I have been working on. It's a dynamic language and includes most of what you'd expect from a modern language: garbage collection, closures, exceptions, reflection etc. It also includes some less common features such as support for design by contract and the ability to attach meta-information to objects or object members.
From the view-point of an LtU reader the most interesting aspect of Scarlet is probably the object model. Instead of the usual inheritance mechanisms Scarlet relies on composition. Objects are constructed by aggregating one or more implementations. Implementations implement zero or more interfaces. The interface provided by the object is the union of interfaces that the implementations support. Interfaces have no behavior so there is no implementation inheritance.
Developers can modify existing objects by adding new implementations to them or by removing/replacing existing implementations. This makes it very easy to augment or customize existing objects (eg those provided by the Scarlet library) and it offers a great deal of flexibility to dynamically loaded components.
You can find out more about Scarlet by visiting <http://scarlet.sourceforge.net/Home.html>.
|