-
-
Notifications
You must be signed in to change notification settings - Fork 620
Description
Call for help
This is a call for help; we need assistance from experts who are proficient in Babel and Rust to help us achieve the fastest and most feature-complete JavaScript transformer. The contributor need to adhere to the project rules outlined at https://oxc-project.github.io/docs/contribute/rules.html.
Background
When I prototyped and created the current transformer (https://github.com/oxc-project/oxc/tree/main/crates/oxc_transformer), I was working alone and porting Babel without planning ahead. The result was a dead end - @Dunqing and I became stuck and burned out.
Fortunately, @milesj and @rzvxa showed up and offered help. After some consideration and discussion, we (@Boshen, @Dunqing, @milesj, and @rzvxa) formed a working group to tackle the transformer together.
Restart from scratch
Although we have a significant amount of code in https://github.com/oxc-project/oxc/tree/main/crates/oxc_transformer, with 320 out of 1415 tests passing (as indicated in https://github.com/oxc-project/oxc/blob/main/tasks/transform_conformance/babel.snap.md), let's proceed as if none of this code exists. This will allow us to restart with shared knowledge within the working group.
Milestone 1
The first milestone is to complete @babel/preset-react
and @babel/preset-typescript
so that tools can transform .jsx
and .ts(x)
files to the latest ECMAScript version.
Here's the plan:
- Completely discard the current transformer implementation.
- Begin anew to avoid carrying any technical debt.
- Lay out the architecture with placeholders.
- Proceed from both ends:
- One group will focus on porting all APIs (@Boshen and @Dunqing).
- Another group will work on laying out all the foundational code - AST, symbols, scope mutations, etc. See Implement Oxc transformer from the bottom up. #2704 (@rzvxa and @milesj).
- Ensure that all code is reviewed by at least two people to facilitate knowledge sharing and enable concurrent progress towards the next milestones.