Skip to content

bench(public): regenerate the Node/Bun baseline at v0.5.1335 and restore the README markers - #7593

Merged
proggeramlug merged 2 commits into
mainfrom
baseline-v0.5.1336
Aug 7, 2026
Merged

bench(public): regenerate the Node/Bun baseline at v0.5.1335 and restore the README markers#7593
proggeramlug merged 2 commits into
mainfrom
baseline-v0.5.1336

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Unblocks the public-baseline gate. lint has been red on main and on every open PR, for two independent reasons — I only knew about one of them until the run actually completed.

1. The artifact was stale — and the gate was right

source_fingerprint covers Cargo.toml, and #7302 changed panic = "unwind"panic = "abort" in both the release and dist profiles. That is a real, benchmark-relevant change, so the demand for a regeneration was correct rather than a fingerprinting artifact. (My first hypothesis was that the version bump invalidated it on every merge; that is already normalised by _CARGO_VERSION_RE, so it was wrong.)

Regenerated on the pinned quiet M1 Max — the host the artifact's own host.cpu names — with pinned node v22.23.1 / bun 1.3.14 / zig 0.15.2, all five wait_for_quiet gates passed, at 2ba59501b (v0.5.1335). All five components present, validate_public passes.

2. public_baseline.py check could never pass

#6736 rewrote README.md as a marketing landing page and deleted the <!-- public-node-bun:start --> / <!-- public-node-bun:end --> markers, replacing the generated block with a hand-maintained table. _replace_block therefore raised README generated markers are missing on every invocation, independent of the artifact. No amount of regenerating would have fixed it.

That is worth naming as a pattern rather than a typo: a gate whose subject was deleted still runs, still reports, and can never go green — so it stops being a gate and becomes a permanent reason to bypass. Same family as #7582.

The markers are restored under the sentence that promises them"We publish everything, including the workloads where V8's JIT still beats us — no cherry-picked table can survive an open harness" — inside a collapsed <details>, so the landing page keeps the shape #6736 deliberately chose while the published numbers are once again derived from the artifact instead of hand-maintained. The generated table is what makes that sentence true: it carries prime_sieve 30 ms vs 6, and matrix_multiply 87 ms vs 34, as losses.

python3 benchmarks/public_baseline.py check now exits 0.

What the run measured

Two results worth surfacing, both with output verified against the Bun reference 20/20:

  • image_convolution 302.5 ms — 3.1× faster than bun (947.2), faster than Rust (429.8), within 8% of Zig (279.8).
  • json_pipeline at 100 records: 77.0 ms — ahead of bun (90.8) and node (128.1), within 5% of Rust and Zig, at 8.5 MB RSS against bun's 30.3.

And one that is not good, filed as #7592: the same JSON workload at 500,000 records is 60,358 ms against bun's 618 ms — 97.6×. It is a scaling cliff rather than a constant factor (Perry grows 784× across the fixture increase where bun grows 6.8×, Rust 8.9×, Zig 12.0×). Correct output, 20/20 — purely performance.

That row is now published by this PR, which is the point of the mechanism.

Note for follow-up

README.md's hand-written table cites honest_bench/REPORT.md for its JSON row and shows the 100-record variant; the same report's 500k variant is the 97.6× row above. Its absolute numbers are also stale — the JSON row reads 39 ms where today measures 77 ms, though bun (51 → 90.8) and Rust (34 → 73.4) moved by the same factor, so that is measurement conditions rather than a Perry regression, and the relative ordering holds. Reconciling that table is a product decision about the landing page and is left to the owner; this PR does not touch it.

Summary by CodeRabbit

  • Documentation

    • Updated the documented release version to 0.5.1337.
    • Added a collapsible full benchmark suite section covering methodology, correctness, and Perry, Node.js, and Bun results.
    • Added a changelog entry documenting refreshed public baselines and JSON workload performance findings.
  • Benchmark Updates

    • Refreshed benchmark measurements, memory usage, metadata, rankings, and aggregate results across application patterns, JSON, and polyglot workloads.
    • Confirmed all recorded runs matched the reference output.

Ralph Küpper added 2 commits August 7, 2026 13:54
…ore the README markers

Two independent things were blocking the public-baseline gate, and lint has
been red on main and on every open PR as a result.

1. The artifact was stale. Its source fingerprint covers Cargo.toml, and
   #7302 changed panic=unwind -> panic=abort in the release and dist profiles
   -- a real, benchmark-relevant change, so the gate was right to demand a
   regeneration. Regenerated on the pinned quiet M1 Max host with the pinned
   node v22.23.1 / bun 1.3.14 / zig 0.15.2, all five quiet-CPU gates passed,
   at commit 2ba5950 (v0.5.1335).

2. public_baseline.py check could never pass. #6736 rewrote README.md as a
   marketing landing page and deleted the <!-- public-node-bun:start/end -->
   markers, so _replace_block raised 'README generated markers are missing'
   on every invocation regardless of the artifact.

The markers are restored under the sentence that promises them -- 'We publish
everything, including the workloads where V8's JIT still beats us' -- in a
collapsed <details> block, so the landing page keeps the shape #6736 chose
while the published numbers are once again DERIVED from the artifact rather
than hand-maintained. The generated table carries the losses (prime_sieve
30ms vs 6, matrix_multiply 87 vs 34) that make that sentence true.

public_baseline.py check now exits 0.
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c51e63d6-0a2f-400f-b120-07f7c6276f04

📥 Commits

Reviewing files that changed from the base of the PR and between 2bf04b2 and 292b4c7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (13)
  • CLAUDE.md
  • Cargo.toml
  • README.md
  • benchmarks/app-patterns/results/matrix-20260807-130603.md
  • benchmarks/honest_bench/REPORT.md
  • benchmarks/honest_bench/results/metadata.json
  • benchmarks/honest_bench/results/results.json
  • benchmarks/honest_bench/results/summary.txt
  • benchmarks/json_polyglot/RESULTS.md
  • benchmarks/polyglot/RESULTS_AUTO.md
  • benchmarks/results/public-node-bun-v1.json
  • benchmarks/suite/results/RESULTS.md
  • changelog.d/7593-public-baseline-v0-5-1335.md

📝 Walkthrough

Walkthrough

The pull request refreshes benchmark evidence for the 2026-08-07 run, adds a published performance summary, records the baseline regeneration, and updates the workspace version from 0.5.1336 to 0.5.1337.

Changes

Benchmark refresh

Layer / File(s) Summary
Honest benchmark measurements
benchmarks/honest_bench/...
Updated benchmark metadata, executable paths, reports, summaries, and per-run measurements for image convolution and JSON pipelines. All recorded runs retain matching output validation.
Polyglot benchmark reports
benchmarks/json_polyglot/RESULTS.md, benchmarks/polyglot/RESULTS_AUTO.md
Refreshed dates, runtime versions, medians, variance, extrema, memory values, and unavailable Hermes entries.
Runtime comparison reports
benchmarks/app-patterns/results/*, benchmarks/suite/results/RESULTS.md
Added app-pattern comparison results and refreshed Node/Bun suite evidence, classifications, metadata, and aggregate counts.
Published benchmark summary
README.md, changelog.d/7593-public-baseline-v0-5-1335.md, CLAUDE.md, Cargo.toml
Added the published benchmark summary, documented baseline regeneration and the JSON regression, and updated the documented workspace version to 0.5.1337.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested labels: parity

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch baseline-v0.5.1336

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@proggeramlug
proggeramlug merged commit 6fb58cd into main Aug 7, 2026
0 of 12 checks passed
@proggeramlug
proggeramlug deleted the baseline-v0.5.1336 branch August 7, 2026 11:55
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