International Conference on Logic Programming edition:20 location:St-Malo, France date:6-10 September 2004
The memory model of a programming language specifies the interaction between multiple threads and main memory. Basically, the model says for every value obtained by a read operation in a program by what write operation it has been produced. In a multi-threaded unsynchronized program this need not be a deterministic linking from reads to writes. For a multi-platform language such as Java, a memory model is essential to guarantee portability of programs.
However, several undesirable properties of the current Java Memory Model (JMM) have been revealed: it is not an easy model to understand by programmers, gives rise to some unwanted behavior and is hard to implement on current
hardware architectures. Because of this, Java Specification Request 133 has called for a new JMM that fixes the current problems.
The Concurrent Constraint-based Memory Machines (CCMMs) proposal by Vijay Saraswat is a framework to express and study different declarative memory models. CCMMs are different from other proposals in that it does not
express a memory model in terms of imperative operational semantics, but in terms of constraints. This should facilitate reasoning about the model and its properties, e.g. the "no thin-air reads" property is structurally
Because of the declarative constraint-based nature of CCMMs we have chosen constraint logic programming (CLP) as the technology for this generative pimplementation. In particular, JmmSolve has been implemented in the
latest version of SWI-Prolog, with its new support for constraint programming: attributed variables and a Constraint Handling Rules (CHR) system.