flowlog.c)This documentation set covers Flowlog: a
single-file, single-process ISO-style
Prolog system built from flowlog.c and using
pthreads for parallelism.
For code navigation, flowlog.c is organized into
SECTION NN and SUBSECTION NN.N headings. See
the layout map in DEVELOPMENT.md when a doc
references a section number.
Flowlog provides three execution engines:
wamvm (default) - a bytecode VM for compiled clause
bodies (still sharing the same unifier and built-ins as
wam) (SECTIONS 18/24). It can fall back to wam
when a program/query uses unsupported features (or be forced to error
via FLOWLOG_WAMVM_REQUIRE_VM=1) (SECTION 24). In VM-only
mode, it passes the INRIA ISO suite.wam - a WAM-lite engine for fast execution of most
ISO-style code (including dynamic database and call-by-variant tabling)
(SECTION 23). It can fall back to the interpreter when required.interp / tree - a direct interpreter
(“tree-walking”) used as the reference/fallback engine (SECTION
22).flowlog.c) you can compile with any
reasonably POSIX C toolchain.PARALLELISM.md).QUICKSTART.md - build,
run, and first queryCLI.md - command-line + REPL
referenceUSER_GUIDE.md - writing
and running programs (portable ISO style)PARALLELISM.md -
parallel flags, safety notes, tuningCONFORMANCE.md -
conformance goals and test suitesPREDICATES.md - built-in
predicates, evaluables, and Flowlog extensionsTESTS.md - regression tests
and ISO suite runners (full source bundle)BENCHMARKS.md - benchmark
harnesses and reference programs (full source bundle)TECHNICAL_DETAILS.md -
runtime model, memory/threads/signals, portability notesARITHMETIC.md - integer
representation and arithmetic internalsIMPLEMENTATION.md -
parser, terms, unification, indexing, tabling, OR/AND-par internalsDEVELOPMENT.md -
building, testing, debugging, and contributingTROUBLESHOOTING.md -
common issues (stacks, threading, performance)