Zinc Next: standards conformance
Generated by node tests/compat/run.mjs --engines next,next-qjs (2026-10-18, commit 465b56dd). Pinned suites: test262 7ab7fafa, wpt 375cf254, quickjs 2f0aa72a.
Two ways of running the same programs on the new engine (the prototype’s numbers are in compat.md):
next: the program as Zinc source (zinc run file.js, the typed engine, gradual typing); WPT, test262 and the quickjs tests go through the typed shimstests/compat/shims.next-qjs: the plain JavaScript of the reference runs on QuickJS-ng (zinc run file.js --engine quickjs): it measures the engine and the host glue, not the type system.
Results
| suite | engine | pass | total | % | other |
|---|---|---|---|---|---|
| node | next | 0 | 19 | 0.0 | fail 19 |
| node | next-qjs | 0 | 19 | 0.0 | fail 19 |
| quickjs | next | 63 | 90 | 70.0 | fail 27 |
| quickjs | next-qjs | 74 | 90 | 82.2 | fail 16 |
| test262 | next | 1739 | 2113 | 82.3 | unsupported 272, fail 102 |
| test262 | next-qjs | 2024 | 2113 | 95.8 | fail 89 |
| wpt | next | 5 | 222 | 2.3 | fail 183, unsupported 34 |
| wpt | next-qjs | 0 | 222 | 0.0 | fail 222 |
WPT URL data (the prototype’s 896/896 and 278/278)
The WPT urltestdata.json and setters_tests.json run through new URL by tests/golden/host/wpt_url.ts (T1 wpt_url):
urltestdata 896/896
setters_tests 278/278
The typed WPT ports of the harness (next) reject most .any.js files at compile time (the strict subset refuses untyped callbacks), and the next-qjs engine has no web globals yet (window, TextEncoder, URL…): the WPT rows are the honest numbers of those two facts, not of the URL implementation.
Why the rest fails
| engine / status: reason | tests |
|---|---|
| next-qjs / fail: incomplete: Uncaught ReferenceError: window is not defined | 222 |
| next / unsupported: harness propertyHelper.js (needs reflection) | 206 |
| next / unsupported: sloppy-mode test (Zinc programs are modules) | 57 |
| next / fail: Uncaught SyntaxError: invalid redefinition of global identifier | 46 |
| next / fail: incomplete: Uncaught ReferenceError: self is not defined | 23 |
| next-qjs / fail: Uncaught TestNError: asyncTest called without async flag | 22 |
| next / unsupported: harness async_test (asynchronous testharness API) | 20 |
| next / fail: Uncaught ReferenceError: require is not defined | 19 |
| next-qjs / fail: Uncaught ReferenceError: require is not defined | 19 |
| next / fail: incomplete: Uncaught ReferenceError: setup is not defined | 14 |
| next-qjs / fail: Uncaught SyntaxError: invalid keyword: with | 13 |
| next / unsupported: harness step_func (asynchronous testharness API) | 11 |
| next / fail: TypeError: not a function | 8 |
| next / unsupported: harness promiseHelper.js (needs reflection) | 8 |
| next-qjs / fail: Uncaught SyntaxError: cannot delete a direct reference in strict mode | 7 |
| next / fail: incomplete: Uncaught ReferenceError: location is not defined | 5 |
| next / fail: name: WebAssembly is not defined | 5 |
| next / fail: Uncaught TestNError: Expected a function Error() { | 4 |
| next-qjs / fail: Uncaught TypeError: Cannot convert undefined or null to object | 4 |
| next-qjs / fail: Uncaught ReferenceError: y is not defined | 4 |
| next / fail: Uncaught SyntaxError: lexical declarations can’t appear in single-statement context | 4 |
| next / fail: Uncaught Error: assertion failed: got /undefined/, expected /true/ | 3 |
| next / fail: Uncaught Error: assertion failed: got /false/, expected /true/ | 3 |
| next-qjs / fail: Uncaught Error: assertion failed: got /false/, expected /true/ | 3 |
| next-qjs / fail: Uncaught TypeError: ’…’ is read-only | 3 |
Failures that are not compile-time rejections (status fail or timeout) are listed with their first message in zinc-next-compat-failures.txt (677 lines). Regressions are gated in T2 (tests/t2/compat.sh, baseline tests/compat/baseline.json).