Flibs, version 0.9, december 2008 --------------------------------- What is Flibs ------------- Flibs is a collection of Fortran modules for various tasks: - [cgi] facilitate web programming via CGI - [checking] checking various aspects of the code via instrumentation and static analysis - [computing] computational tasks, such as automatic differentiation - [controlstructures] flow control structures such as finite state machines - [datastructures] support for implementing linked lists, dictionaries and the like - [filedir] OS-level tasks regarding files and directories - [funit] a framework for unit testing, inspired by JUnit - [ipc] inter-process communication - [lemon] Lex/Yacc-like parser generation - [platform] utilities to query the OS and the platform running the program - [reporting] tools for generating reports in various formats (notably LaTex and HTML) - [specs] tool to generate a robust reading routine from specifications, geared to tabular input - [sqlite] interface to the SQLite database management system (http//www.sqlite.org) - [streams] modules to treat files as "streams" rather than record-oriented - [strings] modules to manipulate strings (tokenizing, varying-length strings) - [tools] preprocessor tool to manipulate the source code - [wrapper] tool to generate Fortran 90 and Fortran 2003 interfaces to C routines from the C header files Furthermore: - [app] a tool for generating makefile dependencies from the Fortran source code and an experiment at "literate programming". - [chksys] a collection of programs to probe the properties of the Fortran compiler (with a similar program for C) - [doc] documentation for the various modules (in HTML form) and several articles. - [experiments] various experiments with different programming paradigms. - [testmake] a program suite to generate test programs from simple specifications. Documentation is not complete, but most if not all modules and utilities come with a comprehensive example/test case. The Flibs project is located on SourceForge: http://flibs.sf.net Building the modules -------------------- Each directory under the "src" directory contains one or more modules or tools. The corresponding directory under "tests" contains the test/example programs and makefiles (or in some case project files for MS Developer Studio with Compaq Visual Fortran as the Fortran compiler). Each set can be built on its own. The makefiles are set up using macros to take care of differences in compilers and compiler options. In principle it should not be necessary to adapt the makefiles to your particular compiler, unless it is doing things in a completely different way than: - Compile the individual sources - Link the resulting object files into an executable The simple configuration system (configure.sh and configure.bat) helps to set up the macros for the makefiles: - configure.sh probes various compilers under Linux, Cygwin or MinGW - configure.bat is meant for Windows You can select the compiler you prefer, g95, gfortran, f95, cvf, for instance: > configure.sh gfortran Or you can select a type of build (normal, debug, optimise): > configure.sh -optimise Status of the modules --------------------- Not all modules and utilities included in the 0.9 release are fully functional yet. They have been included mainly for completeness and as a reminder: - the genetic_algorithms module typically converges too fast, so that a suboptimal solution is returned. - the tupleserver program is not quite finished yet, but as tuple spaces are a very interesting construct to achieve concurrency, it is included here. - the fwrapper program, meant to generate C/C++ interfaces from Fortran code is still in its infancy. The cwrap program (written in Tcl) is functional though. Tcl utilities ------------- While most of the code is written in standard Fortran 90, as far as the authors are aware, the collection also contains several utilities written in Tcl. If you do not have a Tcl installation, you can either get a full installation from www.activestate.com or you can use a standalone runtime executable from www.equi4.com. Copyright --------- Most of the source files have been written by Arjen Markus. The modules under "filedir", "platform" and several modules in other directories have been written by Michael Baudin. The date/time module under "computing" has been supplied by Arjan van Dijk. All source code in this project is licensed via the BSD license (see the "Copyright" file). Basically this means: Do what you want with it, but do not claim it is your original work.