Technical Details (flowlog.c)

This document describes the runtime model of Flowlog as built from flowlog.c. It is intended for developers and performance work.

Process model

Threads and scheduling (high level)

Flowlog has one OS process and may create pthread workers when:

Thread usage is intentionally bounded:

CPU and memory auto-configuration

CPU count

Flowlog:

Stack sizing

OR-par workers execute deep recursive solver code. To avoid stack overflows while also staying safe on high-core machines, Flowlog:

Memory strategy

Flowlog’s core solver allocates many short-lived objects (terms, environments, temporary vectors).

This build uses:

Tuning:

Signals and interactive control

When running in the TTY REPL:

When not a TTY (piped input), Ctrl‑C/Ctrl‑T behavior depends on your shell/terminal and may not be delivered to Flowlog.

I/O and streams

Flowlog uses process-local FILE* streams and implements the ISO stream predicates directly.

REPL note:

Output and error reporting

Flowlog prints results in a test-friendly format:

For scripting, treat stdout as the primary “transcript” stream.

Debugging OR-parallelism

Environment variables:

These logs are intended to help identify: