Avatar for the oxc-project user
oxc-project
oxc
BlogDocsChangelog

Performance History

Latest Results

fix(ecmascript): keep main's string method folds for UTF-8 strings
jsstr-utf16-string-folds
4 hours ago
fix(linter): search string values without UTF-8 conversion Several rules converted a string value to UTF-8 before looking for a character or prefix, so a lone surrogate anywhere in the value hid text elsewhere in it. jest/valid-title missed the surrounding spaces in " \uD800 " and the duplicate prefix in "test \uD800", and no-template-curly-in-string, no-script-url, no-regex-spaces, no-webpack-loader-syntax, node/no-sync, and jest/prefer-lowercase-title missed the text they check next to a surrogate. Add contains, starts_with, ends_with, find, and rfind on JSStr with the argument forms consumers use, &str, char, and char predicates, through a sealed JSStrPattern trait. When the value has no lone surrogate the methods delegate to str; otherwise text patterns are searched byte for byte in canonical WTF-8, which finds exactly the UTF-16 matches because a UTF-8 pattern cannot start or end inside another code point's encoding and never equals a lone surrogate's encoding. Predicates decode code points and never match a lone surrogate, since no char exists for it; the trait documents that a negated predicate therefore does not see every code point. Use these methods in the rules above and in the formatter's JSX attribute multiline checks. Where a rule still needs UTF-8, the conversion is confined to that step: prefer-lowercase-title reports without its UTF-8 fix, and no-sync and no-webpack-loader-syntax render the name with escapes in the message. A title that begins with a lone surrogate has no case, so prefer-lowercase-title accepts it. Tests compare every method and pattern form with str on UTF-8 input and with a UTF-16 reference model around lone halves and pairs formed across a boundary, and cover each rule with a surrogate beside the matched text and as the only content. Part of #26242. Implemented with AI assistance.
jsstr-search-helpers
4 hours ago
fix(linter): format jsx-key numeric keys like main
jsstr-linter-import-paths
4 hours ago
test(allocs): update allocation snapshots
jsstr-constant-value
4 hours ago

Latest Branches

CodSpeed Performance Gauge
+24%
fix(minifier): fold index access and computed keys on strings with lone surrogates#27096
5 days ago
ee09742
jsstr-utf16-string-folds
CodSpeed Performance Gauge
0%
20 days ago
0528dbf
jsstr-search-helpers
CodSpeed Performance Gauge
0%
5 days ago
9888a66
jsstr-jsx-entities
Ā© 2026 CodSpeed Technology
Home Terms Privacy Docs