[ANN] Vodka: Join concurrency, multimethods and generators (thesis project)

In the hope that maybe some of you will find this interesting, I decided to post some details about my Master's thesis project. Inspired by the Join calculus and Martin Odersky's Funnel language, I have developed a concurrent language (code-named Vodka) which separates the definition of function symbols and function bodies, combining familiar Join-calculus synchronization solutions with a multimethod-based approach to object-orientation. Here is a Dining Philosophers solution, explaining the decoupling of function symbols and bodies and a set of slides about the whole project. More code examples are available from the website.

Python and Ruby have been of some inspiration, too, which is reflected in Vodka's dynamic nature and its syntactic support for dealing with generators. Generators, however, need not be sequential but can yield values concurrently. There is some more example code (a small web server written in Vodka) which illustrates this.

The Vodka compiler/interpreter is written in Nice and runs Vodka programs on the Java VM. The runtime system allows a close integration of existing Java classes and makes efficient use of multiprocessor hardware, due to a transactional memory model and Doug Lea's work-stealing task library FJTask.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


I'll have to keep an eye on this language. I was interested in Nice (multi-methods, predicate dispatch, type inference, HOF) before it seemed to wither on the vine. The concurrency model seems to be forward-looking.

I hope development continues: bytecode generator, Eclipse plugin, some fleshing out of the libraries.