-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Set ascii_only for swc emit #9243
Conversation
swc_core::ecma::codegen::Config::default().with_target(swc_core::ecma::ast::EsVersion::Es5); | ||
let config = swc_core::ecma::codegen::Config::default() | ||
.with_target(swc_core::ecma::ast::EsVersion::Es5) | ||
.with_ascii_only(true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this also affect pre-existing unicode characters? E.g. does it turn '🙂'
into '\uD83D\uDE42'
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're right. So I think we shouldn't actually do this.
This leads to the question: if Chrome allows 🙂
, then why does it not allow some other unicode that is probably equally valid? (Unless it isn't valid which is what I asked about here)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What changed in 2.7 that caused this issue in the first place?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably a swc upgrade.
Input: ["\u0085", "\u200b", "\ufffe", "🙂"];
With 2.6.2: ["\x85", "\u200B", "\uFFFE", "\uD83D\uDE42"]
With 2.7.0: ["\x85", "", "�", "\uD83D\uDE42"]
With 2.9.0: ["\x85", "", "�", "\uD83D\uDE42"]
So your concern is already the case, it just doesn't happen for single-codepoint characters (or something like that)
does it turn
'🙂'
into'\uD83D\uDE42'
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So yeah, this PR would restore the behavior from 2.6.2, which is perfectly fine to me and hasn't bothered anyone since.
c5e6f5f
to
c4f1ce1
Compare
Benchmark ResultsKitchen Sink ✅
Timings
Cold Bundles
Cached Bundles
React HackerNews ✅
Timings
Cold Bundles
Cached BundlesNo bundle changes detected. AtlasKit Editor ✅
Timings
Cold Bundles
Cached BundlesNo bundle changes detected. Three.js ✅
Timings
Cold Bundles
Cached Bundles
|
Closes #8877
Don't replace unicode escape sequences with the corresponding unicode character, but leave that to the optimizer (which makes it possible to disable the replacement with a terserrc)
This was the case some time ago