All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.0] - 2026-10-25

Added

  • Errow.String: Columnar string array compliant with Apache Arrow Utf8 ("u").
    • Continuous data buffer with little-endian 32-bit offsets and 1-bit validity bitmap.
    • $O(1)$ random access slicing via BEAM sub-binaries without copying.
  • Errow.Binary: Columnar array for opaque byte buffers compliant with Apache Arrow Binary ("z").
  • Errow.Numeric: Fixed-width primitive numerical array compliant with Apache Arrow Primitive.
    • Supported signed types: :s8, :s16, :s32, :s64, :s128, :s256.
    • Supported unsigned types: :u8, :u16, :u32, :u64, :u128, :u256.
    • Supported floating point: :f32, :f64.
    • 128-bit and 256-bit BigInt support mapped directly to Arrow Decimal / FixedSizeBinary.
  • Typed Shorthand Constructors & Aliases:
    • Errow.s8/0,1, Errow.u8/0,1 .. Errow.s256/0,1, Errow.u256/0,1.
    • Errow.f32/0,1, Errow.f64/0,1.
    • Errow.numeric_8/0,1, Errow.numeric_16/0,1, Errow.numeric_32/0,1, etc.
    • Usable without parentheses in comprehensions: for x <- stream, into: Errow.s8, do: x.
  • High-Performance Native Aggregations:
    • Specialized continuous binary loops executing at JIT speed: sum/2, product/2, min/2, max/2, min_max/2, mean/2, join/3.
    • Null skipping (skip_nulls: true by default) and $O(1)$ count lookup.
  • Apache Arrow C Data Interface (Errow.CData):
    • export_schema/2: Generates standard Arrow C schema metadata (format, name, flags, n_buffers).
    • export_buffers/2: Exports 8-byte aligned raw buffers (validity, offsets, data) ready for zero-copy consumption by C, Rust (arrow-rs, rustler), Zig, DuckDB, or Polars.
  • Elixir Protocol Implementations:
  • Apache Arrow Official Testing & Compliance:
    • Full integration test suite with official apache/arrow-testing fixtures: IPC files (.arrow), streams (.stream), and schemas (.json).
    • Strict LSB-first validity bitmap export in Errow.CData with high-performance tail-recursive binary accumulator.
    • End-to-end cross-language roundtrip verification with pyarrow.
  • Runtime Environment:
    • Requires Elixir >= 1.16.0 to guarantee Erlang/OTP 26+ runtime environment with native JIT register-packed binary construction and pattern matching.