Reo is an exogenous coordination language designed by prof. dr. F. Arbab at the Centre for Mathematics and Computer Science (CWI) in Amsterdam. Reo allows the programmer to specify protocols that describe interaction among components in a concurrent application.
The documentation is available on http://reo.readthedocs.io/en/latest/
Protocols, such as mutual exclusion protocol and producer/consumer, orchestrate interaction amongst concurrently executing processes. Unfortunately, most general purpose programming languages do not provide syntax for expressing these protocols. This absence requires programmers to implement their protocols by manually adding locks and buffers and ensuring their correct usage. Even if the implementation correctly resembles the intended protocol, the implicit encoding of the protocol makes it hard, if not impossible, to reason about its correctness and efficiency.
Reo addresses this problem by providing syntax that enables explicit high-level construction of protocols. If the protocol is specified explicitly, it becomes easier to write correct protocols that are free of dead-locks, live-locks and data races. Moreover, the compiler of the coordination language is able to optimize the actual implementation of the protocol.
- Install Java (version 1.6 or higher). You can check if the correct version is already installed via
java -version
- Install Maven. You can check if the correct version is already installed via
mvn -version
- Install Eclipse. Available at https://www.eclipse.org/downloads/
- Change directory to eclipse workspace
cd ../workspace
- Clone this repository via
git clone https://github.com/kasperdokter/Reo.git
- Change directory
cd Reo
- Build the project:
mvn install
. - Run the compiler:
java -jar reo-compiler/target/reoc.jar
- Generate Eclipse configuration:
mvn eclipse:eclipse
- Import project to Eclipse:
File > Import...
, selectGeneral > Existing Projects into Workspace
, hitNext
, select root directory and point to the cloned repository, hitFinish
. - Start coding