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 ArrowUtf8("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 ArrowBinary("z").Errow.Numeric: Fixed-width primitive numerical array compliant with Apache ArrowPrimitive.- 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.
- Supported signed types:
- 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:
- 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:
Access:arr[i],arr[-1],arr[0..-1//1],put_in/2,update_in/2,pop_in/2.Enumerable: $O(1)$count/1,member?/2, 3-arityslice/1, andreduce/3.Collectable: Specialized tuple accumulator avoiding intermediate struct allocations.Inspect: Concise columnar preview with null count and length indicators.
- Apache Arrow Official Testing & Compliance:
- Full integration test suite with official
apache/arrow-testingfixtures: IPC files (.arrow), streams (.stream), and schemas (.json). - Strict LSB-first validity bitmap export in
Errow.CDatawith high-performance tail-recursive binary accumulator. - End-to-end cross-language roundtrip verification with
pyarrow.
- Full integration test suite with official
- Runtime Environment:
- Requires Elixir
>= 1.16.0to guarantee Erlang/OTP 26+ runtime environment with native JIT register-packed binary construction and pattern matching.
- Requires Elixir