<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Hurray - Blog</title>
    <subtitle>A zero-copy, streamable, language-agnostic tensor interchange format for AI&#x2F;ML inference pipelines and scientific arrays.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://www.pascalgillet.net/hurray/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://www.pascalgillet.net/hurray/blog/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-07-26T00:00:00+00:00</updated>
    <id>https://www.pascalgillet.net/hurray/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>Introducing Hurray</title>
        <published>2026-07-26T00:00:00+00:00</published>
        <updated>2026-07-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://www.pascalgillet.net/hurray/blog/introducing-hurray/"/>
        <id>https://www.pascalgillet.net/hurray/blog/introducing-hurray/</id>
        
        <content type="html" xml:base="https://www.pascalgillet.net/hurray/blog/introducing-hurray/">&lt;p&gt;Modern inference pipelines move tensors constantly: from disk into host memory, across
process boundaries, between machines, and onto accelerators. The formats we reach for were
each designed for one leg of that journey. &lt;strong&gt;DLPack&lt;&#x2F;strong&gt; nails in-process hand-off but has no
notion of quantization or on-disk storage. &lt;strong&gt;SafeTensors&lt;&#x2F;strong&gt; and &lt;strong&gt;GGUF&lt;&#x2F;strong&gt; store weights well
but say nothing about runtime interchange. &lt;strong&gt;Apache Arrow&lt;&#x2F;strong&gt; is superb for columnar
analytics but isn&#x27;t tensor-shaped.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Hurray&lt;&#x2F;strong&gt; is an attempt to cover the whole path with a single tensor descriptor.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;two-formats-one-descriptor&quot;&gt;Two formats, one descriptor&lt;&#x2F;h2&gt;
&lt;p&gt;Hurray defines two binary formats that share the same descriptor encoding:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;streaming format&lt;&#x2F;strong&gt; for runtime interchange — self-delimiting, no seek required, safe
to start processing before the payload finishes arriving; and&lt;&#x2F;li&gt;
&lt;li&gt;a &lt;strong&gt;file format&lt;&#x2F;strong&gt; for on-disk model storage — named tensors, a footer index for random
access, and 4 KiB-aligned buffers for mmap-to-GPU zero-copy loading.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Write a descriptor parser once and it works for both.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;built-for-inference&quot;&gt;Built for inference&lt;&#x2F;h2&gt;
&lt;p&gt;Hurray treats layout diversity, quantization, and device memory as first-class concerns:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Twelve memory layouts&lt;&#x2F;strong&gt;, including tiled&#x2F;blocked for GEMM, Morton and Hilbert curves
for spatial locality, sparse COO&#x2F;CSR&#x2F;CSC&#x2F;CSF, block-paged for PagedAttention KV caches,
and composite tensors for partitioning and overlays.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Five quantization schemes&lt;&#x2F;strong&gt; — per-tensor, per-channel, and per-block affine, NF4
(QLoRA), and MXFP (OCP Microscaling &#x2F; Blackwell) — with normative dequantization formulas.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Zero-copy&lt;&#x2F;strong&gt; buffer sharing through a stable, language-agnostic C ABI.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;where-we-are&quot;&gt;Where we are&lt;&#x2F;h2&gt;
&lt;p&gt;The specification is at &lt;code&gt;0.1.0-draft&lt;&#x2F;code&gt; and the Rust reference implementation is underway.
The format is designed to be &lt;strong&gt;evolvable&lt;&#x2F;strong&gt;: backward-compatible and forward-additive across
the whole &lt;code&gt;1.x&lt;&#x2F;code&gt; line, with public tags never rebound once allocated.&lt;&#x2F;p&gt;
&lt;p&gt;This site is where the specification, implementation requirements, cookbook, tutorials, and
design decisions (ADRs) live — versioned alongside every release. Have a look at the
&lt;a href=&quot;&#x2F;docs&#x2F;stable&#x2F;&quot;&gt;docs&lt;&#x2F;a&gt;, and come say hello on
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pgillet&#x2F;hurray&quot;&gt;GitHub&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
