Feature matrix
Copy MarkdownStatus values: implemented, not implemented, untested. A fixture can contain a feature this library does not read. That is not support.
The local Elixir runs are recorded in test-reports/stage-0.md, test-reports/stage-1.md, test-reports/stage-2.md, test-reports/stage-3.md, test-reports/stage-4.md, and test-reports/stage-5.md. The required CI jobs are configured and have not been run from this machine.
| Capability | Status | Evidence |
|---|---|---|
| Open and close a local file | implemented | F3.IO.Local, contract tests |
| Open and close an in-memory binary | implemented | F3.IO.Memory, contract tests |
| HTTP range read | implemented | F3.IO.HTTP. Opt-in. Redirects refused. :minio excluded unless F3_MINIO=1 |
| Positioned read capped by the caller | implemented | pread/3 tests |
| Idempotent close, error after close | implemented | contract tests |
| Wire version constants 0.1 | implemented | F3.Format, doctests |
| Reject every other wire version | implemented | F3.Postscript returns :unsupported_version |
| Postscript decode and bounds checks | implemented | F3.Postscript, test/f3/postscript_test.exs |
| FlatBuffers footer | implemented | F3.FlatBuffer, F3.Footer; golden JSON matches the upstream reader |
| Arrow schema, row groups, IOUnits, EncUnits | implemented | F3.schema/1 and F3.metadata/1 on the eight fixtures |
| Read rows | implemented when F3_BUILD_NATIVE=1 | F3.read/2 on the eight fixtures. Default build: :native_unavailable |
| Lazy stream | implemented when F3_BUILD_NATIVE=1 | F3.stream/2 does not pread until the first pull. Enum.take/2 stops |
Columnar batch and to_rows/1 | implemented | F3.Batch stores columns. to_rows/1 is the convenience zip |
| Write | implemented when F3_BUILD_NATIVE=1 | F3.Writer. Local temp file, rename after finish. Default build: :not_implemented |
| Projection | implemented | columns: and row_groups:. Unknown name is :invalid_projection |
| Postscript checksum | reported, not verified | both u64 fields are stored |
| Chunk checksum | implemented when the footer field is present | XXH64 seed 0. The eight fixtures store none |
CASCADE / Vortex decode | implemented when F3_BUILD_NATIVE=1 | dirty CPU NIF. Does not link fff-poc |
CUSTOM_WASM decode or execution | opt-in | Default :off is :unsupported_encoding and does not read the section. wasm: :sandbox runs Wasmtime 28 when F3_BUILD_NATIVE=1. custom_wasm.f3 matches the manifest rows |
| Shared dictionary | refused | :unsupported_encoding |
| Local dictionary, Zstd, Lz4, nested types | implemented when F3_BUILD_NATIVE=1 | round-trip of dictionary.f3, compressed_zstd.f3, compressed_lz4.f3, and nested.f3 |
| Bool values | implemented when F3_BUILD_NATIVE=1 | writer round trip. Not present in the eight fixtures |
| Plain binary values | untested | not a claimed writer type, and not present in the eight fixtures |
| Optional NIF | implemented when F3_BUILD_NATIVE=1 | macOS arm64, rustc 1.93.0-nightly (nightly-2025-11-15), Elixir 1.20.2 / OTP 28. Default build: {:error, :native_unavailable}. Linux not run locally |
| macOS arm64 local Elixir tests | passed | Elixir 1.20.2, OTP 28.3.1. mix test --cover passes the 90% threshold. See test-reports/stage-1.md. |
| Linux x86_64 CI | configured, not run | .github/workflows/ci.yml job test (ubuntu-latest) |
| macOS arm64 CI | configured, not run | .github/workflows/ci.yml job test (macos-15) |
| Linux arm64 | untested | no job |
| Precompiled NIF release | configured, not run | .github/workflows/ci.yml on a v* tag, after the test jobs. Targets: aarch64-apple-darwin, x86_64-unknown-linux-gnu. NIF version 2.17 |
| Hex publish | configured, not run | publish job in .github/workflows/ci.yml after that GitHub release. Requires the HEX_API_KEY secret |
| Upstream Intel Debian 12 | untested by this repo | upstream's own claim, not reproduced here |