Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/znippy

.nornir/assets/zoomies_primitives.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1180 680" font-family="'DejaVu Sans', 'Segoe UI', sans-serif">
  <defs>
    <linearGradient id="board" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#0b1c2e"/>
      <stop offset="1" stop-color="#06111d"/>
    </linearGradient>
    <linearGradient id="chip" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#14384f"/>
      <stop offset="1" stop-color="#0e2a3e"/>
    </linearGradient>
    <linearGradient id="rail" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#173d57"/>
      <stop offset="1" stop-color="#0c2438"/>
    </linearGradient>
    <linearGradient id="slot" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#123448"/>
      <stop offset="1" stop-color="#0a2032"/>
    </linearGradient>
  </defs>

  <!-- PCB substrate -->
  <rect x="0" y="0" width="1180" height="680" fill="url(#board)"/>
  <g stroke="#143a52" stroke-width="1">
    <line x1="0" y1="76" x2="1180" y2="76"/>
    <line x1="0" y1="632" x2="1180" y2="632"/>
  </g>
  <g fill="#16415c">
    <circle cx="40" cy="40" r="2"/><circle cx="1140" cy="40" r="2"/>
    <circle cx="40" cy="652" r="2"/><circle cx="1140" cy="652" r="2"/>
  </g>

  <!-- title -->
  <text x="40" y="44" fill="#eaf6ff" font-size="22" font-weight="700">zoomies</text>
  <text x="190" y="44" fill="#9fc9e0" font-size="15">fast primitives over the shared SIMD inflate core &#8212; <tspan fill="#bfe6ff" font-weight="700">borrow, never copy</tspan></text>

  <!-- legend -->
  <g font-size="12.5">
    <line x1="744" y1="60" x2="784" y2="60" stroke="#6fd3f5" stroke-width="3"/>
    <text x="792" y="64" fill="#cfe6f5">borrowed &amp;[u8] (zero-copy)</text>
    <line x1="1006" y1="60" x2="1046" y2="60" stroke="#7fb0cc" stroke-width="2.5" stroke-dasharray="5 4"/>
    <text x="1054" y="64" fill="#cfe6f5">depends on</text>
  </g>

  <!-- ===================== INPUT (left) ===================== -->
  <rect x="36" y="180" width="150" height="160" rx="10" fill="url(#chip)" stroke="#5aa6cf" stroke-width="2"/>
  <text x="111" y="208" fill="#eaf6ff" font-size="13.5" font-weight="700" text-anchor="middle">&amp;[u8] input</text>
  <text x="111" y="228" fill="#9fc9e0" font-size="10" text-anchor="middle">mmap or one read</text>
  <text x="111" y="250" fill="#86b3cc" font-size="9.5" text-anchor="middle">164 GB planet</text>
  <text x="111" y="264" fill="#86b3cc" font-size="9.5" text-anchor="middle">streams on ONE copy</text>
  <text x="111" y="286" fill="#7fa8c4" font-size="9" text-anchor="middle">each decoder borrows it</text>
  <text x="111" y="300" fill="#7fa8c4" font-size="9" text-anchor="middle">never copies its input</text>
  <text x="111" y="324" fill="#a9d8ee" font-size="9.5" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">candidate-offset model</text>
  <rect x="186" y="234" width="6" height="8" fill="#6fd3f5"/>

  <g stroke="#6fd3f5" stroke-width="3" fill="none"><path d="M186 238 H230 V260 H276"/></g>
  <circle cx="276" cy="260" r="4" fill="#bfecff"/>

  <!-- ===================== PARALLEL DECODERS (rail) ===================== -->
  <rect x="276" y="120" width="200" height="300" rx="12" fill="url(#rail)" stroke="#7fc8ea" stroke-width="2"/>
  <text x="376" y="148" fill="#eaf6ff" font-size="14" font-weight="700" text-anchor="middle">parallel decoders</text>
  <text x="376" y="166" fill="#9fc9e0" font-size="10" text-anchor="middle">no-barrier &#183; gatling-driven</text>
  <g font-family="'DejaVu Sans Mono', monospace" font-size="11">
    <rect x="296" y="180" width="160" height="26" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.4"/>
    <text x="308" y="198" fill="#bfe6ff">ljar</text>
    <text x="446" y="198" fill="#86b3cc" font-size="8.5" text-anchor="end">parallel JAR</text>
    <rect x="296" y="212" width="160" height="26" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.4"/>
    <text x="308" y="230" fill="#bfe6ff">lgz</text>
    <text x="446" y="230" fill="#86b3cc" font-size="8.5" text-anchor="end">gzip</text>
    <rect x="296" y="244" width="160" height="26" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.4"/>
    <text x="308" y="262" fill="#bfe6ff">lbzip2</text>
    <text x="446" y="262" fill="#86b3cc" font-size="8.5" text-anchor="end">bzip2</text>
    <rect x="296" y="276" width="160" height="26" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.4"/>
    <text x="308" y="294" fill="#bfe6ff">lzip-parallel</text>
    <text x="446" y="294" fill="#86b3cc" font-size="8.5" text-anchor="end">zip</text>
  </g>
  <text x="376" y="330" fill="#bfe6ff" font-size="9.5" text-anchor="middle" font-weight="700">all share one inflate core &#8595;</text>
  <text x="376" y="350" fill="#86b3cc" font-size="9" text-anchor="middle">benched vs unzip / pigz / lbzip2</text>
  <text x="376" y="364" fill="#7fa8c4" font-size="9" text-anchor="middle">nornir bencher (NOT criterion)</text>

  <!-- depends-on into linflate -->
  <path d="M376 302 V392 H376" stroke="#7fb0cc" stroke-width="2.5" fill="none" stroke-dasharray="6 4"/>
  <rect x="296" y="384" width="160" height="26" rx="6" fill="#0f2c40" stroke="#4f8aab" stroke-width="1.5"/>
  <text x="376" y="402" fill="#cfe6f5" font-size="10.5" text-anchor="middle" font-weight="700">linflate &#8212; SIMD DEFLATE</text>
  <rect x="470" y="234" width="6" height="8" fill="#6fd3f5"/>

  <g stroke="#6fd3f5" stroke-width="3" fill="none"><path d="M476 238 H520"/></g>
  <circle cx="520" cy="238" r="4" fill="#bfecff"/>

  <!-- ===================== FAST PRIMITIVES ===================== -->
  <rect x="520" y="160" width="190" height="200" rx="11" fill="url(#chip)" stroke="#7fc8ea" stroke-width="2.5"/>
  <text x="615" y="188" fill="#eaf6ff" font-size="13.5" font-weight="700" text-anchor="middle">fast primitives</text>
  <g font-family="'DejaVu Sans Mono', monospace" font-size="10.5">
    <rect x="538" y="200" width="154" height="30" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.3"/>
    <text x="550" y="219" fill="#bfe6ff">psort</text>
    <text x="682" y="219" fill="#86b3cc" font-size="8" text-anchor="end">parallel sort</text>
    <rect x="538" y="234" width="154" height="30" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.3"/>
    <text x="550" y="253" fill="#bfe6ff">stree64</text>
    <text x="682" y="253" fill="#86b3cc" font-size="8" text-anchor="end">static search tree</text>
    <rect x="538" y="268" width="154" height="30" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.3"/>
    <text x="550" y="287" fill="#bfe6ff">OSM index</text>
    <text x="682" y="287" fill="#86b3cc" font-size="8" text-anchor="end">node store</text>
    <rect x="538" y="302" width="154" height="30" rx="6" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.3"/>
    <text x="550" y="321" fill="#bfe6ff">gatling</text>
    <text x="682" y="321" fill="#86b3cc" font-size="8" text-anchor="end">streaming engine</text>
  </g>
  <text x="615" y="350" fill="#7fa8c4" font-size="9" text-anchor="middle">stree64 &#8592; Ragnar's static-search-tree (MIT)</text>
  <rect x="514" y="238" width="6" height="8" fill="#6fd3f5"/>
  <rect x="710" y="238" width="6" height="8" fill="#6fd3f5"/>

  <g stroke="#6fd3f5" stroke-width="3" fill="none"><path d="M710 242 H760"/></g>
  <circle cx="760" cy="242" r="4" fill="#bfecff"/>

  <!-- ===================== OSM-KATANA ===================== -->
  <rect x="760" y="150" width="200" height="220" rx="11" fill="url(#chip)" stroke="#7fc8ea" stroke-width="2"/>
  <text x="860" y="178" fill="#eaf6ff" font-size="14" font-weight="700" text-anchor="middle">osm-katana</text>
  <text x="860" y="196" fill="#9fc9e0" font-size="10" text-anchor="middle">OSM &#8594; GeoParquet / PBF</text>
  <g font-family="'DejaVu Sans Mono', monospace" font-size="9.5">
    <rect x="778" y="208" width="164" height="22" rx="4" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/>
    <text x="788" y="223" fill="#bfe6ff">convert / xml2pbf</text>
    <rect x="778" y="234" width="164" height="22" rx="4" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/>
    <text x="788" y="249" fill="#bfe6ff">pbf2geo / geo2arrow</text>
    <rect x="778" y="260" width="164" height="22" rx="4" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/>
    <text x="788" y="275" fill="#bfe6ff">verify</text>
  </g>
  <text x="860" y="304" fill="#86b3cc" font-size="9" text-anchor="middle">xml&#8594;pbf rides the gatling engine</text>
  <text x="860" y="320" fill="#86b3cc" font-size="9" text-anchor="middle">(its original extraction site)</text>
  <text x="860" y="342" fill="#a9d8ee" font-size="9" text-anchor="middle">planet / Sweden benchmarks</text>
  <text x="860" y="358" fill="#7fa8c4" font-size="9" text-anchor="middle">one read-copy, then borrow throughout</text>
  <rect x="754" y="242" width="6" height="8" fill="#6fd3f5"/>
  <rect x="960" y="242" width="6" height="8" fill="#6fd3f5"/>

  <g stroke="#6fd3f5" stroke-width="3" fill="none"><path d="M960 246 H1010 V560"/></g>

  <!-- output note -->
  <rect x="1010" y="190" width="140" height="120" rx="10" fill="url(#chip)" stroke="#5aa6cf" stroke-width="2"/>
  <text x="1080" y="216" fill="#eaf6ff" font-size="12.5" font-weight="700" text-anchor="middle">output</text>
  <text x="1080" y="236" fill="#9fc9e0" font-size="9.5" text-anchor="middle">GeoParquet / PBF</text>
  <text x="1080" y="252" fill="#9fc9e0" font-size="9.5" text-anchor="middle">decoded files</text>
  <text x="1080" y="274" fill="#86b3cc" font-size="9" text-anchor="middle">tokio-free except</text>
  <text x="1080" y="288" fill="#86b3cc" font-size="9" text-anchor="middle">the iceberg crate</text>
  <rect x="1004" y="244" width="6" height="8" fill="#6fd3f5"/>
  <g stroke="#6fd3f5" stroke-width="3" fill="none"><path d="M1080 560 V310"/></g>
  <circle cx="1080" cy="310" r="4" fill="#bfecff"/>

  <!-- ===================== GROUND RAIL ===================== -->
  <rect x="276" y="552" width="874" height="56" rx="10" fill="url(#rail)" stroke="#7fc8ea" stroke-width="2"/>
  <g fill="#0a1c2c" stroke="#7fc8ea" stroke-width="1.5">
    <circle cx="320" cy="580" r="4"/><circle cx="600" cy="580" r="4"/>
    <circle cx="860" cy="580" r="4"/><circle cx="1075" cy="580" r="4"/>
  </g>
  <text x="346" y="579" fill="#dff1ff" font-size="14" font-weight="700">zoomies</text>
  <text x="450" y="575" fill="#bcd9ec" font-size="11">vendored workspace members &#183; borrowed input &#183; one shared inflate core</text>
  <text x="450" y="596" fill="#7fa8c4" font-size="10" font-family="'DejaVu Sans Mono', monospace">publish order: linflate &#8594; lgz/ljar/lzip-parallel &#8594; znippy-zoomies &#8594; osm-katana</text>
</svg>