Skip to content

Accept precompile in boot.json, add canvas handlers - #10692

Merged
iHiD merged 3 commits into
exercism:mainfrom
allsey87:kernel-precompile
Oct 22, 2026
Merged

iHiD merged 3 commits into
exercism:mainfrom
allsey87:kernel-precompile

Conversation

@allsey87

@allsey87 allsey87 commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Newer kernels call the boot list precompile rather than preload, and their client refuses to construct without createCanvas/destroyCanvas handlers.

  • Kernel.ts boots with precompile ?? preload, so sysroots published for earlier kernels (immutable, e.g. jq) keep working.

  • The canvas handlers are no-ops (createCanvas throws: test runs never draw). Older kernel clients ignore handlers they don't know, so this is safe for them too.

  • test_runner_artifact forwards the S3 object's Content-Encoding: artifacts are now stored brotli-encoded (exercism/clientside-tooling#3), and these responses are no-transform, so the header is the only way the browser learns to decode them. Objects published without one (jq's) are unaffected.

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 #10692 (this PR): must be deployed before any track's boot.json uses precompile.
  3. Add client-side runner cpp-test-runner#106: 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.

allsey87 and others added 2 commits October 5, 2026 18:58
The artifacts are stored brotli-encoded at the highest quality, so
no-transform stops Cloudflare re-encoding them on the way to the browser.

The artifact tests now put real objects in the LocalStack test runners
bucket instead of stubbing Exercism.config and the S3 client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@iHiD
iHiD merged commit 28a7139 into exercism:main Oct 22, 2026
31 checks passed
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