Skip to content

blog: rind launch post with interactive benchmarks - #221

Merged
kixelated merged 24 commits into
mainfrom
blog/rind
Nov 8, 2026
Merged

kixelated merged 24 commits into
mainfrom
blog/rind

Conversation

@kixelated

@kixelated kixelated commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

rind's launch post, "Cryptography Slop", at /blog/rind, dated 2026-11-08.

What's here

  • src/pages/blog/rind.mdx: the post, with the rind wordmark inline and as the cover, and an "I'm tired, boss" <Meme> clip.
  • src/components/rind/: six interactive Solid charts sharing one Figure frame (chart.tsx, chart.css):
    • QUIC: AES-128-GCM 1350 B seal, as balls bouncing once per packet. Headline 1.41x aws-lc-rs, the geometric mean over 4 CPUs (Arrow Lake 1.71x, Zen 3 1.77x, Coffee Lake 1.16x, Apple M4 1.12x).
    • Build: a cold rustls build race, averaged over 3 CPUs. 4.0x faster than on aws-lc-rs.
    • Every benchmark: one square per CPU per library. rind is fastest or within 10% on 233/236. The libraries with a rustls provider come first.
    • Coverage: which primitives are formally proven, end to end or in their core.
    • Runtimes: Bun on rind vs Node, Bun, and Deno, with a per-operation heatmap.
    • Tally: the Opus usage receipt.
  • src/components/rind/data/*.json: each chart's data, recording its source commit, CPU, and date.
  • tools/rind/: refresh.ts regenerates the data from a rind checkout; README.md has the steps.

Notes

  • On ARM, rind's timings hold DIT across each batch (rind's rind-dit-held measurement), as rind::cpu::Dit::hold() does. The QUIC and every-benchmark fine print say so.
  • Merging doesn't deploy; the post goes live with the next just deploy live.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 2 commits November 6, 2026 09:55
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated and others added 10 commits November 6, 2026 11:05
- Drop the light theme: the charts are dark-only, like the site.
- Mark AES-GCM on x86_64 with VAES as a proven routine: since
  moq-dev/rind#391 short messages run Vale's proven kernel.
- Add Neoverse N2 to the QUIC chart from rind's bench workflow, with
  `refresh.ts quic-run` to regenerate it from a run's artifact.
- Replace the placeholder tally with moq-dev/rind#400's numbers: per-day
  and per-model views, migrations and bots as separate lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each figure now leads with one giant number and draws only what proves it,
with the table and source folded into a Data disclosure.

- QUIC: every library's AES-128-GCM seal as a ball bouncing once per packet,
  plus a per-CPU scoreboard against aws-lc-rs on real hardware only.
- Runtimes: one bar per runtime, the geomean over all eight WebCrypto ops.
- Build: a rustls build race on the 9-year-old Coffee Lake box.
- Coverage: a heatmap of every library's proofs per CPU, end to end from
  verified.toml and proven cores from a hand-checked PARTIAL table.
- Speed: a beeswarm of every tier's speedup, grouped by proof status.
- Tally: a receipt, Claude only, paid as 11 days of the $100/month plan.

refresh.ts gains a `libraries` step reading rind's per-host reports, reads
ALGORITHMS.md now that rind moved its tables there, stops counting RSA's
multiplication helpers as a proven core, and drops the quic.sh pipeline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every operation rind's report times, for every library, one square per CPU, colored green at the
fastest to red at over 8x, in admin/bench-report's bands. libraries.json now carries every
operation's time, labeled and sectioned by admin/bench-report itself, in place of the QUIC-only
seal times.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
runtimes.mjs times what the Bun-on-rind prototype moves, through WebCrypto and node:crypto: Ed25519,
X25519, and P-256/384/521 key generation, import, export, signatures, and ECDH, leaving out a call a
runtime refuses (Deno's P-521 createECDH). A heatmap under the bars shows every call, colored by its
time over the fastest runtime's in the same bands as the library heatmap. Measured on Arrow Lake over
five rounds, which agree within 1%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Regenerates build.json, libraries.json, and proofs.json from rind 165545ef,
which carries #484's quiet Arrow Lake and Apple M4 runs.

- build: Apple M4 joins. Zen 3 is left out, as main's nixos report skipped
  its build cost on a busy host; refresh.ts now says so instead of failing.
- libraries: Arrow Lake now comes from 9e7f6a5a. The library charts keep the
  three x86_64 hosts until PARTIAL is checked against aarch64 sources.
- Source lines name each host's run day, and the build chart each host's
  commit, since the hosts no longer share one run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…per arch

refresh.ts's PARTIAL is now keyed by architecture, each credit checked
against that library's aarch64 path (sources in the comment beside it).
On aarch64, rind's AES-GCM and aws-lc-rs's AES-GCM and AES block get no
credit (Vale and aws-lc-verification's SAW proofs are x86_64-only), and
rind's P-256 is proven end to end by verified.toml. The timings chart adds
a rind (DIT held) column, timed only on the M4 and never the fastest, and
the post says rind's losses are almost all DIT's.

Data regenerated from rind 00610aff.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
kixelated and others added 10 commits November 7, 2026 18:51
- Wordmark from moq-dev/rind's admin/wordmark.svg, inline and as the cover.
- The QUIC headline says "up to" and runs on the CPU where rind leads most,
  rather than a hardcoded Zen 3.
- rind's times on a CPU with DIT are the DIT-held ones; the separate
  "rind (DIT held)" column is gone, and the post says to hold it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s first

- The QUIC headline and balls use the geometric mean over all four CPUs,
  with each CPU's ratio in the fine print, instead of the best one.
- The every-benchmark heatmap puts the libraries with a rustls provider on
  the left, so the rustls rows read as one block.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The headline and the race use each build's geometric mean over all three
CPUs instead of Coffee Lake's alone, with each CPU's ratio in the fine print.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From Creatorset's green-screen clip, keyed onto the page background and
cropped to the size of the last post's huh.webm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ine print

The post no longer shows either, so speed.tsx, proofs.json, and refresh.ts's
proofs step go with them. The QUIC and every-benchmark charts say rind holds
DIT on ARM, since their timings assume it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 8, 2026 05:31
@kixelated kixelated changed the title blog: draft rind launch post with interactive benchmarks blog: rind launch post with interactive benchmarks Nov 8, 2026
@kixelated
kixelated merged commit 2c8ae3f into main Nov 8, 2026
2 of 3 checks passed
@kixelated
kixelated deleted the blog/rind branch November 8, 2026 05:34
kixelated added a commit to moq-dev/rind that referenced this pull request Nov 8, 2026
moq-dev/moq.dev#221 merged and https://moq.dev/blog/rind/ is live, so
delete the launch-post quest and the links to it, and link the post from
the README as that quest asked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant