Skip to content

fix(oxfmt): allow repeated CLI calls in the same process - #27051

Merged
leaysgur merged 6 commits into
oxc-project:mainfrom
liangmiQwQ:liang/codex/fix-oxfmt-repeated-cli
Sep 28, 2026
Merged

leaysgur merged 6 commits into
oxc-project:mainfrom
liangmiQwQ:liang/codex/fix-oxfmt-repeated-cli

Conversation

@liangmiQwQ

@liangmiQwQ liangmiQwQ commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Calling Oxfmt's runCli() more than once in the same Node.js process panics because each call tries to initialize Rayon's global thread pool.

I am working on calling Oxlint and Oxfmt directly within Vite+'s Node.js process to avoid loading the vite-plus package again in each child process. See the discussion on vite-plus#2782 for the profiling context and proposed integration.

This PR initializes the global thread pool once so subsequent CLI calls reuse it. The first call's thread count remains in effect for the lifetime of the process.

Related: #21899 addresses the corresponding initialization panics in Oxlint when calling it repeatedly in the same Node.js process.

🤖 Generated with Codex

@github-actions github-actions Bot added A-cli Area - CLI A-formatter Area - Formatter labels Sep 25, 2026
@liangmiQwQ
liangmiQwQ marked this pull request as ready for review September 25, 2026 12:47
@leaysgur
leaysgur enabled auto-merge (squash) September 28, 2026 01:37
@leaysgur
leaysgur merged commit 1f7b8ad into oxc-project:main Sep 28, 2026
30 checks passed
@leaysgur

Copy link
Copy Markdown
Member

Thanks!

I only removed the tests. Since it is a hacky approach and, like oxlint, future changes cannot be guaranteed, I think there is little point in pinning it with tests.

graphite-app Bot pushed a commit that referenced this pull request Sep 28, 2026
# Oxlint
### 🚀 Features

- 9d80eed linter/react/only-export-components: Support `allowCompoundComponents` (#27117) (Kuroda Kayn)
- e05b155 linter: Add typescript/no-generated-empty-object-type (#26958) (camc314)

### 🐛 Bug Fixes

- 42dfbb5 linter/eslint/one-var: Keep `declare` when splitting declarations (#27081) (Cheolhee Lee)
- 2ba7e33 linter/eslint/require-await: Count `await using` as an await (#27080) (Cheolhee Lee)
- 611e4ed linter/plugins: Include executing selectors in JS plugin rule timings (#27111) (overlookmotel)
- 2cac66f react-compiler: Handle recursive function expressions (#26796) (Brennan Butler)
- e996e6c react-compiler: Treat zero-argument new Date as impure (#26894) (Boshen)
- 571cfa3 oxlint: Skip type-aware lint rules in type-check-only mode (#27076) (camc314)
- d0b2462 oxlint: Skip undefined children in CFG walker (#27075) (camc314)
- 5186328 parser: Handle HTML comment values (#22933) (Boshen)
- 0b630e8 linter/typescript/unified-signatures: Align rule with upstream (#26956) (camc314)
- ebb22f1 linter/node/no-exports-assign: Change category from style to suspicious (#26555) (Bartok)
- cce28a0 linter/import/no-duplicates: Distinguish import attributes (#26936) (camc314)
- feb733b linter/unicorn/prefer-spread: Stop checking string split calls (#26935) (camc314)
- 929e154 linter/eslint/no-unused-vars: Honor ignore patterns inside array rest bindings (#26923) (camc314)
- 5bdb9b8 linter/eslint/no-unused-vars: Recognize consumed update expressions (#26782) (camc314)
- 5c05bef linter/eslint/prefer-const: Ignore embedded assignments (#26920) (camc314)

### ⚡ Performance

- ded4c29 linter/eslint/no-unused-vars: Skip sequence checks when absent (#26921) (camc314)
# Oxfmt
### 🚀 Features

- e0b1f9f oxfmt: Bump bundled Prettier version to 3.9.9 (#27002) (leaysgur)
- 342527d oxfmt: Bump bundled Prettier version to 3.9.8 (#26999) (leaysgur)

### 🐛 Bug Fixes

- eeba1db formatter: Skip test-call layout when arguments have comments (#27119) (leaysgur)
- 1f7b8ad oxfmt: Allow repeated CLI calls in the same process (#27051) (Liang)
- 7bcb807 formatter_markdown: Keep blank line between HTML and nested list (#27112) (leaysgur)
- 10b10c5 formatter: Keep comments around `=` on their side and line (#27041) (leaysgur)
- 9aad365 formatter: Keep comments deferred before an assignment operator (#26997) (waltu)
- 8fbddb1 formatter/jsdoc: More alignment with original plugin (#27039) (leaysgur)
- 50be18e formatter: Keep trailing spaces on normal block comments (#27037) (leaysgur)
- 56d1880 formatter: Nestle adjacent block comments (#27036) (leaysgur)
- 3be5d94 formatter: Treat `/***` comments as JSDoc (#27035) (leaysgur)
- cd45f71 formatter: Keep trailing double spaces on JSDoc lines (#26861) (John Costa)
- fd695f4 formatter_markdown: Fix more mismatches found in ecosystem-ci repos (#27003) (leaysgur)
- 4e77d59 formatter_markdown: Keep a math span after a kept line break from opening a block (#27001) (leaysgur)
- 584b8b0 formatter_markdown: Keep a shape line after a multi-line inline node or link title (#27000) (leaysgur)
- b939645 formatter_markdown: Keep a line break before an inline liquid tag under preserve (#26998) (leaysgur)
@liangmiQwQ
liangmiQwQ deleted the liang/codex/fix-oxfmt-repeated-cli branch September 28, 2026 12:22
Exikle pushed a commit to Exikle/Artemis-Cluster that referenced this pull request Sep 29, 2026
🔵 **minor** · oxfmt

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [oxfmt](https://oxc.rs/docs/guide/usage/formatter) ([source](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt)) | [`0.70.0` → `0.71.0`](https://renovatebot.com/diffs/npm/oxfmt/0.70.0/0.71.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/oxfmt/0.71.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxfmt/0.70.0/0.71.0?slim=true) |
| [oxfmt](https://oxc.rs/docs/guide/usage/formatter) ([source](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt)) | `0.70.0` → `0.71.0` | ![age](https://developer.mend.io/api/mc/badges/age/npm/oxfmt/0.71.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxfmt/0.70.0/0.71.0?slim=true) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxfmt)</summary>

### [`v0.71.0`](https://github.com/oxc-project/oxc/releases/tag/oxfmt_v0.71.0): oxfmt v0.71.0

[Compare Source](oxc-project/oxc@oxfmt_v0.70.0...oxfmt_v0.71.0)

##### 🚀 Features

- [`e0b1f9f`](oxc-project/oxc@e0b1f9f) oxfmt: Bump bundled Prettier version to 3.9.9 ([#&#8203;27002](oxc-project/oxc#27002)) (leaysgur)
- [`342527d`](oxc-project/oxc@342527d) oxfmt: Bump bundled Prettier version to 3.9.8 ([#&#8203;26999](oxc-project/oxc#26999)) (leaysgur)

##### 🐛 Bug Fixes

- [`eeba1db`](oxc-project/oxc@eeba1db) formatter: Skip test-call layout when arguments have comments ([#&#8203;27119](oxc-project/oxc#27119)) (leaysgur)
- [`1f7b8ad`](oxc-project/oxc@1f7b8ad) oxfmt: Allow repeated CLI calls in the same process ([#&#8203;27051](oxc-project/oxc#27051)) (Liang)
- [`7bcb807`](oxc-project/oxc@7bcb807) formatter\_markdown: Keep blank line between HTML and nested list ([#&#8203;27112](oxc-project/oxc#27112)) (leaysgur)
- [`10b10c5`](oxc-project/oxc@10b10c5) formatter: Keep comments around `=` on their side and line ([#&#8203;27041](oxc-project/oxc#27041)) (leaysgur)
- [`9aad365`](oxc-project/oxc@9aad365) formatter: Keep comments deferred before an assignment operator ([#&#8203;26997](oxc-project/oxc#26997)) (waltu)
- [`8fbddb1`](oxc-project/oxc@8fbddb1) formatter/jsdoc: More alignment with original plugin ([#&#8203;27039](oxc-project/oxc#27039)) (leaysgur)
- [`50be18e`](oxc-project/oxc@50be18e) formatter: Keep trailing spaces on normal block comments ([#&#8203;27037](oxc-project/oxc#27037)) (leaysgur)
- [`56d1880`](oxc-project/oxc@56d1880) formatter: Nestle adjacent block comments ([#&#8203;27036](oxc-project/oxc#27036)) (leaysgur)
- [`3be5d94`](oxc-project/oxc@3be5d94) formatter: Treat `/***` comments as JSDoc ([#&#8203;27035](oxc-project/oxc#27035)) (leaysgur)
- [`cd45f71`](oxc-project/oxc@cd45f71) formatter: Keep trailing double spaces on JSDoc lines ([#&#8203;26861](oxc-project/oxc#26861)) (John Costa)
- [`fd695f4`](oxc-project/oxc@fd695f4) formatter\_markdown: Fix more mismatches found in ecosystem-ci repos ([#&#8203;27003](oxc-project/oxc#27003)) (leaysgur)
- [`4e77d59`](oxc-project/oxc@4e77d59) formatter\_markdown: Keep a math span after a kept line break from opening a block ([#&#8203;27001](oxc-project/oxc#27001)) (leaysgur)
- [`584b8b0`](oxc-project/oxc@584b8b0) formatter\_markdown: Keep a shape line after a multi-line inline node or link title ([#&#8203;27000](oxc-project/oxc#27000)) (leaysgur)
- [`b939645`](oxc-project/oxc@b939645) formatter\_markdown: Keep a line break before an inline liquid tag under preserve ([#&#8203;26998](oxc-project/oxc#26998)) (leaysgur)

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTUuMTMiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMTUuMTMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.dcunha.io/Exikle/Artemis-Cluster/pulls/2446
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-cli Area - CLI A-formatter Area - Formatter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants