Home

                       _______        _______ __   _  ______
 _  _ _ ____ ____ ____ |______ |      |______ | \  | |  ____
 |\/| | |___ |--< [__] |       |_____ |______ |  \_| |_____|

Version: 2

This software is an implementation of "FLENG", a low level concurrent

logic programming language descended from Prolog. A cross-compiler

for UNIX-compatible systems is provided to translate programs written

in FLENG into executable code for Z80 CPUs running CP/M, the Commodore

64 and the "Uxn" virtual computer system. executable. As FLENG is

quite minimal in features, a translator from "Flat Guarded Horn

Clauses" or "Strand" (other concurrent logic languages) into FLENG

is also available.

The project is an experiment in implementing concurrent logic

programming languages on very constrained computers. Performance

in terms of execution speed is quite limited, depending on the

underlying platform. Work is ongoing to improve the quality of

the generated code, but the limitations of the host system should

be kept in mind.

FLENG programs allow for high parallelism at a very fine grained

level - goals are executed concurrently and communicate solely via

single-assignment logic variables. The use of logic variables for

inter-process communication offers an easy to use and convenient

abstraction to implement many common patterns of synchronization

and message passing in a natural manner.

Automatic management of memory is provided using a reference-counting

scheme of fixed size cells, which avoids fragmentation and eliminates

garbage collection pauses and keeps the overall memory required to

hold live data at any point of time minimal.

Interfacing to native code is straightforward and compiled FLENG

code can include assembly language programs suitable for the target

platform.

Suggestions for improvement or patches providing enhancements and

corrections are very welcome, see the User's manual for information

on how to contact the author.

This software was written by Felix L. Winkelmann and has been released

into the public domain. Do with it whatever you like.

Installation instructions

User's Manual

Get the code

Release History:

Version 2:

* Fixed bug in 2nd-level indexing where duplicate cases weren't

correctly handled.

Version 1:

* Initial release