Lazy pipeline API with automatic fusion optimization, custom memory management, and Python bindings. Everything built from the ground up.
Pure C17 with zero external dependencies. No package manager, no vendored libraries, no system requirements beyond cmake and a C compiler. One public header file.
Build a pipeline of filter, group, sort, and join operations lazily. Nothing runs until you call .collect(). The optimizer rewrites your pipeline automatically—fusing passes, pushing down predicates, eliminating dead branches.
Custom buddy allocator with copy-on-write ref counting. Morsel-driven execution processes 1024-element tiles at a time. Thread pool with lock-free dispatch. Every layer designed for columnar workloads.
Nothing executes until you ask for results. The optimizer handles the rest.
import teide as td
# Load CSV — returns a lazy table handle
table = td.read_csv("measurements.csv")
# Build pipeline — nothing executes yet
result = (
table
.filter(td.col("region") == "EU")
.group_by(["product"])
.agg(
total=("revenue", "sum"),
avg_price=("price", "avg"),
count=("id", "count"),
)
.sort("total", descending=True)
)
# Execute — fused optimizer kicks in
df = result.collect()
print(df)
No package manager needed. Just cmake and a C compiler.
git clone https://github.com/hetoku/teide.git
cd teide
# Debug (with sanitizers)
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
# Release (optimized)
cmake -B build_release -DCMAKE_BUILD_TYPE=Release
cmake --build build_release
# Run tests
cd build && ctest --output-on-failure
# Use the release build
export TEIDE_LIB=build_release/libteide.so
python3 -c "
import teide as td
table = td.read_csv('data.csv')
result = table.group_by(['id1']).agg(
v1_sum=('v1', 'sum')
)
print(result.collect())
"
Read the full specification or browse the source on GitHub.