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 shims tests/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

suiteenginepasstotal%other
nodenext0190.0fail 19
nodenext-qjs0190.0fail 19
quickjsnext639070.0fail 27
quickjsnext-qjs749082.2fail 16
test262next1739211382.3unsupported 272, fail 102
test262next-qjs2024211395.8fail 89
wptnext52222.3fail 183, unsupported 34
wptnext-qjs02220.0fail 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: reasontests
next-qjs / fail: incomplete: Uncaught ReferenceError: window is not defined222
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 identifier46
next / fail: incomplete: Uncaught ReferenceError: self is not defined23
next-qjs / fail: Uncaught TestNError: asyncTest called without async flag22
next / unsupported: harness async_test (asynchronous testharness API)20
next / fail: Uncaught ReferenceError: require is not defined19
next-qjs / fail: Uncaught ReferenceError: require is not defined19
next / fail: incomplete: Uncaught ReferenceError: setup is not defined14
next-qjs / fail: Uncaught SyntaxError: invalid keyword: with13
next / unsupported: harness step_func (asynchronous testharness API)11
next / fail: TypeError: not a function8
next / unsupported: harness promiseHelper.js (needs reflection)8
next-qjs / fail: Uncaught SyntaxError: cannot delete a direct reference in strict mode7
next / fail: incomplete: Uncaught ReferenceError: location is not defined5
next / fail: name: WebAssembly is not defined5
next / fail: Uncaught TestNError: Expected a function Error() {4
next-qjs / fail: Uncaught TypeError: Cannot convert undefined or null to object4
next-qjs / fail: Uncaught ReferenceError: y is not defined4
next / fail: Uncaught SyntaxError: lexical declarations can’t appear in single-statement context4
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-only3

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).

Edit this page on GitHub ↗