CELL is a language model where objects are composed of smaller fragments. An additional layer of abstraction below the level of objects is introduced. The key motivation is to provide better support for language features that transcend objects.

The basic building blocks of the CELL model are object fragments, which are called cells. Objects are built up from groups of cells with delegation relationships between them. Cells themselves are simple structures, mainly consisting of 1) a lookup function, 2) a delegation pointer, and 3) an (optional) payload.

The CELL model is message-oriented, so all interaction between cells is based on message sending. Messages and message replies are also cells, thus "everything is a cell". Cell composition can be used to realize various forms of method dispatch, including novel modularization mechanisms and extension points such as the method_missing hook often found in dynamic languages. Hello.png

Figure: A class-based "Hello World" made of Cells: (from top-left to bottom-right) H1 is the metaclass, H2 provides class-behavior, H3 is the class, H4 provides instance-behavior, and H5 is an instance of the class. Boxes represent cells, arrows indicate delegation links or reference pointers.


Adrian Kuhn and Oscar Nierstrasz, "Composing New Abstractions From Object Fragments", VMIL 2008.


A prototype of CELL is available on SCG subversion—have fun!

Dependencies: ch.akuhn.util and JExample.


See also delMDSOC by Hans Schippers and the HPI guys, from which parts of the CELL implementation had been derived.

Last changed by admin on 21 April 2009