oxc-project
oxc
BlogDocsChangelog

fix(parser): handle invalid surrogate pair as lossy

#9964Merged
Comparing
03-22-fix_parser_handle_invalid_surrogate_pair_as_lossy
(
eaea5fd
) with
main
(
c2f1be0
)
CodSpeed Performance Gauge
0%
Untouched
33

Benchmarks

Passed

lexer[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
+1%
21.5 µs21.3 µs
mangler[react.development.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_mangler
CodSpeed Performance Gauge
0%
292.7 µs291.3 µs
semantic[pdf.mjs]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
17.1 ms17.1 ms
codegen_sourcemap[checker.ts]
tasks/benchmark/benches/codegen.rs::codegen::bench_codegen
CodSpeed Performance Gauge
0%
65.8 ms65.7 ms
mangler[antd.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_mangler
CodSpeed Performance Gauge
0%
15.8 ms15.8 ms
transformer[antd.js]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
0%
51.7 ms51.7 ms
semantic[antd.js]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
104.9 ms104.8 ms
semantic[checker.ts]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
64.3 ms64.3 ms
lexer[pdf.mjs]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
3.9 ms3.9 ms
codegen[checker.ts]
tasks/benchmark/benches/codegen.rs::codegen::bench_codegen
CodSpeed Performance Gauge
0%
22.6 ms22.6 ms
estree[checker.ts]
tasks/benchmark/benches/parser.rs::parser::bench_estree
CodSpeed Performance Gauge
0%
96.1 ms96.1 ms
linter[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/linter.rs::linter::bench_linter
CodSpeed Performance Gauge
0%
2.7 ms2.7 ms
lexer[antd.js]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
24.8 ms24.8 ms
lexer[cal.com.tsx]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
5.9 ms5.9 ms
lexer[checker.ts]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
14.8 ms14.8 ms
minifier[typescript.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier
CodSpeed Performance Gauge
0%
290.8 ms290.8 ms
semantic[cal.com.tsx]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
26.1 ms26.1 ms
minifier[antd.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier
CodSpeed Performance Gauge
0%
165.2 ms165.2 ms
linter[cal.com.tsx]
tasks/benchmark/benches/linter.rs::linter::bench_linter
CodSpeed Performance Gauge
0%
1.2 s1.2 s
isolated-declarations[vue-id.ts]
tasks/benchmark/benches/isolated_declarations.rs::transformer::bench_isolated_declarations
CodSpeed Performance Gauge
0%
58.3 ms58.3 ms
transformer[checker.ts]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
0%
23.2 ms23.2 ms
mangler[typescript.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_mangler
CodSpeed Performance Gauge
0%
39.2 ms39.3 ms
linter[checker.ts]
tasks/benchmark/benches/linter.rs::linter::bench_linter
CodSpeed Performance Gauge
0%
2.9 s2.9 s
transformer[pdf.mjs]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
0%
11.5 ms11.5 ms
minifier[react.development.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier
CodSpeed Performance Gauge
0%
1.8 ms1.8 ms
parser[checker.ts]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
56.6 ms56.7 ms
parser[cal.com.tsx]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
30.1 ms30.1 ms
transformer[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
0%
144.6 µs145 µs
transformer[cal.com.tsx]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
0%
34 ms34.1 ms
parser[antd.js]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
113.1 ms113.5 ms
semantic[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
74.3 µs74.6 µs
parser[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
-1%
92.1 µs92.6 µs
parser[pdf.mjs]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
-1%
18.2 ms18.3 ms

Commits

Click on a commit to change the comparison range
Base
main
c2f1be0
-0.04%
fix(parser): handle invalid surrogate pair as lossy (#9964) - Closes https://github.com/oxc-project/oxc/issues/3526 It looks like invalid pair wasn't preserved properly. For example, `tasks/coverage/test262/test/built-ins/RegExp/escape/escaped-surrogates.js` has such code like this: https://playground.oxc.rs/#eNplkU1TAjEMhv8K0wsXcAEFEceDCnjUgSuX0g1LtdvsJC0fw/Df7RKWccbT0ybp+ybNSRk1UQY9hxZ6aL202qtVnI57vfbzyks87PFPXNCv0yufZa2g+YczgzsgXUAWgMNgNLgwW0frQtd6zhZQzA5VBmx0BVfkXY5EWOhUe/fNjd3WFtvlLfFBGKv+f3/BQHAveBAMBSPBo2AseBK8Ct4E74KpYCaY1xOqjkI1OSmKvgYffdAHNQkUoaOc9UFNNtpxurDBCpoMH8s1uuYWSHveIJXX4nNHVZoYqJbUzuF+ASGS/4yBbQ7z6E2wmAzleUWQanfwpQk8SzRJ1O4XiXS+OYhm0FRAak0BD3r9YRrCMrr0m/kUjNOka/mk1HRjMIcCLhOC12sHS4xkoNTVza203m5s45cWFQjdPLVeP0qrXyOn6UXwfP4FSqrNaw== input ```js const one = '\uD800'; const two = '\uD800\uD801'; // tasks/coverage/test262/test/built-ins/RegExp/escape/escaped-surrogates.js const highSurrogatesGroup1 = '\uD800\uD801\uD802\uD803\uD804\uD805\uD806\uD807\uD808\uD809\uD80A\uD80B\uD80C\uD80D\uD80E\uD80F'; ``` output ```js const one = '\uD800'; const two = "\\ud800\\ud801"; const highSurrogatesGroup1 = "\\ud800\\ud801\\ud802\\ud803\\ud804\\ud805\\ud806\\ud807\\ud808\\ud809\\ud80a\\ud80b\\ud80c\\ud80d\\ud80e\\ud80f"; ```
eaea5fd
9 months ago
by hi-ogawa
© 2025 CodSpeed Technology
Home Terms Privacy Docs