Some checks failed
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Has been cancelled
no-vanity-metrics / WAI public text names no comparison (pull_request) Has been cancelled
no-vanity-metrics / WAI public text names no company or product (pull_request) Has been cancelled
standards workspaces build + test / jouleclaw-rs (pull_request) Has been cancelled
standards workspaces build + test / aac-rs (pull_request) Has been cancelled
standards workspaces build + test / arl-rs (pull_request) Has been cancelled
standards workspaces build + test / eoc-rs (pull_request) Has been cancelled
standards workspaces build + test / jcp-rs (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (pull_request) Has been cancelled
standards workspaces build + test / joule-ui-rs (pull_request) Has been cancelled
standards workspaces build + test / joulecontract-rs (pull_request) Has been cancelled
standards workspaces build + test / jouledesk-rs (pull_request) Has been cancelled
standards workspaces build + test / joulehook-rs (pull_request) Has been cancelled
standards workspaces build + test / map-rs (pull_request) Has been cancelled
standards workspaces build + test / mesh-rs (pull_request) Has been cancelled
standards workspaces build + test / openpay (pull_request) Has been cancelled
standards workspaces build + test / proof-rs (pull_request) Has been cancelled
standards workspaces build + test / sandbox-rs (pull_request) Has been cancelled
standards workspaces build + test / sense-rs (pull_request) Has been cancelled
standards workspaces build + test / smart-byte-rs (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
workflow hygiene / every workflow supersedes its own queue (pull_request) Has been cancelled
The reach builds' byte-identity rested on local runs: CI built wai-web from the tree,
which can never be the package the site serves, so build.sh took its "not the recorded
input" branch and the recorded outputs were never checked there.
- reach/record/ keeps the package of record: the two files the site serves under
/wai/pkg/. It is rebuilt from wai/wai-web at 248846f1 with the site's recipe, which now
also remaps the standard library's sources in the toolchain to /rustc/<the compiler's
commit>: the old remap kept the toolchain's folder, named after the build host, in
every panic location of generic std code (and so in every reach binary and J bundle).
manifest.json is re-recorded from it, with input.commit.
- The package is kept rather than rebuilt in CI: the same commit and recipe give a
different wasm on the linux runner's host than on the macOS arm64 host that built it
(measured twice in the runner's image, with the export at /tmp and at /private/tmp; the
glue is the same, the code section is not).
- wai-web-reach.yml runs a leg per package. The record leg checks reach/record/ against
the manifest's SHA-256 and runs build.sh with the new WAI_REACH_REQUIRE_RECORD=1, which
refuses any other package, so every output must equal the manifest; then run-modern and
the engine images run on those outputs. The tree leg is the earlier job. Step names
describe each image by its engine features.
- wai-load.js: the early-engine probe is the feature `noDotAll` (was `v8Before62`), and
its reasons and comment say what the engine lacks, not which engine it is.
- README, CHANGELOG and wai/README: the proxies are named by Node image and engine
features, and the device classes they stand for by capability; no engine, browser or
OS family names. Counts that drift ("five counted places", "four profiles", "the four
int_synth vectors") describe the shape instead. The CHANGELOG describes what CI runs
and claims no CI result.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
36 lines
2.8 KiB
JavaScript
36 lines
2.8 KiB
JavaScript
/* Strip a current engine down to ECMAScript 5 and typed arrays, so that one fast engine can
|
|
* stand in for the oldest engines the J rung serves. Loaded by conformance.js with
|
|
* `--strip es5`, after Node's own modules (which keep the builtins they captured at
|
|
* start-up). The deleted names are listed in global.__WAI_ES5_STRIPPED. Modern syntax
|
|
* is fine here: this file runs only on a modern Node. */
|
|
'use strict';
|
|
const g = globalThis, out = [];
|
|
const SYM_IT = Symbol.iterator;
|
|
function del(obj, name, label) {
|
|
if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
|
|
try { delete obj[name]; out.push(label || String(name)); } catch (e) { /* not configurable */ }
|
|
}
|
|
}
|
|
for (const k of ['WebAssembly', 'BigInt', 'BigInt64Array', 'BigUint64Array', 'Map', 'Set', 'WeakMap', 'WeakSet', 'WeakRef',
|
|
'FinalizationRegistry', 'Reflect', 'Proxy', 'TextEncoder', 'TextDecoder', 'Symbol', 'Promise']) del(g, k);
|
|
for (const k of ['imul', 'fround', 'clz32', 'trunc', 'sign', 'log2', 'log10', 'cbrt', 'hypot', 'expm1', 'log1p']) del(Math, k, 'Math.' + k);
|
|
for (const k of ['isSafeInteger', 'isInteger', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'EPSILON', 'MAX_SAFE_INTEGER', 'MIN_SAFE_INTEGER']) del(Number, k, 'Number.' + k);
|
|
for (const k of ['entries', 'values', 'assign', 'is', 'getOwnPropertySymbols', 'setPrototypeOf', 'fromEntries']) del(Object, k, 'Object.' + k);
|
|
for (const k of ['from', 'of']) del(Array, k, 'Array.' + k);
|
|
for (const k of ['fill', 'find', 'findIndex', 'findLast', 'findLastIndex', 'includes', 'keys', 'values', 'entries', 'copyWithin', 'flat', 'flatMap', 'at'])
|
|
del(Array.prototype, k, 'Array.prototype.' + k);
|
|
for (const k of ['startsWith', 'endsWith', 'includes', 'repeat', 'padStart', 'padEnd', 'codePointAt', 'normalize', 'at', 'trimStart', 'trimEnd', 'replaceAll', 'matchAll'])
|
|
del(String.prototype, k, 'String.prototype.' + k);
|
|
del(String, 'fromCodePoint', 'String.fromCodePoint');
|
|
const TA = Object.getPrototypeOf(Uint8Array.prototype);
|
|
for (const k of ['slice', 'fill', 'find', 'findIndex', 'includes', 'indexOf', 'lastIndexOf', 'join', 'forEach', 'map', 'filter', 'reduce', 'reduceRight',
|
|
'some', 'every', 'sort', 'reverse', 'keys', 'values', 'entries', 'copyWithin', 'at', 'toString'])
|
|
del(TA, k, 'TypedArray.prototype.' + k);
|
|
del(TA, SYM_IT, 'TypedArray.prototype[Symbol.iterator]');
|
|
del(Array.prototype, SYM_IT, 'Array.prototype[Symbol.iterator]');
|
|
del(DataView.prototype, 'getBigInt64', 'DataView.prototype.getBigInt64');
|
|
del(DataView.prototype, 'setBigInt64', 'DataView.prototype.setBigInt64');
|
|
// An early typed-array quirk: slice() returns a view, not a copy.
|
|
Object.defineProperty(TA, 'slice', { configurable: true, writable: true, value: function (b, e) { return this.subarray(b, e); } });
|
|
out.push('TypedArray.prototype.slice := subarray (a view, as on early engines)');
|
|
g.__WAI_ES5_STRIPPED = out;
|