Skip to content

Commit

Permalink
fix(es/compat): Handle useDefineForClassFields: false (#7055)
Browse files Browse the repository at this point in the history
**BREAKING CHANGE:**

IMPORTANT NOTE: Users of decorators are recommended to configure `"useDefineForClassFields": false` to ensure that your code is properly transpiled.


**Related issue:**
 - Closes #6985.
  • Loading branch information
magic-akari committed Mar 12, 2023
1 parent caaf29d commit bb6dde7
Show file tree
Hide file tree
Showing 339 changed files with 5,546 additions and 2,960 deletions.
4 changes: 4 additions & 0 deletions crates/swc/src/builder.rs
Expand Up @@ -213,6 +213,10 @@ impl<'a, 'b, P: swc_ecma_visit::Fold> PassBuilder<'a, 'b, P> {
feature_flag = enable_available_feature_from_es_version(self.target);

Either::Right(chain!(
Optional::new(
compat::class_fields_use_set::class_fields_use_set(assumptions.pure_getters),
assumptions.set_public_class_fields,
),
Optional::new(
compat::es2022::es2022(
comments,
Expand Down
7 changes: 3 additions & 4 deletions crates/swc/src/config/mod.rs
Expand Up @@ -363,10 +363,10 @@ impl Options {
// variable management system based on the syntax contexts.
if syntax.typescript() {
assumptions.set_class_methods = !transform.use_define_for_class_fields.into_bool();
assumptions.set_public_class_fields =
!transform.use_define_for_class_fields.into_bool();
}

assumptions.set_public_class_fields = !transform.use_define_for_class_fields.into_bool();

program.visit_mut_with(&mut resolver(
unresolved_mark,
top_level_mark,
Expand Down Expand Up @@ -669,7 +669,6 @@ impl Options {
.into_bool(),
ts_enum_is_readonly: assumptions.ts_enum_is_readonly,
},
use_define_for_class_fields: !assumptions.set_public_class_fields,
import_export_assign_config,
..Default::default()
},
Expand Down Expand Up @@ -1478,7 +1477,7 @@ pub struct TransformConfig {
pub treat_const_enum_as_enum: BoolConfig<false>,

#[serde(default)]
pub use_define_for_class_fields: BoolConfig<false>,
pub use_define_for_class_fields: BoolConfig<true>,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, Merge)]
Expand Down
31 changes: 21 additions & 10 deletions crates/swc/tests/exec.rs
Expand Up @@ -8,7 +8,10 @@ use std::{
use anyhow::{Context, Error};
use once_cell::sync::Lazy;
use swc::{
config::{Config, JsMinifyOptions, JscConfig, ModuleConfig, Options, SourceMapsConfig},
config::{
Config, JsMinifyOptions, JscConfig, ModuleConfig, Options, SourceMapsConfig,
TransformConfig,
},
try_with_handler, BoolOrDataConfig, Compiler, HandlerOpts,
};
use swc_common::{errors::ColorConfig, SourceMap, GLOBALS};
Expand Down Expand Up @@ -113,10 +116,7 @@ fn init_helpers() -> Arc<PathBuf> {
}

fn create_matrix(entry: &Path) -> Vec<Options> {
// use_define_for_class_fields: false
// force to use [[Set]] instead of [[Define]]
// EsVersion should be lower than EsVersion::Es2022
let force_set_class_field = entry
let use_define_for_class_fields = entry
.parent()
.map(|parent| parent.join(".swcrc"))
.and_then(|path| fs::read_to_string(path).ok())
Expand All @@ -133,8 +133,8 @@ fn create_matrix(entry: &Path) -> Vec<Options> {
})
.and_then(|content| serde_json::from_value::<Config>(content).ok())
.and_then(|config| config.jsc.transform.into_inner())
.map(|c| c.use_define_for_class_fields == false.into())
.unwrap_or(false);
.map(|c| c.use_define_for_class_fields)
.unwrap_or_default();

[
EsVersion::Es2022,
Expand All @@ -148,7 +148,6 @@ fn create_matrix(entry: &Path) -> Vec<Options> {
EsVersion::Es5,
]
.into_iter()
.filter(|e| !force_set_class_field || e < &EsVersion::Es2022)
.matrix(|| {
let default_es = Syntax::Es(EsConfig {
..Default::default()
Expand Down Expand Up @@ -177,7 +176,11 @@ fn create_matrix(entry: &Path) -> Vec<Options> {
config: Config {
jsc: JscConfig {
syntax: Some(syntax),
transform: None.into(),
transform: Some(TransformConfig {
use_define_for_class_fields,
..Default::default()
})
.into(),
// true, false
external_helpers: (!external_helpers).into(),
target: Some(target),
Expand Down Expand Up @@ -307,11 +310,19 @@ fn get_expected_stdout(input: &Path) -> Result<String, Error> {
&Options {
config: Config {
jsc: JscConfig {
target: Some(EsVersion::Es2021),
target: Some(EsVersion::Es2022),
syntax: Some(Syntax::Typescript(TsConfig {
decorators: true,
..Default::default()
})),
transform: Some(TransformConfig {
use_define_for_class_fields: (!input
.to_string_lossy()
.contains("set_public_class_fields"))
.into(),
..Default::default()
})
.into(),
..Default::default()
},
module: match input.extension() {
Expand Down
Expand Up @@ -12,7 +12,8 @@
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true
"decoratorMetadata": true,
"useDefineForClassFields": false
}
},
"module": {
Expand Down
4 changes: 4 additions & 0 deletions crates/swc/tests/fixture/issues-1xxx/1160/output/entry.ts
Expand Up @@ -2,6 +2,7 @@
Object.defineProperty(exports, "__esModule", {
value: true
});
const _defineProperty = require("@swc/helpers/lib/_define_property.js").default;
const _tsDecorate = require("@swc/helpers/lib/_ts_decorate.js").default;
const _tsMetadata = require("@swc/helpers/lib/_ts_metadata.js").default;
var MyEnum;
Expand All @@ -10,6 +11,9 @@ var MyEnum;
MyEnum["y"] = "yyy";
})(MyEnum || (MyEnum = {}));
class Xpto {
constructor(){
_defineProperty(this, "value", void 0);
}
}
_tsDecorate([
Decorator(),
Expand Down
5 changes: 3 additions & 2 deletions crates/swc/tests/fixture/issues-1xxx/1219/output/index.ts
@@ -1,6 +1,7 @@
import _define_property from "@swc/helpers/src/_define_property.mjs";
class Foo {
constructor(){
this.static = 5;
this.declare = 5;
_define_property(this, "static", 5);
_define_property(this, "declare", 5);
}
}
4 changes: 4 additions & 0 deletions crates/swc/tests/fixture/issues-1xxx/1278/output/index.ts
Expand Up @@ -2,6 +2,7 @@
Object.defineProperty(exports, "__esModule", {
value: true
});
const _defineProperty = require("@swc/helpers/lib/_define_property.js").default;
const _tsDecorate = require("@swc/helpers/lib/_ts_decorate.js").default;
const _tsMetadata = require("@swc/helpers/lib/_ts_metadata.js").default;
function MyDecorator(klass) {
Expand All @@ -11,6 +12,9 @@ function MyDecorator(klass) {
};
}
class MyClass {
constructor(){
_defineProperty(this, "prop", void 0);
}
}
_tsDecorate([
MyDecorator(MyClass),
Expand Down
13 changes: 9 additions & 4 deletions crates/swc/tests/fixture/issues-1xxx/1306/case1/output/index.ts
Expand Up @@ -2,6 +2,7 @@ import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _class_private_field_get from "@swc/helpers/src/_class_private_field_get.mjs";
import _class_private_field_init from "@swc/helpers/src/_class_private_field_init.mjs";
import _class_private_field_set from "@swc/helpers/src/_class_private_field_set.mjs";
import _create_class from "@swc/helpers/src/_create_class.mjs";
var _name = /*#__PURE__*/ new WeakMap();
var Animal = /*#__PURE__*/ function() {
"use strict";
Expand All @@ -13,9 +14,13 @@ var Animal = /*#__PURE__*/ function() {
});
_class_private_field_set(this, _name, name);
}
var _proto = Animal.prototype;
_proto.noise = function noise() {
return _class_private_field_get(this, _name).toUpperCase();
};
_create_class(Animal, [
{
key: "noise",
value: function noise() {
return _class_private_field_get(this, _name).toUpperCase();
}
}
]);
return Animal;
}();
Expand Up @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
const _asyncToGenerator = require("@swc/helpers/lib/_async_to_generator.js").default;
const _defineProperty = require("@swc/helpers/lib/_define_property.js").default;
class A {
foo() {
var _this = this;
Expand All @@ -23,7 +24,7 @@ class A {
})();
}
constructor(){
this.val = "1";
_defineProperty(this, "val", "1");
}
}
new A().foo();
3 changes: 2 additions & 1 deletion crates/swc/tests/fixture/issues-1xxx/1345/input/.swcrc
Expand Up @@ -7,6 +7,7 @@
"dynamicImport": true
},
"transform": {
"useDefineForClassFields": false,
"legacyDecorator": true,
"decoratorMetadata": true,
"optimizer": {
Expand All @@ -18,4 +19,4 @@
}
}
}
}
}
3 changes: 2 additions & 1 deletion crates/swc/tests/fixture/issues-1xxx/1362/case1/input/.swcrc
Expand Up @@ -6,6 +6,7 @@
"decorators": true
},
"transform": {
"useDefineForClassFields": false,
"legacyDecorator": true,
"decoratorMetadata": true
},
Expand All @@ -14,4 +15,4 @@
"module": {
"type": "commonjs"
}
}
}
3 changes: 2 additions & 1 deletion crates/swc/tests/fixture/issues-1xxx/1421/case1/input/.swcrc
Expand Up @@ -7,11 +7,12 @@
"dynamicImport": false
},
"transform": {
"useDefineForClassFields": false,
"legacyDecorator": true,
"decoratorMetadata": true
}
},
"module": {
"type": "commonjs"
}
}
}
3 changes: 2 additions & 1 deletion crates/swc/tests/fixture/issues-1xxx/1456/case1/input/.swcrc
Expand Up @@ -6,6 +6,7 @@
"decorators": true
},
"transform": {
"useDefineForClassFields": false,
"legacyDecorator": true,
"decoratorMetadata": true
}
Expand All @@ -16,4 +17,4 @@
"env": {
"targets": "node 12"
}
}
}
3 changes: 2 additions & 1 deletion crates/swc/tests/fixture/issues-1xxx/1456/case2/input/.swcrc
Expand Up @@ -6,6 +6,7 @@
"decorators": true
},
"transform": {
"useDefineForClassFields": false,
"legacyDecorator": true,
"decoratorMetadata": true
}
Expand All @@ -16,4 +17,4 @@
"env": {
"targets": "node 12"
}
}
}
@@ -1,4 +1,5 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _inherits from "@swc/helpers/src/_inherits.mjs";
import _create_super from "@swc/helpers/src/_create_super.mjs";
var MyClass = function MyClass() {
Expand All @@ -16,6 +17,6 @@ export var fn = function() {
}
return _class;
}(MyClass);
_class.x = 5;
_define_property(_class, "x", 5);
return _class;
};
@@ -1,4 +1,5 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _inherits from "@swc/helpers/src/_inherits.mjs";
import _create_super from "@swc/helpers/src/_create_super.mjs";
var Component = function Component() {
Expand All @@ -20,6 +21,6 @@ var withTeamsForUser = function(_WrappedComponent) {
}
return _class;
}(Component);
_class.displayName = "x";
_define_property(_class, "displayName", "x");
return _class;
};
@@ -1,4 +1,5 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _inherits from "@swc/helpers/src/_inherits.mjs";
import _create_super from "@swc/helpers/src/_create_super.mjs";
var withTeamsForUser = function() {
Expand All @@ -12,6 +13,6 @@ var withTeamsForUser = function() {
}
return _class;
}(Component);
_class.displayName = "x";
_define_property(_class, "displayName", "x");
return _class;
};
Expand Up @@ -6,11 +6,12 @@ Object.defineProperty(exports, "ServiceError", {
enumerable: true,
get: ()=>ServiceError
});
const _defineProperty = require("@swc/helpers/lib/_define_property.js").default;
class ServiceError extends Error {
constructor(...args){
super(...args);
this.code = ServiceError.Code.badResponse;
this.name = "ServiceError.BadResponse";
_defineProperty(this, "code", ServiceError.Code.badResponse);
_defineProperty(this, "name", "ServiceError.BadResponse");
}
}
(function(ServiceError1) {
Expand All @@ -28,8 +29,8 @@ class ServiceError extends Error {
constructor(...args){
super(...args);
// Service was probably not registered, or using the wrong channel
this.code = 404;
this.name = "ServiceError.ServiceNotFound";
_defineProperty(this, "code", 404);
_defineProperty(this, "name", "ServiceError.ServiceNotFound");
}
}
ServiceError1.ServiceNotFound = ServiceNotFound;
Expand Down
13 changes: 9 additions & 4 deletions crates/swc/tests/fixture/issues-1xxx/1612/case1/output/index.ts
@@ -1,12 +1,17 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _create_class from "@swc/helpers/src/_create_class.mjs";
var Test = /*#__PURE__*/ function() {
"use strict";
function Test() {
_class_call_check(this, Test);
}
var _proto = Test.prototype;
_proto.test = function test() {
a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1);
};
_create_class(Test, [
{
key: "test",
value: function test() {
a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1).a(1);
}
}
]);
return Test;
}();
@@ -1,12 +1,13 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _ts_decorate from "@swc/helpers/src/_ts_decorate.mjs";
var _TestClass;
var TestClass = (_TestClass = function TestClass() {
"use strict";
_class_call_check(this, TestClass);
}, _TestClass.Something = "hello", _TestClass.SomeProperties = {
}, _define_property(_TestClass, "Something", "hello"), _define_property(_TestClass, "SomeProperties", {
firstProp: _TestClass.Something
}, _TestClass);
}), _TestClass);
TestClass = _ts_decorate([
someClassDecorator
], TestClass);
Expand Down

1 comment on commit bb6dde7

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: bb6dde7 Previous: 1b40689 Ratio
es/full/bugs-1 315281 ns/iter (± 14662) 296604 ns/iter (± 14529) 1.06
es/full/minify/libraries/antd 1714194692 ns/iter (± 22293870) 1593451818 ns/iter (± 26116371) 1.08
es/full/minify/libraries/d3 323524264 ns/iter (± 9436041) 305303639 ns/iter (± 4932345) 1.06
es/full/minify/libraries/echarts 1292399358 ns/iter (± 21033674) 1228399232 ns/iter (± 9055670) 1.05
es/full/minify/libraries/jquery 91638903 ns/iter (± 569968) 92354792 ns/iter (± 937296) 0.99
es/full/minify/libraries/lodash 106377340 ns/iter (± 871856) 107469386 ns/iter (± 1069180) 0.99
es/full/minify/libraries/moment 53208326 ns/iter (± 283797) 53423428 ns/iter (± 396518) 1.00
es/full/minify/libraries/react 19345059 ns/iter (± 214724) 19448157 ns/iter (± 308671) 0.99
es/full/minify/libraries/terser 258464660 ns/iter (± 4816017) 251750619 ns/iter (± 6359451) 1.03
es/full/minify/libraries/three 466113264 ns/iter (± 8484993) 447529496 ns/iter (± 8066398) 1.04
es/full/minify/libraries/typescript 3111647839 ns/iter (± 31024539) 2983032806 ns/iter (± 12690593) 1.04
es/full/minify/libraries/victory 693433480 ns/iter (± 11270344) 683388046 ns/iter (± 4469059) 1.01
es/full/minify/libraries/vue 130751582 ns/iter (± 1818109) 133700672 ns/iter (± 1988585) 0.98
es/full/codegen/es3 26330 ns/iter (± 66) 26099 ns/iter (± 78) 1.01
es/full/codegen/es5 26412 ns/iter (± 43) 26096 ns/iter (± 67) 1.01
es/full/codegen/es2015 26390 ns/iter (± 135) 26097 ns/iter (± 73) 1.01
es/full/codegen/es2016 26450 ns/iter (± 102) 26072 ns/iter (± 42) 1.01
es/full/codegen/es2017 26388 ns/iter (± 45) 26091 ns/iter (± 46) 1.01
es/full/codegen/es2018 26404 ns/iter (± 49) 26085 ns/iter (± 68) 1.01
es/full/codegen/es2019 26421 ns/iter (± 32) 26124 ns/iter (± 95) 1.01
es/full/codegen/es2020 26410 ns/iter (± 42) 26120 ns/iter (± 62) 1.01
es/full/all/es3 183860651 ns/iter (± 2305044) 172130370 ns/iter (± 3259976) 1.07
es/full/all/es5 172428245 ns/iter (± 1565648) 163547782 ns/iter (± 2464040) 1.05
es/full/all/es2015 137304078 ns/iter (± 1544626) 128966396 ns/iter (± 4110167) 1.06
es/full/all/es2016 134576836 ns/iter (± 2218062) 126444226 ns/iter (± 2326076) 1.06
es/full/all/es2017 133464120 ns/iter (± 1170931) 126467688 ns/iter (± 1488332) 1.06
es/full/all/es2018 129030947 ns/iter (± 2315202) 122406292 ns/iter (± 1603005) 1.05
es/full/all/es2019 127183522 ns/iter (± 2347428) 121730800 ns/iter (± 1620104) 1.04
es/full/all/es2020 121145263 ns/iter (± 2844788) 116944720 ns/iter (± 1244051) 1.04
es/full/parser 538583 ns/iter (± 10167) 536338 ns/iter (± 8279) 1.00
es/full/base/fixer 21946 ns/iter (± 58) 22800 ns/iter (± 56) 0.96
es/full/base/resolver_and_hygiene 83903 ns/iter (± 61) 82320 ns/iter (± 55) 1.02
serialization of ast node 126 ns/iter (± 0) 124 ns/iter (± 0) 1.02
serialization of serde 128 ns/iter (± 0) 126 ns/iter (± 0) 1.02
css/minify/libraries/bootstrap 29141525 ns/iter (± 325635) 28388803 ns/iter (± 163326) 1.03
css/visitor/compare/clone 2112440 ns/iter (± 13232) 2101409 ns/iter (± 20543) 1.01
css/visitor/compare/visit_mut_span 2296773 ns/iter (± 5505) 2344361 ns/iter (± 8496) 0.98
css/visitor/compare/visit_mut_span_panic 2352143 ns/iter (± 15518) 2388763 ns/iter (± 5009) 0.98
css/visitor/compare/fold_span 3078168 ns/iter (± 34435) 3111604 ns/iter (± 24159) 0.99
css/visitor/compare/fold_span_panic 3208712 ns/iter (± 25973) 3223335 ns/iter (± 16979) 1.00
css/lexer/bootstrap_5_1_3 5166986 ns/iter (± 5967) 5147071 ns/iter (± 9705) 1.00
css/lexer/foundation_6_7_4 4352314 ns/iter (± 2695) 4329932 ns/iter (± 50508) 1.01
css/lexer/tailwind_3_1_1 826327 ns/iter (± 1276) 821923 ns/iter (± 212) 1.01
css/parser/bootstrap_5_1_3 22199167 ns/iter (± 197964) 21911704 ns/iter (± 135080) 1.01
css/parser/foundation_6_7_4 17438292 ns/iter (± 70533) 17392512 ns/iter (± 80077) 1.00
css/parser/tailwind_3_1_1 3290929 ns/iter (± 7133) 3307071 ns/iter (± 2875) 1.00
es/codegen/colors 326284 ns/iter (± 182938) 360236 ns/iter (± 196773) 0.91
es/codegen/large 2325156 ns/iter (± 1511439) 1233825 ns/iter (± 643705) 1.88
es/codegen/with-parser/colors 47842 ns/iter (± 90) 47148 ns/iter (± 258) 1.01
es/codegen/with-parser/large 513720 ns/iter (± 2035) 515632 ns/iter (± 1078) 1.00
es/minify/libraries/antd 1515541731 ns/iter (± 19510965) 1387033700 ns/iter (± 19661204) 1.09
es/minify/libraries/d3 278783104 ns/iter (± 10904162) 266605696 ns/iter (± 6026967) 1.05
es/minify/libraries/echarts 1145045753 ns/iter (± 9735716) 1074488830 ns/iter (± 9777051) 1.07
es/minify/libraries/jquery 81112088 ns/iter (± 1218528) 80089995 ns/iter (± 1688653) 1.01
es/minify/libraries/lodash 96391289 ns/iter (± 1332617) 95657888 ns/iter (± 1948332) 1.01
es/minify/libraries/moment 47181827 ns/iter (± 913619) 45795257 ns/iter (± 369603) 1.03
es/minify/libraries/react 17126105 ns/iter (± 198083) 17236197 ns/iter (± 259717) 0.99
es/minify/libraries/terser 214437637 ns/iter (± 3726614) 215158648 ns/iter (± 2789508) 1.00
es/minify/libraries/three 372009871 ns/iter (± 2342092) 369001316 ns/iter (± 4153924) 1.01
es/minify/libraries/typescript 2681936845 ns/iter (± 15618498) 2518621542 ns/iter (± 23516957) 1.06
es/minify/libraries/victory 588047260 ns/iter (± 17892757) 565218260 ns/iter (± 10192633) 1.04
es/minify/libraries/vue 117684002 ns/iter (± 1495447) 118168505 ns/iter (± 1460389) 1.00
es/visitor/compare/clone 2330547 ns/iter (± 9614) 2335158 ns/iter (± 23820) 1.00
es/visitor/compare/visit_mut_span 2698606 ns/iter (± 8839) 2696529 ns/iter (± 14683) 1.00
es/visitor/compare/visit_mut_span_panic 2760531 ns/iter (± 7306) 2734673 ns/iter (± 6463) 1.01
es/visitor/compare/fold_span 3835107 ns/iter (± 17587) 3809596 ns/iter (± 13955) 1.01
es/visitor/compare/fold_span_panic 4003336 ns/iter (± 10614) 3948062 ns/iter (± 15158) 1.01
es/lexer/colors 15703 ns/iter (± 70) 15576 ns/iter (± 23) 1.01
es/lexer/angular 7766626 ns/iter (± 12092) 7707625 ns/iter (± 3365) 1.01
es/lexer/backbone 1000374 ns/iter (± 4138) 991084 ns/iter (± 331) 1.01
es/lexer/jquery 5598161 ns/iter (± 6594) 5540493 ns/iter (± 3217) 1.01
es/lexer/jquery mobile 8640243 ns/iter (± 13763) 8565537 ns/iter (± 5096) 1.01
es/lexer/mootools 4423811 ns/iter (± 27337) 4378133 ns/iter (± 4548) 1.01
es/lexer/underscore 839791 ns/iter (± 1101) 830528 ns/iter (± 263) 1.01
es/lexer/three 26243170 ns/iter (± 24562) 26069176 ns/iter (± 25203) 1.01
es/lexer/yui 4739335 ns/iter (± 6648) 4703205 ns/iter (± 5853) 1.01
es/parser/colors 29512 ns/iter (± 146) 29432 ns/iter (± 40) 1.00
es/parser/angular 15714560 ns/iter (± 172466) 15798436 ns/iter (± 276897) 0.99
es/parser/backbone 2229973 ns/iter (± 10790) 2204146 ns/iter (± 10523) 1.01
es/parser/jquery 12130360 ns/iter (± 93214) 12165293 ns/iter (± 176760) 1.00
es/parser/jquery mobile 19140709 ns/iter (± 330873) 19407907 ns/iter (± 228736) 0.99
es/parser/mootools 9257434 ns/iter (± 20102) 9214155 ns/iter (± 16034) 1.00
es/parser/underscore 1879287 ns/iter (± 14169) 1868265 ns/iter (± 9425) 1.01
es/parser/three 57443787 ns/iter (± 170640) 55936157 ns/iter (± 234254) 1.03
es/parser/yui 9345996 ns/iter (± 79269) 9288975 ns/iter (± 59331) 1.01
es/preset-env/usage/builtin_type 145832 ns/iter (± 35312) 140940 ns/iter (± 32875) 1.03
es/preset-env/usage/property 21058 ns/iter (± 53) 20825 ns/iter (± 73) 1.01
es/resolver/typescript 118415804 ns/iter (± 3689415) 108275737 ns/iter (± 1977334) 1.09
es/fixer/typescript 88220137 ns/iter (± 1374153) 78357578 ns/iter (± 445788) 1.13
es/hygiene/typescript 187167309 ns/iter (± 761857) 168273960 ns/iter (± 1597704) 1.11
es/resolver_with_hygiene/typescript 325252518 ns/iter (± 2612880) 304968668 ns/iter (± 1968009) 1.07
es/visitor/base-perf/module_clone 75792 ns/iter (± 1524) 77067 ns/iter (± 1640) 0.98
es/visitor/base-perf/fold_empty 86410 ns/iter (± 1511) 87012 ns/iter (± 1484) 0.99
es/visitor/base-perf/fold_noop_impl_all 88384 ns/iter (± 1771) 88466 ns/iter (± 1632) 1.00
es/visitor/base-perf/fold_noop_impl_vec 88792 ns/iter (± 1457) 87917 ns/iter (± 890) 1.01
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 53 ns/iter (± 0) 53 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 104 ns/iter (± 0) 102 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed 99 ns/iter (± 0) 96 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_contains_this 3460 ns/iter (± 72) 3458 ns/iter (± 42) 1.00
es/base/parallel/resolver/typescript 5362057858 ns/iter (± 563051662) 5365447865 ns/iter (± 367514293) 1.00
es/base/parallel/hygiene/typescript 2149184170 ns/iter (± 23442259) 1984164570 ns/iter (± 20036688) 1.08
misc/visitors/time-complexity/time 5 104 ns/iter (± 0) 104 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 343 ns/iter (± 0) 327 ns/iter (± 5) 1.05
misc/visitors/time-complexity/time 15 665 ns/iter (± 1) 655 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 20 1224 ns/iter (± 1) 1211 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 40 6200 ns/iter (± 8) 6254 ns/iter (± 2) 0.99
misc/visitors/time-complexity/time 60 15615 ns/iter (± 50) 15618 ns/iter (± 50) 1.00
es/full-target/es2016 252398 ns/iter (± 1525) 187590 ns/iter (± 491) 1.35
es/full-target/es2017 244869 ns/iter (± 539) 183188 ns/iter (± 295) 1.34
es/full-target/es2018 232867 ns/iter (± 223) 172615 ns/iter (± 819) 1.35
es2020_nullish_coalescing 91603 ns/iter (± 315) 67243 ns/iter (± 115) 1.36
es2020_optional_chaining 124405 ns/iter (± 762) 96019 ns/iter (± 155) 1.30
es2022_class_properties 147484 ns/iter (± 427) 93762 ns/iter (± 274) 1.57
es2018_object_rest_spread 95726 ns/iter (± 234) 72011 ns/iter (± 106) 1.33
es2019_optional_catch_binding 84458 ns/iter (± 199) 61667 ns/iter (± 139) 1.37
es2017_async_to_generator 85628 ns/iter (± 220) 62116 ns/iter (± 132) 1.38
es2016_exponentiation 89433 ns/iter (± 279) 65466 ns/iter (± 181) 1.37
es2015_arrow 93547 ns/iter (± 333) 69933 ns/iter (± 141) 1.34
es2015_block_scoped_fn 90875 ns/iter (± 269) 66804 ns/iter (± 212) 1.36
es2015_block_scoping 168827 ns/iter (± 537) 147623 ns/iter (± 8573) 1.14

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.