Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
LuaPi: Concurrent programming made simple
Lua Shell
Tree: faf36b1e66

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
cmake
doc
examples
lib
.travis.yml
AUTHORS
CMakeLists.txt
COPYRIGHT
HISTORY
README
VERSION
dist.info
prepare.sh

README

LuaPi: Concurrent programming made simple
-----

(C) 2007-2009 by Frederic Peschanski under the MIT Licence
(see COPYRIGHT file)

AUTHOR
-------

Frederic Peschanski
Assistant Professor
University of Paris 6 - Pierre et Marie Curie
France

web: http://www-poleia.lip6.fr/~pesch

OVERVIEW
--------

LuaPi is a concise and efficient implementation of the Pi-calculus and broadcast-Pi semantics
The metaphor employed is that of communicating systems. A LuaPi agent (there should generally
 be one LuaPi agent per lua instance) runs a set of LuaPi processes in parallel.
Processes communicate through send/receive or broadcast primitives using communication channels. 
A higher-level and quite expressive choice construct allows to implement guarded commands, 
select-like behaviors and much more.

From a practical point of view, LuaPi greatly simplifies the thinking and programming of concurrent
 behaviors, here in the Lua language. A more Lua-specific aspect is that LuaPi offers an expressive
(but thin) layer above the coroutine mechanism so that programmers do not have to deal with the 
low-level stuff. It also provides an implicit cooperation model so that explicit yield are barely needed.

From a scientific point of view, LuaPi is an outcome of our (long-term) research effort of providing 
integrated modeling, verification and programming techniques for day-to-day programmers (see LINKS).
For example, LuaPi programs (well, the concurrent parts) can be converted to the Promela syntax and thus 
verified using Spin (see the doc/spin/ subdirectory for a tutorial example)

INSTALLATION
------------

There is no installation procedure per-se. The only "difficult" part is in expanding
the archive, which may look like the following one any Linux/Unix/Mingw/Cygwin/MacOSX environment:

> tar xvzf LuaPi-<VERSION>.tar.gz

To check the library, you can try the (few) provided examples:

> source ./prepare.sh
> lua examples/cs.lua
...
> lua examples/rdv.lua
...
> (etc.)

Most examples are (or will be) thoroughly commented, and further documentation should happen
at some point.

CONTENTS
--------
LuaPi-<VERSION>/  :  main directory
   README : this file
   HISTORY : the history of versions
   COPYRIGHT : our rights (and few duties)
   VERSION : the current version
   AUTHORS : the authors of the software
   doc/ : tutorial and reference documentation
   lib/ : the library file(s)
   lib/pi.lua : the main LuaPi module
   examples/ : largely commented examples
   prepare.sh : to test LuaContractor (see INSTALLATION just above)

DOCUMENTATION
-------------

LuaPi tutorial:
see doc/tutorial/LuaPiTut-<VERSION>.pdf

CONTACT
-------

Please use the project page on LuaForge (or author homepage)

LINKS
-----

- LuaPi home page: http://luapi.luaforge.net

- Lua home page:  http://www.lua.org
- LuaForge projects: http://www.luaforge.net

- Personal home page: http://www-poleia.lip6.fr/~pesch
  - research work: http://www-poleia.lip6.fr/~pesch/pithreads
Something went wrong with that request. Please try again.