💾 Archived View for schinkel.bevuta.com › microfleng › README captured on 2024-08-31 at 13:03:21.
⬅️ Previous capture (2023-11-04)
-=-=-=-=-=-=-
_______ _______ __ _ ______ _ _ _ ____ ____ ____ |______ | |______ | \ | | ____ |\/| | |___ |--< [__] | |_____ |______ | \_| |_____| Version: 2 I. Introduction This software is an implementation of "FLENG", a low level concurrent logic programming language descended from Prolog, intended for 8-bit microcomputers. A compiler is provided to translate programs written in FLENG into assembly language which can subsequently be assembled and linked into a binary executable. As FLENG is quite minimal in features, a translator from "Flat Guarded Horn Clauses" and "Strand" (other, hgher-level concurrent logic languages) into FLENG is also available. The compiler is hosted on UNIX systems and allows cross-compilation of FGHC, Strand and FLENG code to one of the following targets: - CP/M, running on Z80 CPUs - Commodore 64 - The "Uxn" virtual machine[10] 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 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 and the run time library support can access external assembler code. The compiler generates native code, but does currently not perform a lot of optimizations, so performance-sensitive code should probably be written in assembler. FLENG should be particularly well suited as a coordination language for providing intercommunication and synchronization with reasonable overhead while calling out to native code for low-level or speed-critical operations. 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. See the file "LICENSE" for more information. A git[4] repository containing the sources can be found at the projects gitlab site[5]. See also [8] for a more feature-rich variant of FGHC/Strand/FLENG for UNIX environments. II. Build and Installation