Get VODKA 0.4
News (RSS feed)
  • 2007-05-19: Updated descriptions of code examples
  • 2007-05-02: Vodka 0.4 source checked-in at Google Code

Welcome to VODKA

Vodka is an experimental programming language with a focus on creating concurrent, interactive systems. As such, Vodka provides rich concurrency primitives at the language level and a runtime system that is geared towards execution on multiprocessor hardware. The reference implementation, which is available from the source repository under an MIT-style licence, consists of a high-level to core language compiler and a core language interpreter running on the Java platform. Existing Java classes can be accessed easily from Vodka programs.

Introduction

Vodka has been inspired by the language Funnel developed by Odersky et al. at EPF Lausanne and builds on the same theoretical underpinnings, an amalgamation of concepts from Petri Nets and the Join Calculus.

Like in Funnel, there is an m:n-relation between function symbols and function bodies (think of an overloaded Java method as one function symbol with multiple function bodies). Function symbols are first-class values, and the main mechanism of handling concurrency is that a function body can only be executed when all its associated function symbols have been called.

Please have a look at the Dining Philosophers example for a more hands-on explanation.

The Vodka language, however, departs from the Join Calculus heritage, as function bodies need not be defined together with their related function symbols. In addition, the appropriate function body for a given list of actual parameters is selected dynamically by a best-match strategy respecting all the arguments. Combined with subtyping, this leads to a multimethod approach to object-orientation like in Dylan or Nice, where methods and classes can be defined separately, making it easy to extend existing classes with new behavior.

With a future version of the Vodka runtime, distributed systems might be realized by sending proxies of function symbols to a distant site. Calling a proxy symbol would send the arguments over the network and execute the function body at its home site, while setting up a function body on proxy symbols (whose originals reside on the same remote site - otherwise it is an error) would transfer the code there.

More in-depth information can be found on the Docs/Publications page.

Project Status

The Vodka language has been developed as a thesis project at University of Lübeck, Germany, since mid-2006. As the examples show, development has now reached a state where enough of the intended features have been implemented to make the language actually usable. It is our hope that, by going Open Source, other people too will find it an interesting toy.

Feedback

We are very interested in what you think about this project, so please feel free to post your comments, suggestions or whatever opinions to the Vodka discussion group at vodka-discuss@googlegroups.com.