Repository navigation
v2.1.0
Rayforce v2.1.0 is the first tagged release of the v2 line — a broad rework of
the aggregation engine, query/index paths, expression evaluation, and on-disk
storage. Highlights below; the compare link at the end has the full per-commit
history (800+ commits since the v2 rollup point).
✨ Highlights
Aggregation & group-by — rewritten. A new "v2" group-by engine replaces the
hand-tuned OP_GROUP_* / OP_FILTERED_GROUP operator zoo. It consumes a row
selection directly (no full materialization), and routes by key cardinality:
dense slabs for low-cardinality integer keys (serial or per-worker parallel) and
disjoint radix partitions for high-cardinality keys — parallel with no serial
merge. Per-group HyperLogLog sketches give streaming approximate distinct
counts with sparse/dense routing at high group counts.
Indexes & joins. Hash-index point lookups in find(), hash-index probes for
IN filters, and sort-index walks for distinct and ORDER BY (permutation
reuse). Radix inner joins build the hash on the smaller side, with automatic
fallback routing on pathological build-side duplication.
Null-aware fused expression evaluation. Compile-time nullable tracking with a
program-level null choke, and a fused evaluation path over nullable i64/f64
lanes — null-aware arithmetic, comparisons, and/or, isnull, and min2/max2
— with sentinel normalization on load and demotion casts.
Storage — "THE FLIP". Per-vocabulary symfiles with file-position encoding and
FILE-domain attachment, crash-safe splayed saves (sym first, .d last, stale
sweep), and a self-describing .d schema that carries column names.
Durability & IPC. A q-style transaction log (-l/-L with the .log.*
namespace), async fire-and-forget .ipc.post, .ipc.on.* connection hooks, and
unified connection handles in the poll selector.
Language. New ungroup verb (flattens nested-list columns, replicates atom
columns) and literal-symbol quote semantics.
Performance. Sustained hot-path work across the query executor, grouping, the
heap allocator, and aggregation.
This release also folds in many fixes, refactors, tests, and docs. See the full
history:
Full changelog: pre-v2-rollup...v2.1.0