Skip to content

Documentation

This is the reference for working with rayforce in depth. Everything builds on a single uniform handle — Value — and runs inside one live Runtime. From there you assemble typed columns into tables, shape them with a fluent query DSL, and move them across the wire with serialization and the IPC client.

Assume a live runtime

Every runtime-dependent example in these pages assumes you have started a runtime first:

use rayforce::{Runtime, Value};
let _rt = Runtime::new()?;

Map of the documentation

Data Types

The value model: atoms, vectors, lists, dicts, and tables, plus ToValue / FromValue conversions and optional chrono temporal support. Start with Values & Conversions.

Table

Build columnar tables with Table::new, read columns and rows back, transform them, and round-trip them through CSV and splayed/parted on-disk formats.

Query Guide

The fluent query DSL: expressions built with col(..) and operator overloads, select with filtering, grouping, and ordering, plus update, inserts/upserts, and joins.

IPC

Connect to a running RayforceDB server with TcpClient, execute queries, and exchange Values over RayforceDB's native protocol.

Serialization

Turn any Value into bytes with Value::serialize() and back with Value::deserialize() — the same wire format the IPC layer uses.

Where to start

If you are new, read Data Types and the Query Guide in order. If you already have a RayforceDB server running, jump straight to IPC.