Penny is a parallel implementation of a AKL (Agents) virtual machine. The AKL is a concurrent constraint language with implicit concurrency. Execution was data driven and statements that did not have enough information would simply suspend. This was of course an ideal language to explore implicit parallelism in. Statements could be executed in any order or in parallel and the semantics would be the same as in a sequential execution. The tricky part is of course to execute things in parallel without introducing too much of an over-head and more importantly without crashing.

Penny was developed in the mid nineties when parallel machines were large and expensive. At SICS we had a Sun SparcCenter 2000 with eight processors and we had access to a machine in Linkoping with 20 processors. Today I have an AMD quad core under my desk and there will probably not be long before I have 16 and then a 32 core machine. How do you write a program that can utilize the power of a 32 core processor, manually annotating your code and dividing up into task or simply letting the runtime system do it for you? If this should be up to the runtime system it sure helps to have language that allows things to be executed in parallel without changing the semantics.