Skip to content

chore: remove Bun from benchmark suite#500

Merged
cs01 merged 1 commit intomainfrom
chore/remove-bun-go-benchmarks
Apr 13, 2026
Merged

chore: remove Bun from benchmark suite#500
cs01 merged 1 commit intomainfrom
chore/remove-bun-go-benchmarks

Conversation

@cs01
Copy link
Copy Markdown
Owner

@cs01 cs01 commented Apr 13, 2026

Summary

Removes Bun from every benchmark surface. ChadScript is now measured against C (clang -O2), ChadScript, Go, and Node.js. Go is kept as a meaningful anchor for "fast compiled language" — the narrative "beats Node, competes with Go, approaches C" reads cleanly with Go in the table.

What changed from the first revision of this PR

The original commit on this branch removed both Go and Bun. That was too aggressive — Go carries real signal (static-typed, native-compiled, well-known performance baseline) and is worth keeping in the comparison. Bun on the other hand competes with Node in the same "JS runtime" category and adds noise without a distinct narrative. This revision force-pushed to remove Bun only.

What's removed

  • benchmarks/run-ci.sh — all bench_* lines for bun. No Bun builds, no Bun runs. C, ChadScript, Go, Node remain.
  • benchmarks/run.sh (local dev runner) — same treatment.
  • .github/workflows/ci.yml — removed the Install Bun step; the PR-comment table drops the Bun column (now | Benchmark | C | ChadScript | Go | Node | Place |).
  • .github/workflows/update-benchmarks.yml — removed the Install Bun step.
  • docs/.vitepress/theme/BenchmarkBars.vueLANG_NAMES and LANG_ORDER no longer include bun.
  • docs/.vitepress/theme/HeroBenchmarks.vue — same.
  • docs/benchmarks.md — prose "against C (clang -O2), Go, Bun, and Node.js" → "against C (clang -O2), Go, and Node.js".
  • README.md — prose "Compared against C, Go, Node.js, and Bun" → "Compared against C, Go, and Node.js". Footer link text "Full benchmarks with Go and Bun" → "Full benchmarks dashboard". Table columns unchanged (ChadScript / Node.js / vs Node / C).
  • scripts/update-benchmark-docs.jslangMeta.bun removed. buildMarkdownSummary no longer generates "Xx faster than Bun" sentences.

What's NOT removed

  • Go — kept across all benchmark surfaces. Go is the comparable compiled-language baseline.
  • Benchmark source files (benchmarks/*/bun.mjs, benchmarks/*/*.go) are left in place. Bun's source files are orphaned but harmless — they just no longer run in CI or show up in dashboards. Deleting them can be a separate cleanup PR if desired.
  • docs/.vitepress/theme/ComparisonCards.vue — still has a "Node.js / Deno / Bun" positioning/marketing card. That's a separate editorial decision (comparison cards aren't benchmark results) and is left alone here.

Diff stat

 .github/workflows/ci.yml                 |  6 ++----
 .github/workflows/update-benchmarks.yml  |  2 --
 README.md                                |  4 ++--
 benchmarks/run-ci.sh                     | 12 ------------
 benchmarks/run.sh                        | 13 -------------
 docs/.vitepress/theme/BenchmarkBars.vue  |  3 +--
 docs/.vitepress/theme/HeroBenchmarks.vue |  3 +--
 docs/benchmarks.md                       |  2 +-
 scripts/update-benchmark-docs.js         | 13 +++----------
 9 files changed, 10 insertions(+), 48 deletions(-)

Verification

  • npm run build — tsc passes clean on the modified sources.
  • Manual grep sweep: no \bbun\b or \bBun\b remaining in any of the 9 touched files; Go references intact (23 hits in run-ci.sh, 36 in run.sh, unchanged).
  • assemble_json.py is language-agnostic — it naturally stops emitting bun entries once the runners no longer produce them, and keeps emitting go entries.
  • PR comment's markdown table now has 6 columns instead of 7.

Expected impact

  • CI benchmark job runs faster (no Bun install, no Bun runs).
  • Dashboard (cs01.github.io/ChadScript/benchmarks) auto-refreshes on next main CI run to show only C / ChadScript / Go / Node bars.
  • PR comment table shifts from 7-column to 6-column next time a PR runs.
  • README table unchanged (it was already C/ChadScript/Node).

No user code or runtime behavior changes. Pure cleanup.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 13, 2026

Benchmark Results (Linux x86-64)

Benchmark C ChadScript Go Node Place
Binary Trees 1.396s 1.190s 2.666s 1.230s 🥇
Cold Start 0.8ms 0.9ms 1.2ms 28.5ms 🥈
Fibonacci 0.908s 0.908s 1.733s 3.361s 🥇
File I/O 0.086s 0.092s 0.088s 0.167s 🥉
JSON Parse/Stringify 0.004s 0.006s 0.015s 0.016s 🥈
Matrix Multiply 0.519s 1.166s 0.525s 0.425s #4
Monte Carlo Pi 0.439s 0.439s 0.458s 2.600s 🥇
N-Body Simulation 1.749s 2.252s 2.277s 2.335s 🥈
Quicksort 0.245s 0.283s 0.241s 0.287s 🥉
SQLite 0.325s 0.365s 0.400s 🥈
Sieve of Eratosthenes 0.014s 0.027s 0.020s 0.041s 🥉
String Manipulation 0.008s 0.044s 0.016s 0.040s #4

CLI Tool Benchmarks

Benchmark ChadScript grep node xxd Place
Hex Dump 0.433s 1.026s 0.138s 🥈
Recursive Grep 0.021s 0.010s 0.100s 🥈

@cs01 cs01 marked this pull request as draft April 13, 2026 16:08
@cs01 cs01 force-pushed the chore/remove-bun-go-benchmarks branch from e1e83db to 61a1203 Compare April 13, 2026 16:57
@cs01 cs01 changed the title chore: remove Go and Bun from benchmark suite chore: remove Bun from benchmark suite Apr 13, 2026
@cs01 cs01 marked this pull request as ready for review April 13, 2026 16:58
@cs01 cs01 merged commit ace9d75 into main Apr 13, 2026
13 checks passed
@cs01 cs01 deleted the chore/remove-bun-go-benchmarks branch April 13, 2026 17:35
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