### 💥 BREAKING CHANGES -c7d229btransformer: [**BREAKING**] Decode JSX entities to lone surrogates (#26712) (Dunqing) -e3c1b11ast: [**BREAKING**] Preserve lone surrogates in static property names (#27095) (Dunqing) -a0a987cast: [**BREAKING**] Preserve lone surrogates in static member names (#26677) (Dunqing) ### 🚀 Features -7bb2697minifier: Minimize array join expression (#27905) (Armano) -5d91db8ast: Generate node ID setters for enums (#27500) (camc314) -6b5057bminifier: Add de morgan optimization for void expressions (#27375) (Armano) ### 🐛 Bug Fixes -ce6a088minifier: Fold string indices by UTF-16 code unit (#27096) (Dunqing) -7c47246linter: Check module specifiers and string values that contain lone surrogates (#26717) (Dunqing) -782ab6elinter: Search string values without UTF-8 conversion (#26716) (Dunqing) -a5d8184jsdoc: Parse code spans after quotes in descriptions (#27955) (leaysgur) -bd37e78ecmascript: Look through sequence expressions in `to_primitive` (#27837) (baltasarblanco) -d92789dminifier: Drop debugger statements in unbraced bodies (#27867) (camc314) -863b359ecmascript: Correct parseFloat decimal prefix scanning (#27695) (camc314) -a2534c6minifier: Preserve lexical initializers in dead for loops (#27676) (camc314) -3543672ecmascript: Do not fold Number.isInteger / isSafeInteger of tiny non-integers to true (#27622) (Baltasar Blanco) -6987a61ecmascript: BigInt loose equality folding (unknown operands and `StringToBigInt`) (#27656) (Baltasar Blanco) -40e5644minifier: Preserve indirect access when folding into call targets (#27082) (waltu) -022306fecmascript: Do not fold `Math.cbrt` of a negative number to `NaN` (#27621) (Baltasar Blanco) ### ⚡ Performance -faa75d8transformer: Remove redundant scratch vectors (#27922) (camc314) -88b5c35minifier: Reduce code branches when evaluating roots (#27906) (Armano) -fe1d367codegen: Remove branches from loops printing arrays (#27840) (overlookmotel) -7bb6b62codegen: Reduce hashmap lookups in `print_annotation_comment` (#27845) (overlookmotel) -31ffd08codegen: Avoid unnecessary comment clone (#27843) (overlookmotel) -a6456b7codegen: Remove branch from `print_space_before_identifier` (#27842) (overlookmotel) -eeff416codegen: Simplify `print_space_before_identifier` (#27841) (overlookmotel) -5d877b8diagnostics: Speed up zero-context span lookups (#27770) (camc314) -2ab6b63packages/codegen: Remove redundant `printSpaceBeforeIdentifier` and `last` updates in `printParams` (#27652) (overlookmotel) -e533278codegen: Reduce writes in `printDecorators` (#27651) (overlookmotel) ### 📚 Documentation -29caafdcodegen: Format table in doc comment (#27839) (overlookmotel) -3de03c1packages/codegen: Correct outdated comments (#27838) (overlookmotel)
⚓ Oxc
/oʊ ɛks siː/
The Oxidation Compiler is a collection of high-performance tools for JavaScript and TypeScript written in Rust.
Oxc is part of VoidZero's vision for a unified, high-performance toolchain for JavaScript. It powers Rolldown (Vite's bundler) and enables the next generation of ultra-fast development tools that work seamlessly together.
For more information, check out our website at oxc.rs.
* Oxidation is the chemical process that creates rust
🙋 Who's using Oxc?
Rolldown and Nuxt use Oxc for parsing. Rolldown also uses Oxc for transformation and minification. Nova, swc-node, and knip use oxc_resolver for module resolution. Preact, Shopify, ByteDance, and Shopee use oxlint for linting.
🔧 Lint or Format a Codebase
🧰 Build Tooling on Top of Oxc
- Parse JavaScript and TypeScript: Parser
- Transform TypeScript, JSX, and modern JavaScript: Transformer
- Minify JavaScript for production builds: Minifier
- Resolve modules for JavaScript and TypeScript: Resolver
✍️ Contribute
Check out some of the good first issues or ask us on Discord.
See CONTRIBUTING.md for guidance, or read the complete contributing guide on our website →
If you are unable to contribute by code, you can still participate by:
- Add a GitHub Star to the project
- Join us on Discord
- Follow me on X and post about this project
📚 Other Resources
Sponsored By
📖 License
Oxc is free and open-source software licensed under the MIT License.
Thank you to namespace.so for powering our CI/CD pipelines with fast, free macOS and Linux runners.
Oxc ports or copies code from other open source projects, their licenses are listed in Third-party library licenses.