Skip to content

Add client-side runner - #106

Open
allsey87 wants to merge 5 commits into
exercism:mainfrom
allsey87:clientside-runner
Open

allsey87 wants to merge 5 commits into
exercism:mainfrom
allsey87:clientside-runner

Conversation

@allsey87

@allsey87 allsey87 commented Oct 5, 2026 •

Copy link
Copy Markdown

Runs bin/run.sh in the browser on the wasm kernel, as jq-test-runner does.

  • exercism_parser is compiled in GHA inside the kernel by the sysroot's clang, linked without --export-all and run through wasm-opt (55KB, reproducible). bin/build-clientside-parser.sh does this.

  • Publish runs the suite in the kernel against the exact tarball it uploads.

  • run-in-kernel.mjs gains --extract, supports precompile and the canvas handlers newer kernels require.

  • bin/run-tests.sh now fails when results differ ($? was read after rm), and compares build errors by status only, since GCC and clang word them differently.

  • helpers.h drops std::ptr_fun (removed in C++17, absent from libc++). example-tbb and libtbb-dev are removed.

  • The workflows fetch with curl --compressed (artifacts are stored brotli-encoded), and run-in-kernel.mjs passes the kernel's fetches of stubbed binaries (/test-runners/...overlay/...) through to exercism.org, so CI runs on exactly what students get.

The client-side check needs exercism/clientside-tooling#3 merged and published first.

Closes #104

Merge order

  1. https://github.com/exercism/clientside-tooling/pull/3: publishes the cpp kernel and sysroot.
  2. Accept precompile in boot.json, add canvas handlers website#10692: must be deployed before any track's boot.json uses precompile.
  3. Add client-side runner #106 (this PR): its client-side check needs 1 published and 2 deployed (it fetches the brotli-encoded objects), and its first publish writes cpp/latest.json, so it merges last.

@vaeng

vaeng commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Am I right to assume that you still work ok that, until all tests are green?

@allsey87

allsey87 commented Oct 6, 2026

Copy link
Copy Markdown
Author

I think the test is only red because of the dependent PRs

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.

2 participants