FunLoft is an experimental language for
concurrent
programming, designed with the following objectives:
- make concurrent programming simpler by providing
a framework with a clear and sound semantics.
- provide a safe language, in which, for example, data-races
are impossible.
- control the use of resources (CPU and memory); for
example, memory leaks cannot occur in FunLoft programs, which always
react in finite time.
- have an efficient implementation which can deal with
large numbers of concurrent components.
- benefit from the real parallelism offered by
multicore machines.
Cellular automata are typical examples of programs that can be easily
encoded in
FunLoft:
The cellular automaton shown in the image is an example of
Game Of Life; it is made of concurrent cells run in a synchronised
way; the number of cells can be large (here, 10K cells are present);
the green and red cells can be run in real parallelism on a multicore
machine; the program is proved to run in finite memory, without memory
leaks and without data-races. To get an idea of what
FunLoft programs
look like, look at the
code of
the cellular automaton program. Examples of
correct and incorrect programs
are also available.
FunLoft is based on a programming model which is a variant of
reactive programming and is closely related
to
FairThreads and
LOFT.
A list of general questions/answers about FunLoft is available
here.
FunLoft started to be developed with support from the
ALIDECS project. It is now supported by the ANR project
PARTOUT (ANR-08-EMER-O10).
The present language definition is subject to evolution to a large
extent and is provided as is, with the hope that underlying ideas
could be useful in a way or another.
More or less closely involved in the language definition, are the following persons:
Correspondence can be addressed to
Frederic Boussinot.