diff --git a/dev/bench/index.html b/dev/bench/index.html index c5b54012ec5..07f86ad86d5 100644 --- a/dev/bench/index.html +++ b/dev/bench/index.html @@ -1,4 +1,4 @@ - + @@ -8,9 +8,20 @@ />

Boa Playground

\ No newline at end of file + } + + +
+
+ +

Boa Playground

+
+
+
+

+
+
+ + diff --git a/test262/fix.py b/test262/fix.py new file mode 100644 index 00000000000..9069b3af70a --- /dev/null +++ b/test262/fix.py @@ -0,0 +1,255 @@ +import json +import os + + +def suite_conformance(suite): + global function_suite + res = { + "t": 0, + "o": 0, + "i": 0, + "p": 0 + } + + if "s" in suite.keys(): + for subSuite in suite["s"].values(): + conformance = suite_conformance(subSuite) + res["t"] += conformance["t"] + res["o"] += conformance["o"] + res["i"] += conformance["i"] + res["p"] += conformance["p"] + + if "t" in suite.keys(): + for testName in suite["t"].keys(): + test = suite["t"][testName] + + res["t"] += 1 + if "s" in test.keys() and "r" in test.keys(): + if test["s"] == "O" and test["r"] == "O": + res["o"] += 1 + elif test["s"] == "I" and test["r"] == "I": + res["i"] += 1 + elif test["s"] == "P" or test["r"] == "P": + res["p"] += 1 + elif "s" in test.keys(): + if test["s"] == "O": + res["o"] += 1 + elif test["s"] == "I": + res["i"] += 1 + elif test["s"] == "P": + res["p"] += 1 + else: + if test["r"] == "O": + res["o"] += 1 + elif test["r"] == "I": + res["i"] += 1 + elif test["r"] == "P": + res["p"] += 1 + + return res + + +def version_conformance(suite): + res = {} + + if "s" in suite.keys(): + for subSuite in suite["s"].values(): + versions = version_conformance(subSuite) + for key in versions.keys(): + if key not in res.keys(): + res[key] = { + "t": 0, + "o": 0, + "i": 0, + "p": 0 + } + + res[key]["t"] += versions[key]["t"] + res[key]["o"] += versions[key]["o"] + res[key]["i"] += versions[key]["i"] + res[key]["p"] += versions[key]["p"] + + if "t" in suite.keys(): + for testName in suite["t"].keys(): + test = suite["t"][testName] + + if "v" in test.keys(): + version = test["v"] + if version != 255: + key = str(version) + if key not in res.keys(): + res[key] = { + "t": 0, + "o": 0, + "i": 0, + "p": 0 + } + + res[key]["t"] += 1 + if "s" in test.keys() and "r" in test.keys(): + if test["s"] == "O" and test["r"] == "O": + res[key]["o"] += 1 + elif test["s"] == "I" and test["r"] == "I": + res[key]["i"] += 1 + elif test["s"] == "P" or test["r"] == "P": + res[key]["p"] += 1 + elif "s" in test.keys(): + if test["s"] == "O": + res[key]["o"] += 1 + elif test["s"] == "I": + res[key]["i"] += 1 + elif test["s"] == "P": + res[key]["p"] += 1 + else: + if test["r"] == "O": + res[key]["o"] += 1 + elif test["r"] == "I": + res[key]["i"] += 1 + elif test["r"] == "P": + res[key]["p"] += 1 + + return res + + +def fix_tests(tests): + fixed = {} + + for test in tests: + name = test["n"] + if test["n"] in fixed: + if test["s"]: + fixed[name]["s"] = test["r"] + else: + fixed[name]["r"] = test["r"] + else: + fixed[name] = {} + + if "v" in test.keys(): + fixed[name]["v"] = test["v"] + + if "s" in test.keys(): + if test["s"]: + fixed[name]["s"] = test["r"] + else: + fixed[name]["r"] = test["r"] + else: + fixed[name]["r"] = test["r"] + + return fixed + + +def fix_suite(suites): + fixed = {} + for suite in suites: + name = suite["n"] + fixed[name] = {} + + if "s" in suite.keys(): + fixed[name]["s"] = fix_suite(suite["s"]) + + if "t" in suite.keys(): + fixed[name]["t"] = fix_tests(suite["t"]) + + fixed[name]["a"] = suite_conformance(fixed[name]) + fixed[name]["v"] = version_conformance(fixed[name]) + + return fixed + + +def fix_all(latest): + fixed = { + "c": latest["c"], + "u": latest["u"], + "r": fix_suite(latest["r"]["s"]), + "a": { + "t": 0, + "o": 0, + "i": 0, + "p": 0 + }, + "v": {}, + } + + for suite in fixed["r"].values(): + fixed["a"]["t"] += suite["a"]["t"] + fixed["a"]["o"] += suite["a"]["o"] + fixed["a"]["i"] += suite["a"]["i"] + fixed["a"]["p"] += suite["a"]["p"] + + for key in suite["v"].keys(): + if key not in fixed["v"].keys(): + fixed["v"][key] = { + "t": 0, + "o": 0, + "i": 0, + "p": 0 + } + + fixed["v"][key]["t"] += suite["v"][key]["t"] + fixed["v"][key]["o"] += suite["v"][key]["o"] + fixed["v"][key]["i"] += suite["v"][key]["i"] + fixed["v"][key]["p"] += suite["v"][key]["p"] + + return fixed + + +def fix_file(file_name): + with open(file_name) as latest_f: + latest = json.load(latest_f) + fixed_latest = fix_all(latest) + + with open(file_name, 'w') as latest_of: + json.dump(fixed_latest, latest_of, separators=( + ',', ':'), ensure_ascii=False) + + return fixed_latest + + +def clean_main(latest): + with open("./refs/heads/main/results.json") as results_f: + results = json.load(results_f) + fixed_results = [] + for result in results: + fixed_results.append({ + "c": result["c"], + "u": result["u"], + "a": result["a"], + }) + + fixed_results[-1] = { + "c": latest["c"], + "u": latest["u"], + "a": latest["a"], + } + + with open("./refs/heads/main/results.json", 'w') as results_of: + json.dump(fixed_results, results_of, separators=( + ',', ':'), ensure_ascii=False) + + +def clean_old(file_name, results): + fixed_results = [{ + "c": results["c"], + "u": results["u"], + "a": results["a"], + }] + + with open(file_name, 'w') as results_of: + json.dump(fixed_results, results_of, separators=( + ',', ':'), ensure_ascii=False) + + +for top, dirs, files in os.walk("./refs/tags"): + for dir in dirs: + print("Fixing " + dir) + results = fix_file("./refs/tags/" + dir + "/latest.json") + clean_old("./refs/tags/" + dir + "/results.json", results) + + if os.path.exists("./refs/tags/" + dir + "/features.json"): + os.remove("./refs/tags/" + dir + "/features.json") + +print("Fixing main branch") +results = fix_file("./refs/heads/main/latest.json") +clean_main(results) +if os.path.exists("./refs/heads/main/features.json"): + os.remove("./refs/heads/main/features.json") diff --git a/test262/index.html b/test262/index.html index e6009302610..d9079777aa2 100644 --- a/test262/index.html +++ b/test262/index.html @@ -1,4 +1,4 @@ - + Boa EcmaScript conformance @@ -6,14 +6,14 @@ @@ -159,8 +159,17 @@

Older versions

- - + +
@@ -194,15 +203,11 @@ - + diff --git a/test262/refs/tags/v0.15/features.json b/test262/refs/tags/v0.15/features.json deleted file mode 100644 index 211d57f824c..00000000000 --- a/test262/refs/tags/v0.15/features.json +++ /dev/null @@ -1 +0,0 @@ -[{"c":"9e81103cdf73893abc8ec3894c0bcf3c51329b0c","u":"79e3bc5176b6f29a5aed3b7164a9c623a3a9a63b","n":"test","f":["AggregateError","Array.prototype.at","Array.prototype.flat","Array.prototype.flatMap","Array.prototype.values","ArrayBuffer","Atomics","Atomics.waitAsync","BigInt","DataView","DataView.prototype.getFloat32","DataView.prototype.getFloat64","DataView.prototype.getInt16","DataView.prototype.getInt32","DataView.prototype.getInt8","DataView.prototype.getUint16","DataView.prototype.getUint32","DataView.prototype.setUint8","FinalizationRegistry","FinalizationRegistry.prototype.cleanupSome","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Intl-enumeration","Intl.DateTimeFormat-datetimestyle","Intl.DateTimeFormat-dayPeriod","Intl.DateTimeFormat-extend-timezonename","Intl.DateTimeFormat-formatRange","Intl.DateTimeFormat-fractionalSecondDigits","Intl.DisplayNames","Intl.DisplayNames-v2","Intl.DurationFormat","Intl.ListFormat","Intl.Locale","Intl.Locale-info","Intl.NumberFormat-unified","Intl.NumberFormat-v3","Intl.RelativeTimeFormat","Intl.Segmenter","IsHTMLDDA","Map","Object.fromEntries","Object.hasOwn","Object.is","Promise","Promise.allSettled","Promise.any","Promise.prototype.finally","Proxy","Reflect","Reflect.construct","Reflect.set","Reflect.setPrototypeOf","Set","ShadowRealm","SharedArrayBuffer","String.fromCodePoint","String.prototype.at","String.prototype.endsWith","String.prototype.includes","String.prototype.matchAll","String.prototype.replaceAll","String.prototype.trimEnd","String.prototype.trimStart","Symbol","Symbol.asyncIterator","Symbol.hasInstance","Symbol.isConcatSpreadable","Symbol.iterator","Symbol.match","Symbol.matchAll","Symbol.prototype.description","Symbol.replace","Symbol.search","Symbol.species","Symbol.split","Symbol.toPrimitive","Symbol.toStringTag","Symbol.unscopables","Temporal","TypedArray","TypedArray.prototype.at","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","WeakMap","WeakRef","WeakSet","__getter__","__proto__","__setter__","align-detached-buffer-semantics-with-web-reality","arbitrary-module-namespace-names","array-find-from-last","array-grouping","arrow-function","async-functions","async-iteration","caller","class","class-fields-private","class-fields-private-in","class-fields-public","class-methods-private","class-static-block","class-static-fields-private","class-static-fields-public","class-static-methods-private","coalesce-expression","computed-property-names","const","cross-realm","decorators","default-parameters","destructuring-assignment","destructuring-binding","dynamic-import","error-cause","export-star-as-namespace-from-module","for-in-order","for-of","generators","globalThis","hashbang","host-gc-required","import-assertions","import.meta","intl-normative-optional","json-modules","json-superset","legacy-regexp","let","logical-assignment-operators","new.target","numeric-separator-literal","object-rest","object-spread","optional-catch-binding","optional-chaining","proxy-missing-checks","regexp-dotall","regexp-lookbehind","regexp-match-indices","regexp-named-groups","regexp-unicode-property-escapes","regexp-v-flag","resizable-arraybuffer","rest-parameters","string-trimming","super","tail-call-optimization","template","top-level-await","u180e","well-formed-json-stringify"]}] \ No newline at end of file diff --git a/test262/refs/tags/v0.16/features.json b/test262/refs/tags/v0.16/features.json deleted file mode 100644 index cc43755499f..00000000000 --- a/test262/refs/tags/v0.16/features.json +++ /dev/null @@ -1 +0,0 @@ -[{"c":"888cc28e1a5368295b9ec9269069c99fc9f5656e","u":"9215420deee3e5887d29f95822bf6a474c1bf728","n":"test","f":["AggregateError","Array.prototype.at","Array.prototype.flat","Array.prototype.flatMap","Array.prototype.values","ArrayBuffer","Atomics","Atomics.waitAsync","BigInt","DataView","DataView.prototype.getFloat32","DataView.prototype.getFloat64","DataView.prototype.getInt16","DataView.prototype.getInt32","DataView.prototype.getInt8","DataView.prototype.getUint16","DataView.prototype.getUint32","DataView.prototype.setUint8","FinalizationRegistry","FinalizationRegistry.prototype.cleanupSome","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Intl-enumeration","Intl.DateTimeFormat-datetimestyle","Intl.DateTimeFormat-dayPeriod","Intl.DateTimeFormat-extend-timezonename","Intl.DateTimeFormat-formatRange","Intl.DateTimeFormat-fractionalSecondDigits","Intl.DisplayNames","Intl.DisplayNames-v2","Intl.DurationFormat","Intl.ListFormat","Intl.Locale","Intl.Locale-info","Intl.NumberFormat-unified","Intl.NumberFormat-v3","Intl.RelativeTimeFormat","Intl.Segmenter","IsHTMLDDA","Map","Object.fromEntries","Object.hasOwn","Object.is","Promise","Promise.allSettled","Promise.any","Promise.prototype.finally","Proxy","Reflect","Reflect.construct","Reflect.set","Reflect.setPrototypeOf","Set","ShadowRealm","SharedArrayBuffer","String.fromCodePoint","String.prototype.at","String.prototype.endsWith","String.prototype.includes","String.prototype.matchAll","String.prototype.replaceAll","String.prototype.trimEnd","String.prototype.trimStart","Symbol","Symbol.asyncIterator","Symbol.hasInstance","Symbol.isConcatSpreadable","Symbol.iterator","Symbol.match","Symbol.matchAll","Symbol.prototype.description","Symbol.replace","Symbol.search","Symbol.species","Symbol.split","Symbol.toPrimitive","Symbol.toStringTag","Symbol.unscopables","Temporal","TypedArray","TypedArray.prototype.at","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","WeakMap","WeakRef","WeakSet","__getter__","__proto__","__setter__","align-detached-buffer-semantics-with-web-reality","arbitrary-module-namespace-names","array-find-from-last","array-grouping","arrow-function","async-functions","async-iteration","caller","class","class-fields-private","class-fields-private-in","class-fields-public","class-methods-private","class-static-block","class-static-fields-private","class-static-fields-public","class-static-methods-private","coalesce-expression","computed-property-names","const","cross-realm","decorators","default-parameters","destructuring-assignment","destructuring-binding","dynamic-import","error-cause","export-star-as-namespace-from-module","for-in-order","for-of","generators","globalThis","hashbang","host-gc-required","import-assertions","import.meta","intl-normative-optional","json-modules","json-superset","legacy-regexp","let","logical-assignment-operators","new.target","numeric-separator-literal","object-rest","object-spread","optional-catch-binding","optional-chaining","proxy-missing-checks","regexp-dotall","regexp-duplicate-named-groups","regexp-lookbehind","regexp-match-indices","regexp-named-groups","regexp-unicode-property-escapes","regexp-v-flag","resizable-arraybuffer","rest-parameters","string-trimming","super","tail-call-optimization","template","top-level-await","u180e","well-formed-json-stringify"]}] \ No newline at end of file diff --git a/test262/refs/tags/v0.17.1/features.json b/test262/refs/tags/v0.17.1/features.json deleted file mode 100644 index 739e05b1414..00000000000 --- a/test262/refs/tags/v0.17.1/features.json +++ /dev/null @@ -1 +0,0 @@ -[{"c":"3379753b17b1ba502af0cdb06397dc3f150893c1","u":"8ce9864511c1c83ba2d0b351da3390c9e33fd60e","n":"test","f":["Uint8ClampedArray","Array.prototype.flatMap","Object.fromEntries","regexp-match-indices","DataView.prototype.getFloat32","Symbol.toPrimitive","class-static-methods-private","regexp-dotall","Symbol","Array.prototype.values","class-static-fields-private","Intl.RelativeTimeFormat","error-cause","String.prototype.replaceAll","super","Float64Array","Uint8Array","legacy-regexp","string-trimming","regexp-v-flag","const","TypedArray","new.target","Symbol.matchAll","destructuring-binding","Promise.allSettled","Intl.DateTimeFormat-fractionalSecondDigits","arraybuffer-transfer","String.prototype.isWellFormed","String.prototype.includes","rest-parameters","u180e","Int32Array","iterator-helpers","for-in-order","caller","Array.prototype.includes","DataView","String.prototype.trimStart","Reflect.set","Symbol.isConcatSpreadable","Symbol.asyncIterator","__getter__","proxy-missing-checks","regexp-named-groups","destructuring-assignment","Intl.DateTimeFormat-formatRange","Intl-enumeration","Map","DataView.prototype.getInt32","String.prototype.at","Symbol.hasInstance","symbols-as-weakmap-keys","numeric-separator-literal","String.fromCodePoint","tail-call-optimization","IsHTMLDDA","for-of","decorators","class-static-fields-public","intl-normative-optional","DataView.prototype.getInt8","top-level-await","class-fields-public","let","Promise","Array.fromAsync","json-modules","DataView.prototype.setUint8","Symbol.toStringTag","SharedArrayBuffer","Symbol.split","Temporal","logical-assignment-operators","Atomics","DataView.prototype.getInt16","default-parameters","Intl.DateTimeFormat-datetimestyle","Intl.DateTimeFormat-extend-timezonename","Intl.NumberFormat-unified","class","__setter__","change-array-by-copy","Set","class-static-block","regexp-duplicate-named-groups","arbitrary-module-namespace-names","optional-catch-binding","hashbang","Symbol.unscopables","Intl.ListFormat","Symbol.iterator","class-methods-private","template","BigInt","Object.is","DataView.prototype.getUint16","optional-chaining","String.prototype.endsWith","Intl.DurationFormat","AggregateError","Atomics.waitAsync","class-fields-private-in","String.prototype.trimEnd","DataView.prototype.getFloat64","Object.hasOwn","WeakSet","arrow-function","Symbol.match","Intl.Locale","cross-realm","ShadowRealm","regexp-lookbehind","computed-property-names","Intl.NumberFormat-v3","array-find-from-last","Proxy","exponentiation","ArrayBuffer","Promise.any","well-formed-json-stringify","Symbol.replace","object-rest","export-star-as-namespace-from-module","import.meta","Symbol.species","Float32Array","Symbol.search","FinalizationRegistry","Reflect.setPrototypeOf","Promise.prototype.finally","object-spread","dynamic-import","align-detached-buffer-semantics-with-web-reality","Reflect.construct","json-superset","Array.prototype.flat","Intl.DateTimeFormat-dayPeriod","Reflect","Symbol.prototype.description","array-grouping","host-gc-required","FinalizationRegistry.prototype.cleanupSome","Intl.Locale-info","Uint16Array","async-iteration","TypedArray.prototype.at","resizable-arraybuffer","Intl.Segmenter","WeakMap","String.prototype.toWellFormed","WeakRef","globalThis","String.prototype.matchAll","__proto__","DataView.prototype.getUint32","json-parse-with-source","Uint32Array","coalesce-expression","regexp-unicode-property-escapes","async-functions","generators","Int16Array","Intl.DisplayNames","Array.prototype.at","Intl.DisplayNames-v2","import-assertions","Int8Array","class-fields-private"]}] \ No newline at end of file diff --git a/test262/refs/tags/v0.17.2/features.json b/test262/refs/tags/v0.17.2/features.json deleted file mode 100644 index 10f84b20afb..00000000000 --- a/test262/refs/tags/v0.17.2/features.json +++ /dev/null @@ -1 +0,0 @@ -[{"c":"40241c09374581e19f0f6a4866de16c231b23296","u":"8ce9864511c1c83ba2d0b351da3390c9e33fd60e","n":"test","f":["Uint8ClampedArray","Array.prototype.flatMap","Object.fromEntries","regexp-match-indices","DataView.prototype.getFloat32","Symbol.toPrimitive","class-static-methods-private","regexp-dotall","Symbol","Array.prototype.values","class-static-fields-private","Intl.RelativeTimeFormat","error-cause","String.prototype.replaceAll","super","Float64Array","Uint8Array","legacy-regexp","string-trimming","regexp-v-flag","const","TypedArray","new.target","Symbol.matchAll","destructuring-binding","Promise.allSettled","Intl.DateTimeFormat-fractionalSecondDigits","arraybuffer-transfer","String.prototype.isWellFormed","String.prototype.includes","rest-parameters","u180e","Int32Array","iterator-helpers","for-in-order","caller","Array.prototype.includes","DataView","String.prototype.trimStart","Reflect.set","Symbol.isConcatSpreadable","Symbol.asyncIterator","__getter__","proxy-missing-checks","regexp-named-groups","destructuring-assignment","Intl.DateTimeFormat-formatRange","Intl-enumeration","Map","DataView.prototype.getInt32","String.prototype.at","Symbol.hasInstance","symbols-as-weakmap-keys","numeric-separator-literal","String.fromCodePoint","tail-call-optimization","IsHTMLDDA","for-of","decorators","class-static-fields-public","intl-normative-optional","DataView.prototype.getInt8","top-level-await","class-fields-public","let","Promise","Array.fromAsync","json-modules","DataView.prototype.setUint8","Symbol.toStringTag","SharedArrayBuffer","Symbol.split","Temporal","logical-assignment-operators","Atomics","DataView.prototype.getInt16","default-parameters","Intl.DateTimeFormat-datetimestyle","Intl.DateTimeFormat-extend-timezonename","Intl.NumberFormat-unified","class","__setter__","change-array-by-copy","Set","class-static-block","regexp-duplicate-named-groups","arbitrary-module-namespace-names","optional-catch-binding","hashbang","Symbol.unscopables","Intl.ListFormat","Symbol.iterator","class-methods-private","template","BigInt","Object.is","DataView.prototype.getUint16","optional-chaining","String.prototype.endsWith","Intl.DurationFormat","AggregateError","Atomics.waitAsync","class-fields-private-in","String.prototype.trimEnd","DataView.prototype.getFloat64","Object.hasOwn","WeakSet","arrow-function","Symbol.match","Intl.Locale","cross-realm","ShadowRealm","regexp-lookbehind","computed-property-names","Intl.NumberFormat-v3","array-find-from-last","Proxy","exponentiation","ArrayBuffer","Promise.any","well-formed-json-stringify","Symbol.replace","object-rest","export-star-as-namespace-from-module","import.meta","Symbol.species","Float32Array","Symbol.search","FinalizationRegistry","Reflect.setPrototypeOf","Promise.prototype.finally","object-spread","dynamic-import","align-detached-buffer-semantics-with-web-reality","Reflect.construct","json-superset","Array.prototype.flat","Intl.DateTimeFormat-dayPeriod","Reflect","Symbol.prototype.description","array-grouping","host-gc-required","FinalizationRegistry.prototype.cleanupSome","Intl.Locale-info","Uint16Array","async-iteration","TypedArray.prototype.at","resizable-arraybuffer","Intl.Segmenter","WeakMap","String.prototype.toWellFormed","WeakRef","globalThis","String.prototype.matchAll","__proto__","DataView.prototype.getUint32","json-parse-with-source","Uint32Array","coalesce-expression","regexp-unicode-property-escapes","async-functions","generators","Int16Array","Intl.DisplayNames","Array.prototype.at","Intl.DisplayNames-v2","import-assertions","Int8Array","class-fields-private"]}] \ No newline at end of file diff --git a/test262/refs/tags/v0.17.3/features.json b/test262/refs/tags/v0.17.3/features.json deleted file mode 100644 index 7a3ce481f83..00000000000 --- a/test262/refs/tags/v0.17.3/features.json +++ /dev/null @@ -1 +0,0 @@ -[{"c":"60086838665545aa8f9361b76642616898e42853","u":"8ce9864511c1c83ba2d0b351da3390c9e33fd60e","n":"test","f":["Uint8ClampedArray","Array.prototype.flatMap","Object.fromEntries","regexp-match-indices","DataView.prototype.getFloat32","Symbol.toPrimitive","class-static-methods-private","regexp-dotall","Symbol","Array.prototype.values","Intl.RelativeTimeFormat","class-static-fields-private","super","error-cause","String.prototype.replaceAll","Float64Array","Uint8Array","legacy-regexp","string-trimming","const","regexp-v-flag","TypedArray","new.target","Symbol.matchAll","destructuring-binding","Intl.DateTimeFormat-fractionalSecondDigits","Promise.allSettled","arraybuffer-transfer","String.prototype.isWellFormed","String.prototype.includes","rest-parameters","u180e","Int32Array","caller","for-in-order","iterator-helpers","Array.prototype.includes","Symbol.asyncIterator","DataView","Intl.DateTimeFormat-formatRange","regexp-named-groups","Reflect.set","String.prototype.trimStart","destructuring-assignment","Intl-enumeration","Symbol.isConcatSpreadable","__getter__","proxy-missing-checks","Map","DataView.prototype.getInt32","Symbol.hasInstance","symbols-as-weakmap-keys","String.prototype.at","numeric-separator-literal","tail-call-optimization","decorators","String.fromCodePoint","for-of","IsHTMLDDA","intl-normative-optional","class-static-fields-public","DataView.prototype.getInt8","top-level-await","let","class-fields-public","Promise","json-modules","Array.fromAsync","DataView.prototype.setUint8","Symbol.toStringTag","Temporal","SharedArrayBuffer","Symbol.split","logical-assignment-operators","Intl.DateTimeFormat-datetimestyle","Intl.DateTimeFormat-extend-timezonename","default-parameters","DataView.prototype.getInt16","Intl.NumberFormat-unified","Atomics","class","optional-catch-binding","change-array-by-copy","class-static-block","Set","hashbang","arbitrary-module-namespace-names","__setter__","regexp-duplicate-named-groups","Symbol.unscopables","Intl.ListFormat","class-methods-private","Symbol.iterator","template","BigInt","optional-chaining","DataView.prototype.getUint16","Intl.DurationFormat","Object.is","String.prototype.endsWith","AggregateError","Atomics.waitAsync","class-fields-private-in","String.prototype.trimEnd","DataView.prototype.getFloat64","Object.hasOwn","WeakSet","arrow-function","Intl.Locale","Symbol.match","cross-realm","ShadowRealm","regexp-lookbehind","computed-property-names","Intl.NumberFormat-v3","array-find-from-last","Proxy","exponentiation","ArrayBuffer","Promise.any","well-formed-json-stringify","Symbol.replace","object-rest","export-star-as-namespace-from-module","import.meta","object-spread","Float32Array","Symbol.species","dynamic-import","FinalizationRegistry","Reflect.setPrototypeOf","Symbol.search","Promise.prototype.finally","align-detached-buffer-semantics-with-web-reality","Reflect.construct","json-superset","Array.prototype.flat","Intl.DateTimeFormat-dayPeriod","Reflect","Intl.Locale-info","Symbol.prototype.description","host-gc-required","array-grouping","FinalizationRegistry.prototype.cleanupSome","Uint16Array","async-iteration","Intl.Segmenter","TypedArray.prototype.at","resizable-arraybuffer","WeakMap","String.prototype.toWellFormed","globalThis","WeakRef","String.prototype.matchAll","Uint32Array","__proto__","DataView.prototype.getUint32","json-parse-with-source","coalesce-expression","regexp-unicode-property-escapes","async-functions","generators","Int16Array","Intl.DisplayNames-v2","Intl.DisplayNames","Array.prototype.at","import-assertions","Int8Array","class-fields-private"]}] \ No newline at end of file diff --git a/test262/refs/tags/v0.17/features.json b/test262/refs/tags/v0.17/features.json deleted file mode 100644 index aa6ca6f4e32..00000000000 --- a/test262/refs/tags/v0.17/features.json +++ /dev/null @@ -1 +0,0 @@ -[{"c":"e027932ae2da3f548b28f9fafc4d12b04f69d0e4","u":"8ce9864511c1c83ba2d0b351da3390c9e33fd60e","n":"test","f":["Uint8ClampedArray","Array.prototype.flatMap","Object.fromEntries","regexp-match-indices","DataView.prototype.getFloat32","Symbol.toPrimitive","class-static-methods-private","regexp-dotall","Symbol","Array.prototype.values","Intl.RelativeTimeFormat","class-static-fields-private","error-cause","String.prototype.replaceAll","super","Float64Array","Uint8Array","legacy-regexp","string-trimming","regexp-v-flag","const","TypedArray","new.target","Symbol.matchAll","destructuring-binding","Promise.allSettled","Intl.DateTimeFormat-fractionalSecondDigits","arraybuffer-transfer","String.prototype.isWellFormed","String.prototype.includes","rest-parameters","u180e","iterator-helpers","caller","for-in-order","Int32Array","Array.prototype.includes","Symbol.asyncIterator","DataView","Reflect.set","Symbol.isConcatSpreadable","String.prototype.trimStart","regexp-named-groups","__getter__","proxy-missing-checks","Intl.DateTimeFormat-formatRange","Intl-enumeration","destructuring-assignment","Map","DataView.prototype.getInt32","Symbol.hasInstance","symbols-as-weakmap-keys","String.prototype.at","numeric-separator-literal","String.fromCodePoint","tail-call-optimization","decorators","for-of","IsHTMLDDA","intl-normative-optional","class-static-fields-public","DataView.prototype.getInt8","top-level-await","let","class-fields-public","Promise","Array.fromAsync","json-modules","DataView.prototype.setUint8","Temporal","Symbol.toStringTag","SharedArrayBuffer","Symbol.split","logical-assignment-operators","Atomics","DataView.prototype.getInt16","Intl.DateTimeFormat-datetimestyle","Intl.DateTimeFormat-extend-timezonename","Intl.NumberFormat-unified","default-parameters","class","change-array-by-copy","__setter__","Set","class-static-block","regexp-duplicate-named-groups","optional-catch-binding","hashbang","arbitrary-module-namespace-names","Symbol.unscopables","Intl.ListFormat","Symbol.iterator","class-methods-private","template","BigInt","DataView.prototype.getUint16","Object.is","Intl.DurationFormat","String.prototype.endsWith","optional-chaining","AggregateError","Atomics.waitAsync","class-fields-private-in","String.prototype.trimEnd","DataView.prototype.getFloat64","Object.hasOwn","WeakSet","arrow-function","Symbol.match","Intl.Locale","cross-realm","regexp-lookbehind","ShadowRealm","computed-property-names","Intl.NumberFormat-v3","array-find-from-last","Proxy","exponentiation","ArrayBuffer","Promise.any","well-formed-json-stringify","Symbol.replace","object-rest","export-star-as-namespace-from-module","import.meta","Symbol.species","Float32Array","Symbol.search","Promise.prototype.finally","Reflect.setPrototypeOf","FinalizationRegistry","object-spread","dynamic-import","align-detached-buffer-semantics-with-web-reality","Reflect.construct","json-superset","Array.prototype.flat","Intl.DateTimeFormat-dayPeriod","Reflect","Symbol.prototype.description","array-grouping","host-gc-required","FinalizationRegistry.prototype.cleanupSome","Intl.Locale-info","Uint16Array","async-iteration","TypedArray.prototype.at","resizable-arraybuffer","Intl.Segmenter","WeakMap","String.prototype.toWellFormed","globalThis","WeakRef","String.prototype.matchAll","DataView.prototype.getUint32","__proto__","json-parse-with-source","Uint32Array","coalesce-expression","regexp-unicode-property-escapes","async-functions","generators","Int16Array","Intl.DisplayNames-v2","Array.prototype.at","Intl.DisplayNames","import-assertions","Int8Array","class-fields-private"]}] \ No newline at end of file diff --git a/test262/results.js b/test262/results.js index c66b4bc3e9b..d9db3b5b080 100644 --- a/test262/results.js +++ b/test262/results.js @@ -1,31 +1,30 @@ +const ignored = ["v0.17.1", "v0.17.2"]; + const formatter = new Intl.NumberFormat("en-GB"); const esVersionPicker = document.getElementById("info-options-es-version"); -const hidePassingSwitch = document.getElementById("info-options-hide-passing-switch"); +const hidePassingSwitch = document.getElementById( + "info-options-hide-passing-switch" +); let hidePassingSuites = false; let currentData = null; let esVersion = 255; hidePassingSwitch.checked = false; -hidePassingSwitch - .addEventListener("change", () => { - hidePassingSuites = !hidePassingSuites; - showData(currentData); - }); +hidePassingSwitch.addEventListener("change", () => { + hidePassingSuites = !hidePassingSuites; + showData(currentData); +}); -esVersionPicker.getElementsByTagName('option')[0].selected = true; +esVersionPicker.getElementsByTagName("option")[0].selected = true; esVersionPicker.disabled = false; esVersionPicker.addEventListener("change", () => { const version = Number.parseInt(esVersionPicker.value); - console.log(`selected version: ${version}`); - esVersion = version; - showData(currentData) + showData(currentData); }); - - loadMainData(); loadMainResults(); @@ -40,6 +39,11 @@ loadLatestVersionResults(latestTag); const releaseTags = []; for (const release of releases) { const tag = release.tag_name; + + if (ignored.includes(tag)) { + continue; + } + const version = tag.split("."); // We know there is no data for versions lower than v0.10. @@ -56,7 +60,7 @@ const versionListHTMLItems = await Promise.all( releaseTags.map(async (tag) => { const response = await fetch(`./refs/tags/${tag}/latest.json`); const json = await response.json(); - const stats = json.r.a; + const stats = json.a; releaseData.set(tag, json); @@ -68,18 +72,19 @@ const versionListHTMLItems = await Promise.all( ${formatter.format(stats.i)} / ${formatter.format( - stats.t - stats.o - stats.i - )} - ${json.r.p !== 0 - ? ` (${formatter.format( - stats.p - )} )` - : "" - } + stats.t - stats.o - stats.i + )} + ${ + stats.p !== 0 + ? ` (${formatter.format( + stats.p + )} )` + : "" + } / ${formatter.format( - Math.round((10000 * stats.o) / stats.t) / 100 - )}% + Math.round((10000 * stats.o) / stats.t) / 100 + )}%