_______ _______ __ _ ______ _ _ _ ____ ____ ____ |______ | |______ | \ | | ____ |\/| | |___ |--< [__] | |_____ |______ | \_| |_____|
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.
Release History:
Version 2:
* Fixed bug in 2nd-level indexing where duplicate cases weren't
correctly handled.
Version 1:
* Initial release