FAQ

What is Hurray?

A language-agnostic, zero-copy binary format for multi-dimensional tensor data, optimized for AI/ML inference. It provides two formats — a streaming format for runtime interchange and a file format for on-disk model storage — that share a single tensor descriptor encoding.

How is it different from SafeTensors or GGUF?

SafeTensors and GGUF are file formats. Hurray covers both on-disk storage and runtime interchange with the same descriptor, and adds a rich layout vocabulary (twelve layouts, including sparse and block-paged) and five normative quantization schemes with defined dequantization formulas. GGUF's block-quantization and typed key-value metadata were direct references; Hurray generalizes them.

How is it different from Apache Arrow?

Arrow is columnar and record-batch oriented; Hurray is tensor oriented. Hurray borrows Arrow's buffer-protocol and IPC-framing ideas but targets N-dimensional tensors, quantized element types, and inference-specific layouts rather than columnar analytics.

How is it different from DLPack?

DLPack is the closest existing tensor ABI and inspired Hurray's zero-copy, in-process interchange. Hurray adds quantization, a much broader layout vocabulary, IPC and cross-machine transports, and an on-disk file format — none of which DLPack addresses.

Is it zero-copy?

Yes. Buffers are shared by reference through a stable C ABI: 64-byte SIMD alignment in the streaming format and 4 KiB page alignment in the file format for mmap-to-GPU loading. Quantization parameters live in separate buffer-table entries so both data and parameters stay zero-copy.

Which languages are supported?

The format and its C FFI boundary are deliberately language-agnostic — any language that can read a struct from a buffer can implement Hurray. The reference implementation is in Rust (core types plus streaming and file I/O) and includes a C ABI layer and Python bindings. The Python bindings offer zero-copy interop with NumPy and PyTorch — via __dlpack__ and a native Hurray buffer protocol — plus save/load for the file format. Bindings for other languages can build directly on the same C ABI. There is also a hurray-inspect command-line tool for examining Hurray descriptors byte by byte.

Is the format stable yet?

The specification is at 0.1.0-draft. The format is designed to be evolvable — backward-compatible and forward-additive across the whole 1.x line, with public tags never rebound — but it is pre-1.0 and may still change. See the versioning policy in the docs.

Where do I report issues or ask questions?

On GitHub. See the Community page for contribution guidelines and governance.