Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:
js/viewer/README.md js/viewer/generated js/viewer/suite \
js/viewer/polyengine \
_site/js/viewer/
cp js/runner-polyengine/browser-worker.mjs js/runner-polyengine/engine.mjs \
cp js/runner-polyengine/browser-worker.mjs js/runner-polyengine/worker-main.mjs \
_site/js/runner-polyengine/
cp components/fixture-suite/tests.lock _site/components/fixture-suite/
cp examples/aggregate/targets.toml _site/examples/aggregate/
Expand Down
6 changes: 2 additions & 4 deletions js/deno.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@polymorph/test",
"version": "0.2.1",
"version": "0.3.0",
"license": "Apache-2.0",
"//": "The polymorph:test stack's JS runner core on JSR — the one consumable JS surface (the repo-root npm-git facade is retired; this export map is the only one). Plain JS with relative and node: imports only; the browser-safe pieces (harness, context, imports, the workers) load in browsers unchanged, and the node: importers (node-runner, browser-driver) are Node/Deno-side drivers. The publish include-list IS the package: everything else under js/ is repo tooling (the polyengine runner leg, selftests, the viewer app).",
"exports": {
Expand All @@ -12,7 +12,6 @@
"./node-runner": "./node-runner.mjs",
"./browser-driver": "./browser-driver.mjs",
"./polyengine-worker": "./runner-polyengine/browser-worker.mjs",
"./polyengine-engine": "./runner-polyengine/engine.mjs",
"./polyengine-worker-main": "./runner-polyengine/worker-main.mjs"
},
"publish": {
Expand All @@ -26,8 +25,7 @@
"node-runner.mjs",
"browser-driver.mjs",
"runner-polyengine/worker-main.mjs",
"runner-polyengine/browser-worker.mjs",
"runner-polyengine/engine.mjs"
"runner-polyengine/browser-worker.mjs"
]
}
}
10 changes: 5 additions & 5 deletions js/runner-polyengine/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ cases out as `not-applicable`.
## Browser leg

`browser-worker.mjs` is the runtime-linked sibling of
`js/viewer/browser-worker.mjs` — same reply protocol, same shared
`harness.mjs` case loop (striping, freshCases, timeouts, mark
scheduling), no transpiled artifacts: the run message carries
`js/viewer/browser-worker.mjs` — same reply protocol, the same
`runSuite` case loop as the Deno leg (striping, freshCases, timeouts,
tag scheduling), no transpiled artifacts: the run message carries
`{ bundleUrl, translatorUrl, suiteUrl, env?, missing?, only?, shard?,
caseTimeoutMs? }` and the worker loads `polyengine-embedder.mjs`, built by
`just polyengine-assets` from the pinned JSR graph (one platform-neutral
ES module: embedder API + Translator + runner glue + wasi shims). It drops into
`page-runner.mjs`'s `runSuitesInPage` via its `workerUrl` parameter —
page runner and browser driver unchanged. `engine.mjs` is the shared
glue; `selftest.mjs` drives the same engine path under plain `node`
page runner and browser driver unchanged. `worker-main.mjs` holds the
message loop; `selftest.mjs` drives the same `runSuite` path under plain `node`
(NO `--experimental-wasm-jspi` — the callback ABI needs no engine
flag), asserting the documented sample/fixture verdicts, trap
containment, tag scheduling, and striping partition equality; it runs
Expand Down
17 changes: 15 additions & 2 deletions js/runner-polyengine/bench-mint.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,19 @@ console.error(
const artifacts = { plan, componentBytes: suiteBytes, adapters };
const TESTS = "polymorph:test/tests@0.1.0";

// The host-side `test-context` provider, verbatim from ct-runner's internal
// context.ts (un-exported since polyengine 0.6.0; runSuite wires its own,
// but this bench drives `instantiate` directly and must supply one).
class Context {
constructor(onDiagnostic) {
this.onDiagnostic = onDiagnostic;
}
// deno-lint-ignore require-await
async diagnostic(msg) {
this.onDiagnostic(msg);
}
}

function median(xs) {
const v = [...xs].sort((a, b) => a - b);
return v[Math.floor(v.length / 2)];
Expand All @@ -83,7 +96,7 @@ console.log(
for (const n of caseCounts) {
const imports = {
...polyengine.wasi({ cli: { env: { BENCH_CASES: String(n) } } }),
...polyengine.testContextImportRecord(),
"polymorph:test/test-context@0.1.0": { Context },
};
const warmup = Math.min(3, instances);
const samples = { instantiate: [], all1: [], all2: [], name0: [], run0: [] };
Expand Down Expand Up @@ -112,7 +125,7 @@ for (const n of caseCounts) {
throw new Error(`unexpected case name '${name}'`);
}

const ctx = new polyengine.Context(() => {});
const ctx = new Context(() => {});
t = performance.now();
await cases1[0].run(ctx); // resolves = pass; throws = fail/trap
const run0 = performance.now() - t;
Expand Down
14 changes: 7 additions & 7 deletions js/runner-polyengine/deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@
// deno.lock, re-run `deno install --entrypoint runner.ts
// browser-bundle-entry.ts` in this directory, and commit the diff (see
// README.md "Pinning"). `@polyengine/protocol` is on its own independent
// version line (currently 0.2.2) and is bumped separately.
// version line (currently 0.3.1) and is bumped separately.
"imports": {
"@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.5.0",
"@polyengine/protocol": "jsr:@polyengine/protocol@0.2.2",
"@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.5.0/embedder",
"@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.5.0/shim",
"@polyengine/translator": "jsr:@polyengine/translator@0.5.0",
"@polyengine/wasi": "jsr:@polyengine/wasi@0.5.0"
"@polyengine/ct-runner": "jsr:@polyengine/ct-runner@0.6.3",
"@polyengine/protocol": "jsr:@polyengine/protocol@0.3.1",
"@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.6.3/embedder",
"@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.6.3/shim",
"@polyengine/translator": "jsr:@polyengine/translator@0.6.3",
"@polyengine/wasi": "jsr:@polyengine/wasi@0.6.3"
},
// Deno's supply-chain minimum-dependency-age gate (24h default) applies
// even to exact prerelease pins; polyengine publishes per commit, so the
Expand Down
54 changes: 27 additions & 27 deletions js/runner-polyengine/deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 0 additions & 65 deletions js/runner-polyengine/engine.mjs

This file was deleted.

Loading
Loading