From 792efedf060dc1ecfb26e92a58b7ad4f4339051e Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sat, 7 Nov 2026 21:42:31 -0800 Subject: [PATCH] blog(rind): say rind holds DIT on Mac, not all of ARM Co-Authored-By: Claude Opus 5.5 --- src/components/rind/quic.tsx | 6 +++--- src/components/rind/timings.tsx | 6 +++--- tools/rind/README.md | 2 +- tools/rind/refresh.ts | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/rind/quic.tsx b/src/components/rind/quic.tsx index 91c9661..00697d1 100644 --- a/src/components/rind/quic.tsx +++ b/src/components/rind/quic.tsx @@ -33,8 +33,8 @@ const table = { const source = ( <> AES-128-GCM seal, criterion's estimate from rind's benchmark report at {commit(data.source.rind)}, run{" "} - {days(data.hosts)}: {data.hosts.map((h) => `${h.name} is ${h.source.cpu}`).join(", ")}. On a CPU with DIT, rind - holds it across the timed loop, as a caller batching packets does. + {days(data.hosts)}: {data.hosts.map((h) => `${h.name} is ${h.source.cpu}`).join(", ")}. On Mac, rind holds DIT + across the timed loop, as a caller batching packets does. ); @@ -152,7 +152,7 @@ export default function Quic() {

AES-128-GCM, the geometric mean over CPUs.{" "} {data.hosts.map((h) => `${h.name}: ${times(ratio(h, "1350B"))}`).join(", ")}. aws-lc is Amazon's BoringSSL fork. - On ARM, rind holds DIT (constant-time mode) across each batch. + On Mac, rind holds DIT (constant-time mode) across each batch.

); diff --git a/src/components/rind/timings.tsx b/src/components/rind/timings.tsx index 6f94f88..42b1b40 100644 --- a/src/components/rind/timings.tsx +++ b/src/components/rind/timings.tsx @@ -56,8 +56,8 @@ export default function Timings() { source={ <> Criterion's estimates from rind's benchmark report at {commit(data.source.rind)}, run {days(data.hosts)}, as{" "} - {data.hosts.map((h) => h.name).join(" / ")}. Every library runs its native path on each CPU. Where the CPU has - DIT, rind holds it across the timed loop, as a caller batching calls does. + {data.hosts.map((h) => h.name).join(" / ")}. Every library runs its native path on each CPU. On Mac, rind + holds DIT across the timed loop, as a caller batching calls does. } > @@ -104,7 +104,7 @@ export default function Timings() {

- Squares: {data.hosts.map((h) => h.name).join(", ")}. Blank: not offered. On ARM, rind holds DIT (constant-time + Squares: {data.hosts.map((h) => h.name).join(", ")}. Blank: not offered. On Mac, rind holds DIT (constant-time mode) across each batch.

diff --git a/tools/rind/README.md b/tools/rind/README.md index e7f643b..d9d9a1f 100644 --- a/tools/rind/README.md +++ b/tools/rind/README.md @@ -15,7 +15,7 @@ bun tools/rind/refresh.ts libraries # libraries.json: every library's t ``` `build` leaves out a host whose report skipped its build cost (a busy host does) and says so; rerun that host's report to bring it back. -`libraries` charts the four hosts in `refresh.ts`'s `HOSTS`, Apple M4 included, timing rind with DIT held across each batch. +`libraries` charts the four hosts in `refresh.ts`'s `HOSTS`, Apple M4 included, timing rind on Mac with DIT held across each batch. `libraries` reads end-to-end proofs from `verified.toml`. Partial proofs, where a proven routine does the core math under unproven glue, live in `refresh.ts`'s `PARTIAL`, by architecture; recheck them against each library's source for each architecture when a locked version changes. ## Runtimes diff --git a/tools/rind/refresh.ts b/tools/rind/refresh.ts index d924429..39e3493 100644 --- a/tools/rind/refresh.ts +++ b/tools/rind/refresh.ts @@ -66,7 +66,7 @@ function build(rind: string) { // The libraries rind's report times, by its names for them. const LIBRARIES = ["rind", "aws-lc-rs", "ring", "rustcrypto", "graviola", "libcrux", "openssl"]; -// The post assumes callers hold DIT across a batch, so on a CPU with DIT, rind's time is the report's +// The post assumes callers hold DIT across a batch, so on Mac, rind's time is the report's // rind-dit-held, which holds it across the timed loop rather than setting it around each call. const timed = (lib: string) => (lib === "rind" ? ["rind-dit-held", "rind"] : [lib]);