Implementation Status

Which spec features each Hurray implementation actually provides. Rows are format features, taken from Compliance; columns are implementations.

ImplementationCovers
hurray-core + hurray-ioRust reference implementation
hurray-pythonPython bindings (PyO3)
hurray-ffiC ABI surface

This page is generated, never hand-written. Tag coverage is read back out of the decoders one byte at a time, each capability is proven by an encode → decode round-trip, the Python column is introspected from the compiled module, and the C column is the set of symbols the generated header exports. CI regenerates the page and fails if it differs from the committed copy, so a feature an implementation gains — or loses — cannot pass unreported.

What no probe can detect carries a declared status and a justification, listed under the table it appears in.

Legend

  • ✅  Implemented
  • ◐  Partly implemented — see the note
  • ❌  Not implemented
  • ➖  Not this layer's to implement — see the note
  • 📄  Specified, implemented nowhere — see the note

Adding a third-party implementation is a column, not a redesign: append an [[implementations]] block to website/coverage-matrix.toml with default = "no", then override that per section or per row as the implementation covers more. No row changes shape.

Conformance Levels

The three levels defined in Compliance. Level 2 implies Level 1, and Level 3 implies Level 2.

Featurehurray-core + hurray-iohurray-pythonhurray-ffi
Level 1 — Reader✅✅◐ (a)
Level 2 — Writer✅✅❌
Level 3 — Network transport📄 (b)📄 (b)📄 (b)
  • (a) hurray_descriptor_decode parses and validates a descriptor through hurray-core, so the reading itself is complete, but the C surface exposes only the type tag, layout tag, rank, shape, byte offset, and buffer table. Layout-specific payload fields — CSR nnz, tile shape, the block table — have no accessor, so a C caller cannot yet interpret every Tier 1 layout it can decode.
  • (b) No crate implements any part of the Level 3 transport: none of the message types, capability flags, or the RDMA data plane appear anywhere in hurray-core, hurray-io, hurray-ffi, hurray-python, or hurray-inspect. hurray-io implements the stream framing and the file container — Levels 1 and 2 — and stops there. The protocol is specified so that an implementation has something to build against; scheduling one is tracked separately.

Element Types

Tier 1 types are mandatory for every conforming implementation; Tier 2 types are optional. Extension types (0xF0–0xFE) are listed under Optional Descriptor Sections, since the type tag and its describing section are one feature on the wire.

FeatureTagTierhurray-core + hurray-iohurray-pythonhurray-ffi
float160x011✅✅➖
bfloat160x021✅✅➖
float320x031✅✅➖
float640x041✅✅➖
int80x101✅✅➖
uint80x111✅✅➖
int160x121✅✅➖
uint160x131✅✅➖
int320x141✅✅➖
uint320x151✅✅➖
int640x161✅✅➖
uint640x171✅✅➖
bool0x201✅✅➖
float8_e4m30x402✅✅➖
float8_e5m20x412✅✅➖
float8_e8m00x422✅✅➖
float4_e2m10x432✅✅➖
float6_e2m30x442✅✅➖
float6_e3m20x452✅✅➖
float1280x462✅✅➖
int40x482✅✅➖
uint40x492✅✅➖
int20x4A2✅✅➖
uint20x4B2✅✅➖
complex640x502✅✅➖
complex1280x512✅✅➖
  • hurray-ffi — The C ABI reports the raw tag byte (hurray_descriptor_element_type_tag, hurray_descriptor_layout_tag) and never interprets it. There is no per-tag support to report at this layer: a C caller decides for itself which tags it can handle, and gains a new one without any change to hurray-ffi.

Memory Layouts

Tier 1 layouts (0x01–0x0B) are mandatory for reading; Hilbert (0x40) is Tier 2.

FeatureTagTierhurray-core + hurray-iohurray-pythonhurray-ffi
Row-major0x011✅✅➖
Column-major0x021✅✅➖
Strided0x031✅✅➖
Tiled / blocked0x041✅✅➖
Morton (Z-order)0x051✅✅➖
COO0x061✅✅➖
CSR0x071✅✅➖
CSC0x081✅✅➖
CSF0x091✅✅➖
Block-paged0x0A1✅✅➖
Composite / virtual0x0B1✅✅➖
Hilbert curve0x402✅✅➖
  • hurray-ffi — The C ABI reports the raw tag byte (hurray_descriptor_element_type_tag, hurray_descriptor_layout_tag) and never interprets it. There is no per-tag support to report at this layer: a C caller decides for itself which tags it can handle, and gains a new one without any change to hurray-ffi.

Quantization Schemes

Carried in the optional quantization section. Support means encoding and decoding the scheme descriptor; performing the dequantization arithmetic is a compute concern and outside the format's scope.

FeatureTagTierhurray-core + hurray-iohurray-pythonhurray-ffi
Per-tensor affine0x011✅✅➖
Per-channel affine0x021✅✅➖
Per-block affine0x031✅✅➖
NF4 (NormalFloat4)0x042✅✅➖
MXFP (OCP Microscaling)0x052✅✅➖
  • hurray-ffi — The C ABI reports the raw tag byte (hurray_descriptor_element_type_tag, hurray_descriptor_layout_tag) and never interprets it. There is no per-tag support to report at this layer: a C caller decides for itself which tags it can handle, and gains a new one without any change to hurray-ffi.

Optional Descriptor Sections

Sections a descriptor may carry beyond the fixed header, each gated by a flag bit. A reader that does not understand one skips it using descriptor_length, so none of these is required at any conformance level.

Featurehurray-core + hurray-iohurray-pythonhurray-ffi
Quantization✅✅❌
Shard✅✅❌
Statistics✅✅❌
Extension type (0xF0–0xFE)✅✅❌
Composite member✅✅❌

Streaming and File Interchange

The two framings that share the descriptor encoding: the self-delimiting stream format and the HRRYFILE container.

Featurehurray-core + hurray-iohurray-pythonhurray-ffi
Stream — write✅✅❌
Stream — read✅✅❌
Stream — composite tensors✅✅❌
File — write✅✅❌
File — read✅✅❌
File — KV metadata section✅✅❌
File — composite tensors✅✅❌

Network Transport (Level 3)

The cross-machine protocol in Interchange. Specified in full, implemented nowhere — see the note below the table.

Featurehurray-core + hurray-iohurray-pythonhurray-ffi
Session establishment (CLIENT_HELLO / SERVER_HELLO)📄📄📄
Tensor transfer (TENSOR_REQUEST / TENSOR_DESCRIPTOR / TENSOR_DATA / TENSOR_DATA_END)📄📄📄
Control messages (ERROR / PING / PONG)📄📄📄
Client push (TENSOR_PUT / TENSOR_PUT_ACK)📄📄📄
Layout negotiation (supported_layouts, ALLOW_TRANSCODE)📄📄📄
On-the-fly transcoding (TRANSCODING)📄📄📄
Parallel shard transfers (PARALLEL_STREAMS, PARALLEL_OK)📄📄📄
RDMA data plane (RDMA_DATA_PLANE, RDMA_REGISTER, RDMA_READY)📄📄📄
  • Every column — No crate implements any part of the Level 3 transport: none of the message types, capability flags, or the RDMA data plane appear anywhere in hurray-core, hurray-io, hurray-ffi, hurray-python, or hurray-inspect. hurray-io implements the stream framing and the file container — Levels 1 and 2 — and stops there. The protocol is specified so that an implementation has something to build against; scheduling one is tracked separately.