Trivial (and very incomplete) implementation of the Linda Coordination Language
Clone or download
Pull request Compare This branch is 43 commits ahead of owulveryck:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc
example/dinner
worker
.gitignore
README.md
linda.go

README.md

GoDoc GoCard

This is a trivial and incomplete implementation of the linda language.

The purpose is to implement the dinner of the philosopher as described in page 451 of the document Linda in Context from Nicholas Carriero and David Gelernter.

Versions

v0.3

the v0.3 introduces a new primitive: evalc.

evalc works like eval but insted of triggering a new goroutine, it post an event in etcd that is captured by another agent.

Get a description here

screenshot

v0.2

the v0.2 is using and embedded language based on Lisp (see here zygomys) and etcd as tuplespace.

See this blog post for more details.

v0.1

For more information about the v0.1, please refer to this blog post

Running the example

go get -v github.com/ditrit/go-linda

cd $GOPATH/src/github.com/ditrit/go-linda/worker && go build

Make sure an etcd daemon is available and accessible.

Then export the following configuration vaiable to reflect your settings. For example:

export GLINDA_ETCD_ENDPOINT="localhost:2379"

Then:

launch 5 workers (one per philosopher):

./worker/worker

and launch the main routine:

./worker/worker ./example/dinner/dinner.zy

(or use two separates commands)

Caution

This project is not production ready at all and has not been tested. The API may change at each commit.