Skip to content
This repository has been archived by the owner on Nov 20, 2020. It is now read-only.
/ luapi Public archive

LuaPi: Concurrent programming made simple

Notifications You must be signed in to change notification settings

LuaDist/luapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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