From fcac04b5ae9ab2e263517eabff9e76c1fd3928c1 Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Thu, 8 Aug 2024 14:01:34 -0400 Subject: [PATCH 1/6] Add Number --- features/number.yml | 30 ++++++++ features/number.yml.dist | 148 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 features/number.yml create mode 100644 features/number.yml.dist diff --git a/features/number.yml b/features/number.yml new file mode 100644 index 00000000000..f0fdf758fcd --- /dev/null +++ b/features/number.yml @@ -0,0 +1,30 @@ +name: Number +description: The Number object is used to store number and manipulate floating-point numbers, like 42, or -4.201 +spec: https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number-objects +status: + compute_from: javascript.builtins.Number +compat_features: + - javascript.builtins.Number + - javascript.builtins.Number.EPSILON + - javascript.builtins.Number.MAX_SAFE_INTEGER + - javascript.builtins.Number.MAX_VALUE + - javascript.builtins.Number.MIN_SAFE_INTEGER + - javascript.builtins.Number.MIN_VALUE + - javascript.builtins.Number.NaN + - javascript.builtins.Number.NEGATIVE_INFINITY + - javascript.builtins.Number.Number + - javascript.builtins.Number.POSITIVE_INFINITY + - javascript.builtins.Number.isFinite + - javascript.builtins.Number.isInteger + - javascript.builtins.Number.isNaN + - javascript.builtins.Number.isSafeInteger + - javascript.builtins.Number.parseFloat + - javascript.builtins.Number.parseInt + - javascript.builtins.Number.toExponential + - javascript.builtins.Number.toFixed + - javascript.builtins.Number.toLocaleString + - javascript.builtins.Number.toLocaleString.locales_parameter + - javascript.builtins.Number.toLocaleString.options_parameter + - javascript.builtins.Number.toPrecision + - javascript.builtins.Number.toString + - javascript.builtins.Number.valueOf diff --git a/features/number.yml.dist b/features/number.yml.dist new file mode 100644 index 00000000000..4bad8d85ef4 --- /dev/null +++ b/features/number.yml.dist @@ -0,0 +1,148 @@ +# Generated from: number.yml +# Do not edit this file by hand. Edit the source file instead! + +status: + baseline: high + baseline_low_date: 2015-07-29 + baseline_high_date: 2018-01-29 + support: + chrome: "1" + chrome_android: "18" + edge: "12" + firefox: "1" + firefox_android: "4" + safari: "1" + safari_ios: "1" +compat_features: + # ⬇️ Same status as overall feature ⬇️ + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "1" + # safari_ios: "1" + - javascript.builtins.Number + - javascript.builtins.Number.MAX_VALUE + - javascript.builtins.Number.MIN_VALUE + - javascript.builtins.Number.NEGATIVE_INFINITY + - javascript.builtins.Number.NaN + - javascript.builtins.Number.Number + - javascript.builtins.Number.POSITIVE_INFINITY + - javascript.builtins.Number.toLocaleString + - javascript.builtins.Number.toString + - javascript.builtins.Number.valueOf + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "1" + # chrome_android: "18" + # edge: "12" + # firefox: "1" + # firefox_android: "4" + # safari: "2" + # safari_ios: "1" + - javascript.builtins.Number.toExponential + - javascript.builtins.Number.toFixed + - javascript.builtins.Number.toPrecision + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "19" + # chrome_android: "25" + # edge: "12" + # firefox: "16" + # firefox_android: "16" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Number.isFinite + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "25" + # chrome_android: "25" + # edge: "12" + # firefox: "15" + # firefox_android: "15" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Number.isNaN + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "34" + # chrome_android: "34" + # edge: "12" + # firefox: "16" + # firefox_android: "16" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Number.isInteger + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "34" + # chrome_android: "34" + # edge: "12" + # firefox: "25" + # firefox_android: "25" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Number.EPSILON + - javascript.builtins.Number.parseFloat + - javascript.builtins.Number.parseInt + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "34" + # chrome_android: "34" + # edge: "12" + # firefox: "31" + # firefox_android: "31" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Number.MAX_SAFE_INTEGER + - javascript.builtins.Number.MIN_SAFE_INTEGER + + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "34" + # chrome_android: "34" + # edge: "12" + # firefox: "32" + # firefox_android: "32" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Number.isSafeInteger + + # baseline: high + # baseline_low_date: 2017-09-28 + # baseline_high_date: 2020-03-28 + # support: + # chrome: "24" + # chrome_android: "26" + # edge: "12" + # firefox: "29" + # firefox_android: "56" + # safari: "10" + # safari_ios: "10" + - javascript.builtins.Number.toLocaleString.locales_parameter + - javascript.builtins.Number.toLocaleString.options_parameter From 331318a6ce8e2f087076ebef24bff19f427d7c8d Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Tue, 13 Aug 2024 10:44:55 -0400 Subject: [PATCH 2/6] Apply suggestions from code review Co-authored-by: Daniel D. Beck --- features/number.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/features/number.yml b/features/number.yml index f0fdf758fcd..22360efbf4b 100644 --- a/features/number.yml +++ b/features/number.yml @@ -1,9 +1,12 @@ name: Number -description: The Number object is used to store number and manipulate floating-point numbers, like 42, or -4.201 +description: The number type (and `Number` object) represents floating-point numbers, such as 42 or -4.201. JavaScript numbers can also represent boundless negative and positive values as `Infinity` or not-a-number as `NaN` (as in `0 * Infinity`). spec: https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number-objects status: compute_from: javascript.builtins.Number compat_features: + - javascript.builtins.Infinity + - javascript.builtins.NaN + - javascript.builtins.isNaN - javascript.builtins.Number - javascript.builtins.Number.EPSILON - javascript.builtins.Number.MAX_SAFE_INTEGER @@ -20,6 +23,7 @@ compat_features: - javascript.builtins.Number.isSafeInteger - javascript.builtins.Number.parseFloat - javascript.builtins.Number.parseInt + - javascript.builtins.parseInt - javascript.builtins.Number.toExponential - javascript.builtins.Number.toFixed - javascript.builtins.Number.toLocaleString @@ -28,3 +32,8 @@ compat_features: - javascript.builtins.Number.toPrecision - javascript.builtins.Number.toString - javascript.builtins.Number.valueOf + - javascript.grammar.binary_numeric_literals + - javascript.grammar.decimal_numeric_literals + - javascript.grammar.hexadecimal_numeric_literals + - javascript.grammar.numeric_separators + - javascript.grammar.octal_numeric_literals From b01b3b14e993549e873a6a70d0209bbce15c937b Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Tue, 13 Aug 2024 10:47:50 -0400 Subject: [PATCH 3/6] Sort & re-dist --- features/number.yml | 14 +++++++------- features/number.yml.dist | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/features/number.yml b/features/number.yml index 22360efbf4b..9c31c0eee0b 100644 --- a/features/number.yml +++ b/features/number.yml @@ -5,10 +5,14 @@ status: compute_from: javascript.builtins.Number compat_features: - javascript.builtins.Infinity - - javascript.builtins.NaN - javascript.builtins.isNaN + - javascript.builtins.NaN - javascript.builtins.Number - javascript.builtins.Number.EPSILON + - javascript.builtins.Number.isFinite + - javascript.builtins.Number.isInteger + - javascript.builtins.Number.isNaN + - javascript.builtins.Number.isSafeInteger - javascript.builtins.Number.MAX_SAFE_INTEGER - javascript.builtins.Number.MAX_VALUE - javascript.builtins.Number.MIN_SAFE_INTEGER @@ -16,14 +20,9 @@ compat_features: - javascript.builtins.Number.NaN - javascript.builtins.Number.NEGATIVE_INFINITY - javascript.builtins.Number.Number - - javascript.builtins.Number.POSITIVE_INFINITY - - javascript.builtins.Number.isFinite - - javascript.builtins.Number.isInteger - - javascript.builtins.Number.isNaN - - javascript.builtins.Number.isSafeInteger - javascript.builtins.Number.parseFloat - javascript.builtins.Number.parseInt - - javascript.builtins.parseInt + - javascript.builtins.Number.POSITIVE_INFINITY - javascript.builtins.Number.toExponential - javascript.builtins.Number.toFixed - javascript.builtins.Number.toLocaleString @@ -32,6 +31,7 @@ compat_features: - javascript.builtins.Number.toPrecision - javascript.builtins.Number.toString - javascript.builtins.Number.valueOf + - javascript.builtins.parseInt - javascript.grammar.binary_numeric_literals - javascript.grammar.decimal_numeric_literals - javascript.grammar.hexadecimal_numeric_literals diff --git a/features/number.yml.dist b/features/number.yml.dist index 4bad8d85ef4..2a6d24311a2 100644 --- a/features/number.yml.dist +++ b/features/number.yml.dist @@ -26,6 +26,8 @@ compat_features: # firefox_android: "4" # safari: "1" # safari_ios: "1" + - javascript.builtins.Infinity + - javascript.builtins.NaN - javascript.builtins.Number - javascript.builtins.Number.MAX_VALUE - javascript.builtins.Number.MIN_VALUE @@ -36,6 +38,10 @@ compat_features: - javascript.builtins.Number.toLocaleString - javascript.builtins.Number.toString - javascript.builtins.Number.valueOf + - javascript.builtins.isNaN + - javascript.builtins.parseInt + - javascript.grammar.decimal_numeric_literals + - javascript.grammar.hexadecimal_numeric_literals # baseline: high # baseline_low_date: 2015-07-29 @@ -133,6 +139,20 @@ compat_features: # safari_ios: "9" - javascript.builtins.Number.isSafeInteger + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "41" + # chrome_android: "41" + # edge: "12" + # firefox: "25" + # firefox_android: "25" + # safari: "9" + # safari_ios: "9" + - javascript.grammar.binary_numeric_literals + - javascript.grammar.octal_numeric_literals + # baseline: high # baseline_low_date: 2017-09-28 # baseline_high_date: 2020-03-28 @@ -146,3 +166,16 @@ compat_features: # safari_ios: "10" - javascript.builtins.Number.toLocaleString.locales_parameter - javascript.builtins.Number.toLocaleString.options_parameter + + # baseline: high + # baseline_low_date: 2020-07-28 + # baseline_high_date: 2023-01-28 + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "79" + # firefox: "70" + # firefox_android: "79" + # safari: "13" + # safari_ios: "13" + - javascript.grammar.numeric_separators From 473d623884bbd3465de53ecd413c0eb11134c058 Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Tue, 13 Aug 2024 11:39:16 -0400 Subject: [PATCH 4/6] Add Math & set group --- features/number.yml | 46 +++++++++++++++ features/number.yml.dist | 120 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+) diff --git a/features/number.yml b/features/number.yml index 9c31c0eee0b..3e274d2ed25 100644 --- a/features/number.yml +++ b/features/number.yml @@ -1,11 +1,57 @@ name: Number description: The number type (and `Number` object) represents floating-point numbers, such as 42 or -4.201. JavaScript numbers can also represent boundless negative and positive values as `Infinity` or not-a-number as `NaN` (as in `0 * Infinity`). spec: https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number-objects +group: primitive-types status: compute_from: javascript.builtins.Number compat_features: - javascript.builtins.Infinity - javascript.builtins.isNaN + - javascript.builtins.Math + - javascript.builtins.Math.abs + - javascript.builtins.Math.acos + - javascript.builtins.Math.acosh + - javascript.builtins.Math.asin + - javascript.builtins.Math.asinh + - javascript.builtins.Math.atan + - javascript.builtins.Math.atan2 + - javascript.builtins.Math.atanh + - javascript.builtins.Math.cbrt + - javascript.builtins.Math.ceil + - javascript.builtins.Math.clz32 + - javascript.builtins.Math.cos + - javascript.builtins.Math.cosh + - javascript.builtins.Math.E + - javascript.builtins.Math.exp + - javascript.builtins.Math.expm1 + - javascript.builtins.Math.f16round + - javascript.builtins.Math.floor + - javascript.builtins.Math.fround + - javascript.builtins.Math.hypot + - javascript.builtins.Math.imul + - javascript.builtins.Math.LN10 + - javascript.builtins.Math.LN2 + - javascript.builtins.Math.log + - javascript.builtins.Math.log10 + - javascript.builtins.Math.LOG10E + - javascript.builtins.Math.log1p + - javascript.builtins.Math.log2 + - javascript.builtins.Math.LOG2E + - javascript.builtins.Math.max + - javascript.builtins.Math.min + - javascript.builtins.Math.PI + - javascript.builtins.Math.pow + - javascript.builtins.Math.random + - javascript.builtins.Math.round + - javascript.builtins.Math.sign + - javascript.builtins.Math.sin + - javascript.builtins.Math.sinh + - javascript.builtins.Math.sqrt + - javascript.builtins.Math.SQRT1_2 + - javascript.builtins.Math.SQRT2 + - javascript.builtins.Math.tan + - javascript.builtins.Math.tanh + - javascript.builtins.Math.trunc - javascript.builtins.NaN - javascript.builtins.Number - javascript.builtins.Number.EPSILON diff --git a/features/number.yml.dist b/features/number.yml.dist index 2a6d24311a2..0f1fb00720a 100644 --- a/features/number.yml.dist +++ b/features/number.yml.dist @@ -27,6 +27,33 @@ compat_features: # safari: "1" # safari_ios: "1" - javascript.builtins.Infinity + - javascript.builtins.Math + - javascript.builtins.Math.E + - javascript.builtins.Math.LN10 + - javascript.builtins.Math.LN2 + - javascript.builtins.Math.LOG10E + - javascript.builtins.Math.LOG2E + - javascript.builtins.Math.PI + - javascript.builtins.Math.SQRT1_2 + - javascript.builtins.Math.SQRT2 + - javascript.builtins.Math.abs + - javascript.builtins.Math.acos + - javascript.builtins.Math.asin + - javascript.builtins.Math.atan + - javascript.builtins.Math.atan2 + - javascript.builtins.Math.ceil + - javascript.builtins.Math.cos + - javascript.builtins.Math.exp + - javascript.builtins.Math.floor + - javascript.builtins.Math.log + - javascript.builtins.Math.max + - javascript.builtins.Math.min + - javascript.builtins.Math.pow + - javascript.builtins.Math.random + - javascript.builtins.Math.round + - javascript.builtins.Math.sin + - javascript.builtins.Math.sqrt + - javascript.builtins.Math.tan - javascript.builtins.NaN - javascript.builtins.Number - javascript.builtins.Number.MAX_VALUE @@ -58,6 +85,82 @@ compat_features: - javascript.builtins.Number.toFixed - javascript.builtins.Number.toPrecision + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "28" + # chrome_android: "28" + # edge: "12" + # firefox: "20" + # firefox_android: "20" + # safari: "7" + # safari_ios: "7" + - javascript.builtins.Math.imul + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "38" + # chrome_android: "38" + # edge: "12" + # firefox: "25" + # firefox_android: "25" + # safari: "8" + # safari_ios: "8" + - javascript.builtins.Math.acosh + - javascript.builtins.Math.asinh + - javascript.builtins.Math.atanh + - javascript.builtins.Math.cbrt + - javascript.builtins.Math.cosh + - javascript.builtins.Math.expm1 + - javascript.builtins.Math.log10 + - javascript.builtins.Math.log1p + - javascript.builtins.Math.log2 + - javascript.builtins.Math.sinh + - javascript.builtins.Math.tanh + - javascript.builtins.Math.trunc + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "38" + # chrome_android: "38" + # edge: "12" + # firefox: "26" + # firefox_android: "26" + # safari: "8" + # safari_ios: "8" + - javascript.builtins.Math.fround + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "38" + # chrome_android: "38" + # edge: "12" + # firefox: "27" + # firefox_android: "27" + # safari: "8" + # safari_ios: "8" + - javascript.builtins.Math.hypot + + # baseline: high + # baseline_low_date: 2015-07-29 + # baseline_high_date: 2018-01-29 + # support: + # chrome: "38" + # chrome_android: "38" + # edge: "12" + # firefox: "31" + # firefox_android: "31" + # safari: "7" + # safari_ios: "7" + - javascript.builtins.Math.clz32 + # baseline: high # baseline_low_date: 2015-09-30 # baseline_high_date: 2018-03-30 @@ -139,6 +242,19 @@ compat_features: # safari_ios: "9" - javascript.builtins.Number.isSafeInteger + # baseline: high + # baseline_low_date: 2015-09-30 + # baseline_high_date: 2018-03-30 + # support: + # chrome: "38" + # chrome_android: "38" + # edge: "12" + # firefox: "25" + # firefox_android: "25" + # safari: "9" + # safari_ios: "9" + - javascript.builtins.Math.sign + # baseline: high # baseline_low_date: 2015-09-30 # baseline_high_date: 2018-03-30 @@ -179,3 +295,7 @@ compat_features: # safari: "13" # safari_ios: "13" - javascript.grammar.numeric_separators + + # baseline: false + # support: {} + - javascript.builtins.Math.f16round From c9054b441df814bfa709921e1bf153285272b395 Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Thu, 15 Aug 2024 09:13:09 -0400 Subject: [PATCH 5/6] Apply suggestions from code review Co-authored-by: Daniel D. Beck --- features/number.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/number.yml b/features/number.yml index 3e274d2ed25..d378cd99a61 100644 --- a/features/number.yml +++ b/features/number.yml @@ -1,5 +1,5 @@ -name: Number -description: The number type (and `Number` object) represents floating-point numbers, such as 42 or -4.201. JavaScript numbers can also represent boundless negative and positive values as `Infinity` or not-a-number as `NaN` (as in `0 * Infinity`). +name: Math and numbers +description: The number type (and `Number` object) represents floating-point numbers, such as 42 or -4.201, while the `Math` API contains mathematical functions and constants. JavaScript can also represent boundless negative and positive values as `Infinity` or not-a-number as `NaN` (as in `0 * Infinity`). spec: https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number-objects group: primitive-types status: From 29d7366b88939f70e66a0f900eb92d0e7e24fac5 Mon Sep 17 00:00:00 2001 From: Pete LePage Date: Thu, 15 Aug 2024 10:16:46 -0400 Subject: [PATCH 6/6] Review feedback --- features/number.yml | 5 ----- features/number.yml.dist | 32 -------------------------------- 2 files changed, 37 deletions(-) diff --git a/features/number.yml b/features/number.yml index d378cd99a61..554de88ee9a 100644 --- a/features/number.yml +++ b/features/number.yml @@ -24,7 +24,6 @@ compat_features: - javascript.builtins.Math.E - javascript.builtins.Math.exp - javascript.builtins.Math.expm1 - - javascript.builtins.Math.f16round - javascript.builtins.Math.floor - javascript.builtins.Math.fround - javascript.builtins.Math.hypot @@ -71,9 +70,6 @@ compat_features: - javascript.builtins.Number.POSITIVE_INFINITY - javascript.builtins.Number.toExponential - javascript.builtins.Number.toFixed - - javascript.builtins.Number.toLocaleString - - javascript.builtins.Number.toLocaleString.locales_parameter - - javascript.builtins.Number.toLocaleString.options_parameter - javascript.builtins.Number.toPrecision - javascript.builtins.Number.toString - javascript.builtins.Number.valueOf @@ -81,5 +77,4 @@ compat_features: - javascript.grammar.binary_numeric_literals - javascript.grammar.decimal_numeric_literals - javascript.grammar.hexadecimal_numeric_literals - - javascript.grammar.numeric_separators - javascript.grammar.octal_numeric_literals diff --git a/features/number.yml.dist b/features/number.yml.dist index 0f1fb00720a..96f8cfcbcda 100644 --- a/features/number.yml.dist +++ b/features/number.yml.dist @@ -62,7 +62,6 @@ compat_features: - javascript.builtins.Number.NaN - javascript.builtins.Number.Number - javascript.builtins.Number.POSITIVE_INFINITY - - javascript.builtins.Number.toLocaleString - javascript.builtins.Number.toString - javascript.builtins.Number.valueOf - javascript.builtins.isNaN @@ -268,34 +267,3 @@ compat_features: # safari_ios: "9" - javascript.grammar.binary_numeric_literals - javascript.grammar.octal_numeric_literals - - # baseline: high - # baseline_low_date: 2017-09-28 - # baseline_high_date: 2020-03-28 - # support: - # chrome: "24" - # chrome_android: "26" - # edge: "12" - # firefox: "29" - # firefox_android: "56" - # safari: "10" - # safari_ios: "10" - - javascript.builtins.Number.toLocaleString.locales_parameter - - javascript.builtins.Number.toLocaleString.options_parameter - - # baseline: high - # baseline_low_date: 2020-07-28 - # baseline_high_date: 2023-01-28 - # support: - # chrome: "75" - # chrome_android: "75" - # edge: "79" - # firefox: "70" - # firefox_android: "79" - # safari: "13" - # safari_ios: "13" - - javascript.grammar.numeric_separators - - # baseline: false - # support: {} - - javascript.builtins.Math.f16round