bench(public): regenerate the Node/Bun baseline at v0.5.1335 and restore the README markers - #7593
Merged
Conversation
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.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (13)
📝 WalkthroughWalkthroughThe 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 ChangesBenchmark refresh
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unblocks the public-baseline gate.
linthas been red onmainand 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_fingerprintcoversCargo.toml, and #7302 changedpanic = "unwind"→panic = "abort"in both thereleaseanddistprofiles. 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.cpunames — with pinnednode v22.23.1/bun 1.3.14/zig 0.15.2, all fivewait_for_quietgates passed, at2ba59501b(v0.5.1335). All five components present,validate_publicpasses.2.
public_baseline.py checkcould never pass#6736 rewrote
README.mdas 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_blocktherefore raisedREADME generated markers are missingon 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 carriesprime_sieve30 ms vs 6, andmatrix_multiply87 ms vs 34, as losses.python3 benchmarks/public_baseline.py checknow exits 0.What the run measured
Two results worth surfacing, both with output verified against the Bun reference 20/20:
image_convolution302.5 ms — 3.1× faster than bun (947.2), faster than Rust (429.8), within 8% of Zig (279.8).json_pipelineat 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 citeshonest_bench/REPORT.mdfor 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
Benchmark Updates