mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
# Oxlint ### 🚀 Features -004647atrack_memory_allocs: Add allocation tracking for linter rules (#28470) (Cam McHenry) -419c1b0linter: Add allow and allowPattern options to react/capitalized-calls (Christian Vuerings) ### 🐛 Bug Fixes -a205cd3linter/eslint/no-control-regex: Detect raw control characters (#28548) (camc314) -7c65777linter/unicorn/prefer-global-this: Align typeof and worker API handling (#28549) (camc314) -987d5f1linter/unicorn/no-invalid-fetch-options: Avoid treating unknown methods as GET (#28547) (camc314) -e234dc8linter/unicorn/no-useless-error-capture-stack-trace: Move to suspicious category (#28545) (camc314) -b3dc411linter/typescript/no-non-null-asserted-nullish-coalescing: Move to suspicious category (#28546) (camc314) -cb64638regular_expression: Reject incomplete Unicode atom escapes (#28448) (Boshen) -c67167elinter: Only run React Compiler rules on files with top-level components or hooks (Boshen) -4c9d5aalinter: Treat Reanimated shared values as ref-like in React Compiler rules (Boshen) -61fe2aflinter/react: Ignore impure calls in async components in react/purity (Rahul Kashyap) -ed7df7dast/estree: Include comments in TS Program span (#28326) (camc314) -31cbe37linter: Make gitlab fingerprints unique per diagnostic (#28307) (camc314) ### ⚡ Performance -bb947dclinter: Skip numeric separator formatting for short integers (#28485) (Cam McHenry) -1043dfalinter: Avoid collecting prefer-const binding identifiers (#28484) (Cam McHenry) -7c93eeflinter: Reduce branches-sharing-code scratch allocations (#28483) (Cam McHenry) -c0065fdlinter: Allocate escape-case replacements only when needed (#28482) (Cam McHenry) -d837414linter: Lazily normalize capitalized-comments text (#28481) (Cam McHenry) -6baaad6linter: Avoid no-var binding identifier allocations (#28480) (Cam McHenry) -882053blinter: Skip read-only parameters in no-param-reassign (#28479) (Cam McHenry) -92deebflinter: Reduce no-unmodified-loop-condition allocations (#28478) (Cam McHenry) -f01d52dlinter: Reduce no-duplicate-case allocations (#28477) (Cam McHenry) -6a72d84linter: Reduce no-dupe-class-members allocations (#28476) (Cam McHenry) -77599eflinter: Reduce no-this-before-super allocations (#28475) (Cam McHenry) -2ea9f58linter/no-dupe-else-if: Use smallvec to reduce allocs (#28474) (Cam McHenry) -69f0204linter/react/rules-of-hooks: Reduce allocs (#28473) (Cam McHenry) -b138c20linter: Reduce allocs in no-dupe-keys (#28472) (Cam McHenry) -6f3e982linter: Avoid operator allocations in no-useless-length-check (#28471) (Cam McHenry) -fd68928react-compiler: Skip passes lint does not need (Yagiz Nizipli) -224f4ddlinter/eslint/sort-keys: Reserve initial capacity for string (#27624) (Cam McHenry) -e4e01a3linter/import/no-cycle: Compare visited modules by absolute resolved path (#27517) (Cam McHenry) -741b29blinter/import/no-cycle: Cache sorted module record snapshots (#27516) (Cam McHenry) -20022bblinter/import/no-cycle: Reuse traversal buffers between imports (#27481) (Cam McHenry) -fd5edb7linter/import/no-cycle: Reuse module records in diagnostic stack (#27480) (Cam McHenry) -73e877clinter/import/no-cycle: Don't allocate paths already seen (#27478) (Cam McHenry) -1515d53linter/react/forward-ref-uses-ref: Narrow forward-ref-uses-ref dispatch (#28367) (Cam McHenry) -ee51c01linter/react/no-string-refs: Narrow AST dispatch (#28366) (Cam McHenry) - bbfd692 linter/react/no-children-pop: Narrow AST dispatch (#28365) (Cam McHenry) -a86158blinter/unicorn/prefer-set-size: Narrow AST dispatch (#28364) (Cam McHenry) -a777fa6linter/eslint/no-iterator: Narrow member dispatch (#28363) (Cam McHenry) -bc5e94dlinter/eslint/no-extra-boolean-cast: Narrow AST dispatch (#28362) (Cam McHenry) -93c6e6dlinter/unicorn/no-useless-fallback-in-spread: Narrow AST dispatch (#28361) (Cam McHenry) -1a1f66elinter/typescript/no-this-alias: Narrow AST dispatch (#28360) (Cam McHenry) -b102a91linter/typescript/no-wrapper-object-types: Index references (#28359) (Cam McHenry) -dbd8a0blinter/eslint/no-unassigned-vars: Batch by declaration (#28358) (Cam McHenry) -1108352linter/typescript/prefer-as-const: Narrow AST dispatch (#28357) (Cam McHenry) -d65531flinter/eslint/no-const-assign: Batch by declaration (#28356) (Cam McHenry) -1ec9991linter/oxc/number-arg-out-of-range: Narrow AST dispatch (#28355) (Cam McHenry) -7a1243elinter/unicorn/no-invalid-fetch-options: Narrow AST dispatch (#28354) (Cam McHenry) -2ab73cclinter/unicorn/no-single-promise-in-promise-methods: Narrow AST dispatch (#28353) (Cam McHenry) -483c4c9linter/eslint/no-compare-neg-zero: Narrow no-compare-neg-zero dispatch (#28352) (Cam McHenry) -56c99c6linter/eslint/no-unsafe-negation: Narrow AST dispatch (#28351) (Cam McHenry) -84d974blinter/unicorn/prefer-string-starts-ends-with: Narrow AST dispatch (#28350) (Cam McHenry) -142ef4funicorn: Narrow no-await-in-promise-methods dispatch (#28349) (Cam McHenry) -a3dc7a2linter/unicorn/no-await-expression-member: Optimize AST dispatch (#28348) (Cam McHenry) -481b638linter/plugins: Create AST nodes with `Object.create` instead of `__proto__` literals (#27816) (Charles Wang) # Oxfmt ### 💥 BREAKING CHANGES -296623doxfmt: [**BREAKING**] Format `parser:html` files by `oxc_formatter_htmlish` (#28273) (Yuji Sugiura) ### 🚀 Features -336b2c1oxfmt: Support html-in-js templates closing a dynamic tag name (#28389) (Yuji Sugiura) -0a42af6formatter_htmlish: Format end tags of omitted `html`, `head` and `body` (#28388) (Yuji Sugiura) -44d8c2bformatter_htmlish: Implement HTML-ish formatter `Html` variant (#28272) (Yuji Sugiura) -36e5ddboxfmt: Add debug span for reading files (#28204) (leaysgur) ### 🐛 Bug Fixes -dbcc358formatter: Keep arrow conditional body parens before a leading `function`/`class` (#28710) (Yuji Sugiura) -fef809aformatter_htmlish: Handle XHTML (#28703) (leaysgur) -f3dd201formatter_htmlish: Keep SVG text under `xml:space="preserve"` as written (#28382) (Yuji Sugiura) -fb3aefaformatter: Keep source parens around html-in-js placeholders past comments (#28381) (Yuji Sugiura) -e738daeformatter: Quote keys added in an HTML event handler with single quotes (#28380) (Yuji Sugiura) -2e7a629oxfmt: Format HTML in a `<script>` body as an embedded part (#28379) (Yuji Sugiura) -f00862bformatter: Keep parens around a generic function type in a type assertion (#28173) (vidigoat) -9ead5c4formatter: Handle `this.b` and `super.b` like `foo.b` (#28200) (leaysgur) -72a54cfformatter: Break parens of `(a + b)[c]` like `(a + b).c` (#28199) (leaysgur) -b8f4f34formatter: Print `x.b` and `x.#b` samely (#28193) (leaysgur) -9ddccb7formatter: Keep parens for private field (#28188) (leaysgur) ### ⚡ Performance -b6f1ac9formatter_markdown: Bump parser to 0.0.4 and skip unread work (#28713) (leaysgur) -633ee96formatter_css: Use `u32` spans (#28708) (leaysgur) -f680ee1formatter_yaml: Use `multiline` flag for flow scalars (#28707) (leaysgur) -ff7c203formatter_css: Avoid repeated scans and allocations in values (#28706) (leaysgur) -7cd46cbformatter_htmlish: Search script end tags by `<` in embedded (#28704) (leaysgur) -46f8efdformatter_graphql: Print block string lines borrowed from the source (#28701) (leaysgur) -dce1485formatter_htmlish: Skip escaping attr values without the chosen quote (#28700) (leaysgur) -e9392c8formatter_core: Search line terminators with memchr (#28699) (leaysgur) -ceb26beformatter_htmlish: Use `char` to escape attr quotes (#28697) (leaysgur) -8239dacparser: Replace dragonbox_ecma with zmij_ecma (#28282) (Boshen) ### 📚 Documentation -303d9e8formatter: Strengthen `start-token-no-double-parens` rationale (#28711) (Yuji Sugiura) -a82ce83oxfmt: Update unclassified divergence (#28685) (Yuji Sugiura) -7f18c20formatter_htmlish: Note `class` and `srcset` are formatted with `embeddedLanguageFormatting: off` (#28465) (Yuji Sugiura) -01ed68aoxfmt,formatter_htmlish,formatter: Clean up behavior comments (#28384) (Yuji Sugiura) -a363c27formatter_css,formatter_yaml: Point parser citations at AGENTS.md (#28466) (Yuji Sugiura) -6586050formatter_core: Document tab width in text width policy (#28393) (leaysgur) -49fbffbformatter_core: Tighten FORMATTER_POLICY (#28206) (leaysgur)
7.6 KiB
7.6 KiB
Changelog
All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog.
[0.76.0] - 2026-11-02
💥 BREAKING CHANGES
296623doxfmt: [BREAKING] Formatparser:htmlfiles byoxc_formatter_htmlish(#28273) (Yuji Sugiura)
⚡ Performance
e9392c8formatter_core: Search line terminators with memchr (#28699) (leaysgur)
📚 Documentation
6586050formatter_core: Document tab width in text width policy (#28393) (leaysgur)49fbffbformatter_core: Tighten FORMATTER_POLICY (#28206) (leaysgur)
[0.75.0] - 2026-10-27
🐛 Bug Fixes
5f1fd3dformatter: Measure width heuristics by display width (#28098) (leaysgur)999496eformatter: Measure a short key by its display width (#28026) (vidigoat)eb1d9f9formatter_core: Count a flatlinespace infitsonly when text follows (#27987) (leaysgur)
⚡ Performance
1ed93afdata_structures: Copy short strings without a memcpy call (#27953) (leaysgur)7948f0bformatter_core: ShrinkFormatElementto 16B (#28012) (leaysgur)
📚 Documentation
db55461formatter_core: Document text width divergence (#28095) (leaysgur)
[0.74.0] - 2026-10-19
🐛 Bug Fixes
529b057formatter_core: Keep front matter verbatim when body starts with indented delimiter (#27946) (leaysgur)a64677eformatter: Print JSDoc embedded snippets with LF (#27821) (leaysgur)5b2acb0formatter_core: Report error position releative to CRLF source (#27777) (leaysgur)c78e80eformatter_core: Report parse error positions relative to the BOM-headed source (#27776) (leaysgur)d2bea21formatter: Glue comments to an opener in empty for-head slots and array holes (#27737) (leaysgur)
⚡ Performance
e5fdc9cformatter_core: Write into one element stack through a concreteFormatter(#27559) (leaysgur)1c393c0formatter_core: Skip scanning texts with nothing to rewrite (#27561) (leaysgur)1d3ef10formatter_core: Keep the embedded IR when nothing in it is rewritten (#27673) (leaysgur)
[0.73.0] - 2026-10-13
🐛 Bug Fixes
372849eformatter: Fix crash on css-in-js comment containing interpolation (#27638) (leaysgur)d730fddformatter_core: Leave blank frontmatter without dispatcher (#27359) (leaysgur)
[0.72.0] - 2026-10-05
💥 BREAKING CHANGES
e2c68b1oxfmt: [BREAKING] Formatparser:markdownfiles byoxc_formatter_markdown(#27256) (leaysgur)
🐛 Bug Fixes
dd72fbfformatter_markdown: Keep container columns as spaces underuseTabs(#27277) (leaysgur)c2de02bformatter: Decide embedded template layout from AST, not source shape (#27218) (leaysgur)36e14dfformatter: Keep comments between callee and its opener on the callee side (#27172) (leaysgur)
⚡ Performance
cea47e3formatter_core: Avoid exponentialwill_breakcheck on nested interned (#27211) (leaysgur)
[0.69.0] - 2026-09-21
🚀 Features
7717813formatter_markdown: Implement markdown formatter (#26434) (leaysgur)
📚 Documentation
e012542formatter_core: Add note for blanked front matter (#26786) (leaysgur)11ff089formatter_markdown: Follow updated DIVERGENCES policy (#26776) (leaysgur)0c16983formatter_core: Clean up FORMATTER_POLICY (#26745) (leaysgur)
[0.68.0] - 2026-09-14
🚀 Features
586f27aformatter_core: Addprefix_alignbuilder andTag::(Start|End)Prefix(#26520) (leaysgur)
🐛 Bug Fixes
dea2ba0formatter_core: Do not panic with align(0) (#26468) (leaysgur)
📚 Documentation
66fda4fformatter: Update AGENTS.md comment handling (#26551) (leaysgur)
[0.67.0] - 2026-09-07
💥 BREAKING CHANGES
2c9a947parser: [BREAKING] ReduceMAX_LENto 256 bytes belowu32::MAX(#26352) (overlookmotel)
🐛 Bug Fixes
104061bformatter: Keep JSDoc cast parens with a comment inside them (#26374) (leaysgur)172ddb6formatter_css: Keep a same-line line comment on its line (#26321) (leaysgur)534a0feformatter_css: Keep a line comment on its comma's line (#26319) (leaysgur)2028896formatter_css: Preserve comments around SCSS/Less variable values (#26276) (leaysgur)3b054deformatter_graphql: Align comment printing after open{(#26271) (leaysgur)
📚 Documentation
32084d4formatter_core: Clarify printer hard_line compression (#26312) (leaysgur)26a1fa4formatter_core: Refine FORMATTER_POLICY (#26266) (leaysgur)
[0.66.0] - 2026-08-31
📚 Documentation
181953boxfmt,formatter_core,formatter,formatter_yaml,formatter_css,formatter_graphql: ExtractDIVERGENCES.mdout fromAGENTS.md(#26121) (leaysgur)a67cb9dformatter,formatter_core: Document comment moving policy (#26075) (leaysgur)fc175b0formatter_core: Clarify idempotency test infra (#26069) (leaysgur)
[0.63.0] - 2026-08-10
🚀 Features
fd02a89oxfmt: Dispatch yaml-in-css(frontmatter) tooxc_formatter_yaml(#25336) (leaysgur)ab12665formatter_core: AddhardlineWithoutBreakParentequivalent IR (#25273) (leaysgur)
🐛 Bug Fixes
ab52a59formatter: Format xxx-in-js inside JSDoc js fence (#25414) (leaysgur)1a2c64aformatter,oxfmt: Apply effective print width for JSDoc fence (#25413) (leaysgur)2eaede9formatter_core: Unify leading-BOM handlings (#25340) (leaysgur)c29b587formatter_core: Measure decided-flat fill separator as flat during group re-measure (#25276) (leaysgur)
📚 Documentation
6eae5c9formatter,oxfmt: Record embed-layer decisions in place (#25422) (leaysgur)
[0.62.0] - 2026-08-03
🐛 Bug Fixes
f56009aoxfmt: Correct prose about comment width in fits measurement (#25054) (leaysgur)
📚 Documentation
eaa7c69formatter_core: Extract FORMATTER_POLICY (#25233) (leaysgur)
[0.61.0] - 2026-07-27
⚡ Performance
bb73b23formatter_core: Bound the thread-local scratch cache (#24793) (leaysgur)a5f7b15formatter: Stage assignment-like left hand side on the heap (#24613) (leaysgur)94de05fformatter: Accumulate JSX child-list builders on the heap (#24585) (leaysgur)7810e8aformatter_core: Share one thread-cached scratch vector across staging buffers (#24583) (leaysgur)c191f51formatter_core: Stage IR buffers on the heap to reduce arena memory (#24582) (leaysgur)
[0.59.0] - 2026-07-13
🚀 Features
a9a5cd6formatter_core: ExposeSourceText::as_str()(#24281) (leaysgur)
⚡ Performance
eeb1913formatter_core: Avoid per-callVecwork-stack in soft-line removal (#23775) (Marius Schulz)
[0.58.0] - 2026-07-06
🚀 Features
89ec3d9formatter_core: Add literal line and root indention primitives (#24051) (leaysgur)213a96bformatter_core: Add no-expand-parent for multiline text (#24050) (leaysgur)
⚡ Performance
468e1e3formatter_core: Make printer queues cursor-based (#24098) (Boshen)c59f2ferust: Return impl ExactSizeIterator from slice-backed accessors (#24144) (Boshen)c292fb2formatter: Inline fits element dispatcher (#23982) (camc314)
[0.57.0] - 2026-06-29
⚡ Performance
4ddcba0formatter_core: Add printable-ASCII fast path to TextWidth (#23913) (Lawrence Lin)
📚 Documentation
b4d0dc9oxfmt,formatter,formatter_css,formatter_core: Update AGENTS.md (#23814) (leaysgur)
[0.56.0] - 2026-06-22
💥 BREAKING CHANGES
36009ddallocator: [BREAKING]GetAllocator::allocatortake&self(#23676) (overlookmotel)
[0.54.0] - 2026-06-08
🚀 Features
27a6db8formatter_json: Implement jsonc variant (#22912) (leaysgur)
🐛 Bug Fixes
01e0871formatter,formatter_json: Handle PS/LS as line terminator (#22978) (leaysgur)
[0.53.0] - 2026-06-01
📚 Documentation
845f393oxfmt,formatter,formatter_json,formatter_core: Add/update AGENTS.md (#22873) (leaysgur)