flowlog.c)This document describes the runtime model of Flowlog as built from flowlog.c. It is intended for
developers and performance work.
Flowlog has one OS process and may create pthread workers when:
Thread usage is intentionally bounded:
flowlog_parallel_profile=fast,
depth cutoffs and OR-par nesting limits prevent runaway spawning.flowlog_parallel_profile=iso for ordered commits,
or flowlog_parallel_profile=off to disable Flowlog parallel
features.Flowlog:
sysconf(_SC_NPROCESSORS_ONLN))--threads N or
FLOWLOG_N_CPUPROC=NOR-par workers execute deep recursive solver code. To avoid stack overflows while also staying safe on high-core machines, Flowlog:
FLOWLOG_ORPAR_STACK_SIZEFlowlog’s core solver allocates many short-lived objects (terms, environments, temporary vectors).
This build uses:
Tuning:
FLOWLOG_POOL_LOCAL_ALLOC=on can reduce allocator
contention on some OR-par workloads.When running in the TTY REPL:
SIGINFO) prints a live status report
(predicate, depth, parallel flags, memory counters).When not a TTY (piped input), Ctrl‑C/Ctrl‑T behavior depends on your shell/terminal and may not be delivered to Flowlog.
Flowlog uses process-local FILE* streams and implements
the ISO stream predicates directly.
REPL note:
Flowlog prints results in a test-friendly format:
true / falseX = 1, Y = fooerror(...) termsFor scripting, treat stdout as the primary “transcript” stream.
Environment variables:
FLOWLOG_DEBUG_ORPAR — logging levelFLOWLOG_DEBUG_ORPAR_LOG — file path to append logsThese logs are intended to help identify: