oxc icon indicating copy to clipboard operation
oxc copied to clipboard

This week in Oxc

Open Boshen opened this issue 8 months ago • 4 comments

This thread serves as our weekly update channel for sharing project developments with the community.

Click the subscribe button on the right for updates.

For inquiries, please find me on Discord, x, bluesky, or use the Void Zero reach out form.

Boshen avatar Apr 09 '25 08:04 Boshen

2025 Mar 31 Week 14

Oxlint v0.16.5

@camchenry reduced the binary size from 6.32 MB to 5.8 MB by removing documentation texts.

Oxlint plugin written in JS

@Boshen and @overlookmotel are researching and gathering the requirements for custom JavaScript custom plugins, tracking in https://github.com/oxc-project/oxc/issues/9905

Formatter

@Boshen and @leaysgur started a new oxc_formatter crate, where the foundation is based on Biome's formatter. @Boshen is filling in formatting implementations.

ESTree compatibility

@overlookmotel, @leaysgur and @therewillbecode are aligning our Typescript ESTree to typescript-eslint's implementation. Currently passing 75% test cases.

Note our JS ESTree is 100% compatible with acorn's output.

Better and smaller Allocator Vec implementation

@Dunqing is working on a side project to change oxc_allocator's vec implementation, the current version is an outdated std::vec version exposed by bumpalo. The next step is to reduce AST memory consumption and improve performance by replacing u64 fields with u32.

Minifier

Progress has stopped since the alpha version.

Boshen avatar Apr 09 '25 08:04 Boshen

2025 Apr 7 Week 15

Oxlint plugin written in JS

We started a discussion to gather requirements: Oxlint plugin written in JS.

@boshen and @overlookmotel will decide on the prototype and roadmap this week.

Formatter

@boshen continues to work on the formatter, passing js 61/645 (9.46%) and ts 20/573 (3.49%) in the prettier conformance suite.

Transformer

@dunqing improved Oxc's TypeScript semantic data to resolve several outstanding transform issues. PR stack: https://github.com/oxc-project/oxc/pull/10343

Language Server

@Sysix is refactoring the language server's code to enable import plugin: https://github.com/oxc-project/oxc/pull/10268

Switched the unmaintained tower-lsp crate to a a community fork tower-lsp-server: https://github.com/oxc-project/oxc/pull/10298

Boshen avatar Apr 13 '25 14:04 Boshen

2025 Apr 14 Week 16

Oxlint plugin written in JS

@Boshen and @overlookmotel started working on the initial prototype, learning and researching napi and node.js worker threads.

Formatter

@Boshen continues to work on the formatter, passing js js 61/645 (9.46%) -> 189/699 (27.04%) and ts 20/573 (3.49%) -> 110/573 (19.20%) in the prettier conformance suite.

ESTree compatibility

TypeScript estree conformance increased from 75% to 9097/10725 (84.82%). Thank you @leaysgur for reporting where the incompatibilities are.

Transformer

@Dunqing continues to fix issues reported from Rolldown.

Boshen avatar Apr 20 '25 15:04 Boshen

2025 Apr 21 Week 17

Oxlint plugin written in JS

  • Started a small prototype that interacts with napi: https://github.com/oxc-project/oxc/tree/napi
  • Concluded that we need to use ast tools to generate a more efficient ast walker, to replace https://github.com/oxc-project/oxc-walker

ESTree compatibility

TypeScript estree conformance increased from 9097/10725 (84.82%) to 6458/6493 (99.46%). All remaining issues are tracked in https://github.com/oxc-project/oxc/issues/9705#issuecomment-2829457031

Transformer

Added alignment to TypeScript's useDefineForClassFields: false. Need to set both set_public_class_fields and remove_class_fields_without_initializer to true.

See issue and PR stack

  • https://github.com/oxc-project/oxc/issues/9192
  • https://github.com/oxc-project/oxc/pull/10576

Formatter

No progress.

Parser

~5% performance improvement

  • https://github.com/oxc-project/oxc/pull/10588

Boshen avatar Apr 27 '25 11:04 Boshen

2025 Apr 28 Week 18

Oxlint plugin written in JS

No progress.

Formatter

@Boshen continues to work on the formatter, passing 189/699 (27.04%) -> 236/699 (33.76%) and ts 110/573 (19.20%) -> 143/573 (24.96%) in the prettier conformance suite.

ESTree compatibility

TypeScript estree conformance increased from 6458/6493 (99.46%) to 6478/6481 (99.95%).

Achieving ESTree compatibility is leading to a prettier plugin with oxc parser, which is almost complete and waiting to be released.

Transformer

  • https://github.com/oxc-project/oxc/pull/10759 (22% performance improvement)

Boshen avatar May 04 '25 16:05 Boshen

2025 May 5 Week 19

Parser

3% performance improvement

  • https://github.com/oxc-project/oxc/pull/10933

Oxlint 1.0

We are working towards oxlint v1.0. @camc314 and @Sysix are fixing issues for stability.

Oxlint plugin written in JS

No progress.

Formatter

No progress. @Dunqing will pick up the formatter starting from this week.

ESTree compatibility

Most works are done. We now have a working prettier plugin: https://github.com/ArnaudBarre/prettier-oxc-parser waiting for 1.0.

Boshen avatar May 12 '25 02:05 Boshen

2025 May 12 Week 20

Parser

2% performance improvement

  • https://github.com/oxc-project/oxc/pull/10884

Oxlint 1.0

@camc314 released oxlint v0.16.11, and is continuing to stabilize the linter for 1.0.

Formatter

@Dunqing started working on the formatter. js 245/699 (35.05%)-> 257/699 (36.77%) ts 157/573 (24.96%) -> 180/573 (31.41%)

ESTree compatibility

All work are done, prettier is integrating oxc parser, with a few blocking issues. PR: https://github.com/prettier/prettier/pull/17472

Resolver

knip adopted oxc-resolver, increased its weekly download count to over 1.3 million. PR: https://github.com/webpro-nl/knip/pull/1081

Boshen avatar May 18 '25 07:05 Boshen

2025 May 19 Week 21

Oxlint 1.0

Released oxlint v0.16.12, we continue to stabilize the linter for 1.0.

Parser

We intend to improve the parser by:

  • https://github.com/oxc-project/oxc/issues/11145
  • https://github.com/oxc-project/oxc/issues/11194

Formatter

@Dunqing finished printing BinaryExpression and LogicalExpression, js 257/699 (36.77%) -> 281/699 (40.20%), ts 180/573 (31.41%) -> 181/573 (31.59%).

Boshen avatar May 25 '25 07:05 Boshen

2025 May 26 Week 22

Oxlint v1.0

Final v0.17.0 release. Now in feature freeze phase until final v1.0 release.

Parser

  • https://github.com/oxc-project/oxc/issues/11334 Found a lot of performance improvements

Formatter

@Dunqing continues to work on the formatter.

estree conformance

@overlookmotel completed conformance testing and fixed problems that would block prettier adopting oxc.

Boshen avatar Jun 02 '25 04:06 Boshen

Week 23

Oxlint v1.0

Oxlint 1.0 today.

Oxlint plugin written in JS

We have a consensus on what to build, will release roadmap when it is ready.

Formatter

@Dunqing is rearchitecting the formatter

  • https://github.com/oxc-project/oxc/pull/11511

codegen

We are seeking an solution for estree codegen

  • https://github.com/oxc-project/oxc/issues/11495

Boshen avatar Jun 10 '25 06:06 Boshen

Week 24

Oxlint

Announced Oxlint 1.0 https://voidzero.dev/posts/announcing-oxlint-1-stable

Formatter

@Dunqing is working on supporting comments https://github.com/oxc-project/oxc/pull/11716

Oxlint JS Custom plugin

@camc314 started working on the prototype. First step is to pass a memory buffer created in js to Rust, for raw transfer.

Parser

@leaysgur is looking for ways to improve our ts parser error story

  • https://github.com/oxc-project/oxc/issues/11582

Boshen avatar Jun 15 '25 14:06 Boshen