The Cell Programming Language

Cell is a domain-specific programming language designed to integrate with your language of choice in order to provide a number of features that have no equivalent in more conventional languages.

It offers, among other things, a very flexible, entirely structural type system; deterministic, repeatable execution; support for reactive programming; the ability to use relations to store data; transactions and propagation of undefined values for error handling; and orthogonal persistence.

Cell's most important new language construct is automata, which come in two flavors: relational automata and reactive ones. For a high-level, but rather abstract, description head to the overview section. If you prefer a hands-on tutorial, start with either the introductory example to find out more about relational automata, or this page to learn about reactive ones.

Although Cell is, in and of itself, a general-purpose language, that can be used to write entire applications (the Cell compiler, for example, is entirely written in Cell), that's not what it is designed for. It is, instead, meant to be used as a domain-specific language, much like, for example, tools like Lex and Yacc (or their more modern alternatives) are used for parsing: from Cell source code you can generate a set of classes in your language of choice, and use them in your existing projects. Code generators for C++, Java and C# are already available, and other languages will follow.

If you have any question, there's the cell-lang Google Group. For announcements, there's cell_lang on Twitter.

The Cell compiler is open source software, and all source code is available on github.


25 Apr 2018: Version 0.1 of Cell ➞ Java compiler released.

26 Feb 2018: Version 0.1 of Cell ➞ C# compiler released.