Skip to content

[experiment] Benchmark pnpm vs Bun on CircleCI - #428

Draft
Finesssee wants to merge 7 commits into
port/upstream-0.56.0from
experiment/bun-pnpm-circleci-20260906
Draft

[experiment] Benchmark pnpm vs Bun on CircleCI#428
Finesssee wants to merge 7 commits into
port/upstream-0.56.0from
experiment/bun-pnpm-circleci-20260906

Conversation

@Finesssee

Copy link
Copy Markdown
Collaborator

Experiment only

Do not merge. This draft PR exists only to activate the repository's CircleCI GitHub App webhook path for a package-manager benchmark.

Three equal Windows win/default medium lanes run the same Node/Vitest/TypeScript/Vite workload after dependency installation:

  • current pnpm 11.24.0
  • proposed pnpm 11.25.0
  • Bun 1.4.2

The Bun lane uses an experiment-only bun.lock plus minimumReleaseAge = 86400, isolated linking, and disabled dependency lifecycle scripts. Node remains the runtime for tests/build tools so this measures package management rather than Bun-runtime compatibility.

Plan: one cold-cache run followed by two unchanged warm-cache runs. No product/release behavior should be merged from this PR.

@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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

@Finesssee

Copy link
Copy Markdown
Collaborator Author

Bun-only runtime benchmark result

Completed three real CircleCI Windows win/default medium runs with Node, npm, Corepack, and pnpm explicitly removed from PATH before the JS workload.

Run Bun install Vitest under Bun Production build under Bun Tauri CLI Fully Bun-only
1 4.041s FAIL, 27/48 files PASS, 12.177s PASS No
2 2.048s FAIL, 27/48 files PASS, 13.104s PASS No
3 2.034s FAIL, 27/48 files PASS, 10.095s PASS No

Every run independently asserted node, npm, corepack, and pnpm were unavailable.

Conclusion: Bun 1.4.2 can replace pnpm for install and can drive the production frontend build + Tauri CLI without Node, but Win-CodexBar cannot remove Node yet because the current Vitest/jsdom test contract is not compatible with Bun's runtime.

Additional disposable migration probe using Bun-native bun test + Happy DOM + a small vi compatibility shim improved discovery to 265 tests, but still left 79 failures + 10 errors. Concrete blockers include 40 vi.hoisted uses, 5 partial vi.mock(... importOriginal ...) factories, missing/incompatible vi.setSystemTime and other mock/timer/global helpers, plus accessor-spy differences.

This remains an experiment-only draft and should not be merged as-is.

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