_______ _______ __ _ ______ _ _ _ ____ ____ ____ |______ | |______ | \ | | ____ |\/| | |___ |--< [__] | |_____ |______ | \_| |_____| 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
gopher://schinkel.bevuta.com/1/microfleng/microfleng | gemini://schinkel.bevuta.com/microfleng/microfleng.gmi