Skip to content

Update API structure

Latest

Choose a tag to compare

@LincolnG4 LincolnG4 released this 31 Aug 22:32
9271885
  • Fast on large files: memory-mapped I/O, lazy block-level
    decompression with caching, and typed columnar decoding (no per-sample
    boxing). Channels decode in parallel.
  • Typed signals: samples come back as []float64, []int64,
    []uint64, []string or [][]byte — never []interface{}.
  • Streaming: read whole channels, sample windows, or iterate chunk by
    chunk for progressive loading.
  • Robust: no panics on malformed files (fuzz-tested); errors carry the
    block type and file offset.
  • Writes MDF files too: a streaming writer for data loggers (bounded
    memory, crash-safe unfinalized layout, Flush() durability points) and
    a batch column API for exports, with optional DZ compression.
  • Decodes CAN bus logs: point it at a .dbc (or use the one embedded
    in the log) and get physical signals instead of raw frame bytes.
  • Sample reductions: reads precomputed min/mean/max aggregates, so a
    viewer can draw a multi-million-sample signal from a few hundred
    records.
  • Supports sorted and unsorted files, compressed data (DZ deflate +
    transposition, inflated in parallel), data lists (DL/HL), MDF 4.2
    column storage (LD/DV/DI), variable-length data (VLSD/SD),
    invalidation bits, non-byte-aligned integer channels, all three
    channel-array (CA) storage types, the channel hierarchy (CH) tree,
    unfinalized logger files (standard finalization steps applied in
    memory), and the full set of conversion rules (linear, rational,
    algebraic formulas, value/range tables, text tables).