Codec overview (src/sydra/codec/*)
This directory contains encoding/compression helpers used by on-disk formats (notably segments).
Current usage:
src/sydra/storage/segment.zigv1 (SYSEG2) uses:- timestamp codec
1→src/sydra/codec/gorilla.zig.encodeTsDoD - value codec
1→src/sydra/codec/gorilla.zig.encodeF64
- timestamp codec
Important: several codec modules are currently placeholders/stubs.
Modules
src/sydra/codec/gorilla.zig– delta-of-delta timestamps + Gorilla-like float XOR encodingsrc/sydra/codec/bitpack.zig– bit-packing stubsrc/sydra/codec/rle.zig– run-length encoding stubssrc/sydra/codec/zstd.zig– placeholder zstd wrapper (currently returns empty slices)
Code excerpt (integration point)
Segments currently hard-code codec IDs 1 and dispatch directly to Gorilla helpers:
src/sydra/storage/segment.zig (codec bytes + encoder calls)
try writer.writeByte(1); // ts codec: 1=dod-zzvar
try writer.writeByte(1); // val codec: 1=gorilla-xor
try @import("../codec/gorilla.zig").encodeTsDoD(writer, points[0].ts, points);
var vals = try alloc.alloc(f64, points.len);
defer alloc.free(vals);
for (points, 0..) |p, i| vals[i] = p.value;
try @import("../codec/gorilla.zig").encodeF64(writer, vals);