Ports for objects in concurrent logic programs

We introduce ports, an alternative to streams, as communication support for object-oriented programming in concurrent constraint logic programming languages. From a pragmatic point of view ports provide e cient many-toone communication, object identity, means for garbage collection of objects, and opportunities for optimised compilation techniques for concurrent objects. From a semantic point of view, ports preserve the monotonicity of the constraint store which is a crucial property of all concurrent constraint languages. We also show that the Exclusive-read, Exclusive-write PRAM model of parallel computation can be realised quite faithfully using ports in terms of space and time complexity, thus allowing arbitrary parallel programs to be written e ciently. Ports are available in AKL, the Andorra Kernel language, a concurrent logic programming language that provides general combinations of don't know and don't care nondeterministic computations.