Skip to content

Commit

Permalink
feat(es): Use minify.format.ascii_only if output.charset is not s…
Browse files Browse the repository at this point in the history
…pecified (#7258)

**Related issue:**

 - Closes #7240.
  • Loading branch information
kdy1 committed Apr 13, 2023
1 parent 8fc5273 commit 1fe5c3a
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 1 deletion.
10 changes: 9 additions & 1 deletion crates/swc/src/config/mod.rs
Expand Up @@ -577,6 +577,14 @@ impl Options {
_ => TsImportExportAssignConfig::Classic,
};

let charset = cfg.jsc.output.charset.or_else(|| {
if js_minify.as_ref()?.format.ascii_only {
Some(OutputCharset::Ascii)
} else {
None
}
});

let pass = PassBuilder::new(
cm,
handler,
Expand Down Expand Up @@ -782,7 +790,7 @@ impl Options {
comments: comments.cloned(),
preserve_comments,
emit_source_map_columns: cfg.emit_source_map_columns.into_bool(),
output: cfg.jsc.output,
output: JscOutputConfig { charset },
})
}
}
Expand Down
33 changes: 33 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7240/input/.swcrc
@@ -0,0 +1,33 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es5",
"loose": true,
"minify": {
"compress": {
"dead_code": true,
"drop_console": true,
"drop_debugger": true,
"passes": 3
},
"format": {
"asciiOnly": true
},
"mangle": {
"toplevel": false,
"keep_classnames": false,
"keep_fnames": false,
"keep_private_props": false,
"ie8": false,
"safari10": false
}
}
},
"module": {
"type": "commonjs"
},
"isModule": true
}
5 changes: 5 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7240/input/index.js
@@ -0,0 +1,5 @@
export default {
\u3131: '\u11B0',
'\u3141': '\u11B1',
['\u3142']: '\u11B2',
}
13 changes: 13 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7240/output/index.js
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: !0
}), Object.defineProperty(exports, "default", {
enumerable: !0,
get: function() {
return _default;
}
});
var _obj, _default = ((_obj = {
\u3131: "\u11B0",
\u3141: "\u11B1"
})["\u3142"] = "\u11B2", _obj);

2 comments on commit 1fe5c3a

@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: 1fe5c3a Previous: 6bd58cb Ratio
es/full/bugs-1 338671 ns/iter (± 14307) 298495 ns/iter (± 6197) 1.13
es/full/minify/libraries/antd 1733755313 ns/iter (± 47904682) 1553936772 ns/iter (± 40706121) 1.12
es/full/minify/libraries/d3 334432281 ns/iter (± 12362249) 288676021 ns/iter (± 9958047) 1.16
es/full/minify/libraries/echarts 1314661753 ns/iter (± 35838634) 1194500108 ns/iter (± 19102803) 1.10
es/full/minify/libraries/jquery 92374529 ns/iter (± 1298927) 88704592 ns/iter (± 729564) 1.04
es/full/minify/libraries/lodash 106423006 ns/iter (± 2519842) 104089351 ns/iter (± 1187075) 1.02
es/full/minify/libraries/moment 53857703 ns/iter (± 1487149) 50741725 ns/iter (± 705622) 1.06
es/full/minify/libraries/react 19746809 ns/iter (± 498362) 18836330 ns/iter (± 90885) 1.05
es/full/minify/libraries/terser 256769401 ns/iter (± 9925843) 235690545 ns/iter (± 1897047) 1.09
es/full/minify/libraries/three 453856286 ns/iter (± 14783560) 420909162 ns/iter (± 4757787) 1.08
es/full/minify/libraries/typescript 3168489979 ns/iter (± 65545387) 3049413715 ns/iter (± 44863363) 1.04
es/full/minify/libraries/victory 686193139 ns/iter (± 17480643) 638311213 ns/iter (± 9155696) 1.08
es/full/minify/libraries/vue 135403788 ns/iter (± 5726046) 126746902 ns/iter (± 710254) 1.07
es/full/codegen/es3 29109 ns/iter (± 70) 28427 ns/iter (± 261) 1.02
es/full/codegen/es5 29245 ns/iter (± 53) 28819 ns/iter (± 98) 1.01
es/full/codegen/es2015 29282 ns/iter (± 57) 28351 ns/iter (± 108) 1.03
es/full/codegen/es2016 29215 ns/iter (± 30) 28421 ns/iter (± 253) 1.03
es/full/codegen/es2017 29243 ns/iter (± 84) 28337 ns/iter (± 141) 1.03
es/full/codegen/es2018 29273 ns/iter (± 58) 28471 ns/iter (± 181) 1.03
es/full/codegen/es2019 29203 ns/iter (± 61) 28472 ns/iter (± 148) 1.03
es/full/codegen/es2020 29226 ns/iter (± 24) 28410 ns/iter (± 148) 1.03
es/full/all/es3 185801273 ns/iter (± 4468645) 182997716 ns/iter (± 4106883) 1.02
es/full/all/es5 177212010 ns/iter (± 2145548) 174773459 ns/iter (± 2469689) 1.01
es/full/all/es2015 140465152 ns/iter (± 5410542) 133079221 ns/iter (± 1960687) 1.06
es/full/all/es2016 138481777 ns/iter (± 4042947) 132679673 ns/iter (± 2082787) 1.04
es/full/all/es2017 136305669 ns/iter (± 3630349) 131105991 ns/iter (± 2801620) 1.04
es/full/all/es2018 132948075 ns/iter (± 3816310) 126475237 ns/iter (± 2032071) 1.05
es/full/all/es2019 132144798 ns/iter (± 4930714) 124593317 ns/iter (± 2132541) 1.06
es/full/all/es2020 122854443 ns/iter (± 2513115) 117603219 ns/iter (± 1808834) 1.04
es/full/parser 519738 ns/iter (± 13391) 507961 ns/iter (± 9807) 1.02
es/full/base/fixer 23027 ns/iter (± 49) 23596 ns/iter (± 126) 0.98
es/full/base/resolver_and_hygiene 87125 ns/iter (± 132) 83372 ns/iter (± 622) 1.05
serialization of serde 123 ns/iter (± 0) 123 ns/iter (± 0) 1
css/minify/libraries/bootstrap 27691551 ns/iter (± 174498) 27270465 ns/iter (± 122479) 1.02
css/visitor/compare/clone 2083170 ns/iter (± 9160) 2105204 ns/iter (± 20875) 0.99
css/visitor/compare/visit_mut_span 2317469 ns/iter (± 20742) 2251807 ns/iter (± 10560) 1.03
css/visitor/compare/visit_mut_span_panic 2343224 ns/iter (± 12235) 2313877 ns/iter (± 8611) 1.01
css/visitor/compare/fold_span 3060361 ns/iter (± 23873) 3042018 ns/iter (± 20213) 1.01
css/visitor/compare/fold_span_panic 3225742 ns/iter (± 15968) 3203322 ns/iter (± 24223) 1.01
css/lexer/bootstrap_5_1_3 5109692 ns/iter (± 6740) 5076848 ns/iter (± 57817) 1.01
css/lexer/foundation_6_7_4 4327116 ns/iter (± 1901) 4261991 ns/iter (± 15298) 1.02
css/lexer/tailwind_3_1_1 818319 ns/iter (± 269) 820540 ns/iter (± 4694) 1.00
css/parser/bootstrap_5_1_3 20989748 ns/iter (± 62202) 20745173 ns/iter (± 183296) 1.01
css/parser/foundation_6_7_4 16775507 ns/iter (± 102064) 16441736 ns/iter (± 82709) 1.02
css/parser/tailwind_3_1_1 3223522 ns/iter (± 2902) 3193023 ns/iter (± 25999) 1.01
es/codegen/colors 695658 ns/iter (± 396408) 327436 ns/iter (± 183889) 2.12
es/codegen/large 1154074 ns/iter (± 597518) 1246224 ns/iter (± 640279) 0.93
es/codegen/with-parser/colors 47440 ns/iter (± 326) 46818 ns/iter (± 543) 1.01
es/codegen/with-parser/large 513298 ns/iter (± 1493) 505439 ns/iter (± 3470) 1.02
es/minify/libraries/antd 1511226693 ns/iter (± 41759793) 1367694798 ns/iter (± 24172332) 1.10
es/minify/libraries/d3 269326228 ns/iter (± 4738403) 248170903 ns/iter (± 17177899) 1.09
es/minify/libraries/echarts 1140000410 ns/iter (± 34831546) 1045989589 ns/iter (± 10321625) 1.09
es/minify/libraries/jquery 82690548 ns/iter (± 1697801) 78594653 ns/iter (± 1088018) 1.05
es/minify/libraries/lodash 97725066 ns/iter (± 2374026) 93082513 ns/iter (± 1191939) 1.05
es/minify/libraries/moment 46343190 ns/iter (± 485134) 44850062 ns/iter (± 500669) 1.03
es/minify/libraries/react 17626524 ns/iter (± 489528) 16829499 ns/iter (± 155628) 1.05
es/minify/libraries/terser 216186100 ns/iter (± 8088019) 203349553 ns/iter (± 3904025) 1.06
es/minify/libraries/three 380710615 ns/iter (± 10298955) 342503489 ns/iter (± 5091475) 1.11
es/minify/libraries/typescript 2654699002 ns/iter (± 30323680) 2536048328 ns/iter (± 20842462) 1.05
es/minify/libraries/victory 591010248 ns/iter (± 22097596) 540529518 ns/iter (± 16293101) 1.09
es/minify/libraries/vue 117676920 ns/iter (± 2277463) 115233348 ns/iter (± 2673382) 1.02
es/visitor/compare/clone 2325541 ns/iter (± 21990) 2273354 ns/iter (± 25486) 1.02
es/visitor/compare/visit_mut_span 2696155 ns/iter (± 5295) 2632143 ns/iter (± 7780) 1.02
es/visitor/compare/visit_mut_span_panic 2755602 ns/iter (± 5424) 2718382 ns/iter (± 8747) 1.01
es/visitor/compare/fold_span 3798711 ns/iter (± 8801) 3809012 ns/iter (± 25550) 1.00
es/visitor/compare/fold_span_panic 3950054 ns/iter (± 20928) 3867484 ns/iter (± 15563) 1.02
es/lexer/colors 13202 ns/iter (± 130) 13000 ns/iter (± 84) 1.02
es/lexer/angular 6358118 ns/iter (± 3818) 6250042 ns/iter (± 24219) 1.02
es/lexer/backbone 786417 ns/iter (± 304) 772904 ns/iter (± 3814) 1.02
es/lexer/jquery 4394913 ns/iter (± 2571) 4393357 ns/iter (± 22188) 1.00
es/lexer/jquery mobile 6867274 ns/iter (± 2256) 6777423 ns/iter (± 66130) 1.01
es/lexer/mootools 3456298 ns/iter (± 1268) 3393303 ns/iter (± 20374) 1.02
es/lexer/underscore 647424 ns/iter (± 342) 649048 ns/iter (± 2035) 1.00
es/lexer/three 20763870 ns/iter (± 24062) 20704362 ns/iter (± 107505) 1.00
es/lexer/yui 3851454 ns/iter (± 3012) 3836399 ns/iter (± 13972) 1.00
es/parser/colors 29129 ns/iter (± 119) 28980 ns/iter (± 199) 1.01
es/parser/angular 15136030 ns/iter (± 166596) 14718771 ns/iter (± 158858) 1.03
es/parser/backbone 2160418 ns/iter (± 11680) 2138787 ns/iter (± 15414) 1.01
es/parser/jquery 11697160 ns/iter (± 93798) 11648101 ns/iter (± 110613) 1.00
es/parser/jquery mobile 18573475 ns/iter (± 353558) 18135862 ns/iter (± 145469) 1.02
es/parser/mootools 8940155 ns/iter (± 25737) 8874988 ns/iter (± 118277) 1.01
es/parser/underscore 1819106 ns/iter (± 9400) 1801848 ns/iter (± 7075) 1.01
es/parser/three 54292974 ns/iter (± 753296) 52021002 ns/iter (± 1382751) 1.04
es/parser/yui 9056454 ns/iter (± 66661) 8944806 ns/iter (± 118757) 1.01
es/preset-env/usage/builtin_type 141717 ns/iter (± 35402) 141362 ns/iter (± 34965) 1.00
es/preset-env/usage/property 20093 ns/iter (± 117) 19726 ns/iter (± 141) 1.02
es/resolver/typescript 123106621 ns/iter (± 3350207) 116194619 ns/iter (± 1365314) 1.06
es/fixer/typescript 87920010 ns/iter (± 1066957) 84891233 ns/iter (± 2335190) 1.04
es/hygiene/typescript 188250903 ns/iter (± 2917378) 175445520 ns/iter (± 2634715) 1.07
es/resolver_with_hygiene/typescript 334292897 ns/iter (± 7510441) 313120790 ns/iter (± 7777329) 1.07
es/visitor/base-perf/module_clone 80851 ns/iter (± 506) 80394 ns/iter (± 637) 1.01
es/visitor/base-perf/fold_empty 90451 ns/iter (± 299) 89311 ns/iter (± 563) 1.01
es/visitor/base-perf/fold_noop_impl_all 90714 ns/iter (± 377) 89198 ns/iter (± 466) 1.02
es/visitor/base-perf/fold_noop_impl_vec 91448 ns/iter (± 369) 89949 ns/iter (± 469) 1.02
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 42 ns/iter (± 0) 42 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 107 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 83 ns/iter (± 0) 0.94
es/visitor/base-perf/visit_contains_this 3583 ns/iter (± 90) 3395 ns/iter (± 67) 1.06
es/base/parallel/resolver/typescript 5741716044 ns/iter (± 644522659) 6424860610 ns/iter (± 533272038) 0.89
es/base/parallel/hygiene/typescript 2209599065 ns/iter (± 35026487) 2164716380 ns/iter (± 23090290) 1.02
misc/visitors/time-complexity/time 5 106 ns/iter (± 0) 96 ns/iter (± 0) 1.10
misc/visitors/time-complexity/time 10 344 ns/iter (± 1) 325 ns/iter (± 2) 1.06
misc/visitors/time-complexity/time 15 672 ns/iter (± 0) 660 ns/iter (± 31) 1.02
misc/visitors/time-complexity/time 20 1265 ns/iter (± 5) 1265 ns/iter (± 50) 1
misc/visitors/time-complexity/time 40 6271 ns/iter (± 23) 6494 ns/iter (± 43) 0.97
misc/visitors/time-complexity/time 60 15603 ns/iter (± 36) 16730 ns/iter (± 130) 0.93
es/full-target/es2016 253803 ns/iter (± 753) 250266 ns/iter (± 1731) 1.01
es/full-target/es2017 246080 ns/iter (± 355) 245619 ns/iter (± 724) 1.00
es/full-target/es2018 234971 ns/iter (± 369) 234830 ns/iter (± 685) 1.00
es2020_nullish_coalescing 93378 ns/iter (± 375) 92211 ns/iter (± 890) 1.01
es2020_optional_chaining 124387 ns/iter (± 222) 124446 ns/iter (± 346) 1.00
es2022_class_properties 148801 ns/iter (± 2594) 147751 ns/iter (± 578) 1.01
es2018_object_rest_spread 96595 ns/iter (± 165) 94916 ns/iter (± 687) 1.02
es2019_optional_catch_binding 85772 ns/iter (± 163) 84337 ns/iter (± 541) 1.02
es2017_async_to_generator 86312 ns/iter (± 142) 84899 ns/iter (± 596) 1.02
es2016_exponentiation 90682 ns/iter (± 187) 89766 ns/iter (± 853) 1.01
es2015_arrow 93961 ns/iter (± 189) 92252 ns/iter (± 475) 1.02
es2015_block_scoped_fn 92501 ns/iter (± 208) 90484 ns/iter (± 332) 1.02
es2015_block_scoping 169860 ns/iter (± 169) 169086 ns/iter (± 517) 1.00

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

@github-actions
Copy link

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: 1fe5c3a Previous: 6bd58cb Ratio
es/codegen/colors 695658 ns/iter (± 396408) 327436 ns/iter (± 183889) 2.12

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

CC: @kdy1

Please sign in to comment.