Rayforce is a zero-dependency embeddable engine where columnar analytics and graph operations share a single operation DAG, pass through a multi-pass optimizer, and execute as fused morsel-driven bytecode. Pure C17. No malloc.
Type inference, constant folding, sideways information passing, factorize, predicate pushdown, filter reorder, fusion, and DCE — all in one pass over the DAG before a single element is touched.
1024-element morsel-driven bytecode. Element-wise ops fuse into single-pass pipelines. Thread-local arenas keep allocation off the critical path.
Double-indexed compressed sparse rows. Forward + reverse indices, mmap-friendly persistence, and algorithms from BFS to worst-case optimal joins.
Everything you need for columnar analytics, graph traversal, and an interactive query language in a single embeddable library.
Morsel-driven bytecode over 1024-element chunks. Element-wise ops fused into single-pass pipelines that stay L1-resident.
Double-indexed CSR storage. BFS, Dijkstra, A*, PageRank, Louvain, LFTJ — all in the same DAG.
Lisp-like query REPL with rich builtins. Lambdas compile lazily to bytecode. select/update bridge to the DAG optimizer.
Type inference → constant folding → SIP → factorize → predicate pushdown → filter reorder → fusion → DCE.
Buddy allocator with slab cache. Thread-local arenas, lock-free allocation, COW ref counting. No malloc.
Pure C17, single public header. Builds with make. ~16K lines of engine code. Embeds into any C/C++ project.
Data flows from lazy DAG construction through a multi-pass optimizer into fused morsel-driven bytecode execution.
Lazy DAG nodes → multi-pass optimizer (type inference, SIP, factorize, predicate pushdown, fusion, DCE) → fused morsel-driven executor with register-slot bytecode. Graph algorithms run in the same pipeline — no serialization between analytics and traversal.
Start the REPL, build tables, aggregate, and pivot — all in one session.
$ make && ./rayforce
‣ (pivot t 'Symbol 'Side 'Qty sum)