mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
8ab883afaa
`@__KEY__` and `#__KEY__` are currently treated as normal comments. Codegen can drop them before a later property-mangling pass. The property may then be renamed while the annotated string keeps its old name.
This classifies the marker as a property-key annotation. Codegen keeps it next to string and no-substitution template literals when annotation comments are enabled, and the property mangler reads that classification instead of scanning source text. Final output still follows the normal comment options, so whitespace-minified or annotation-disabled output removes the marker.
## Example
Input:
```js
const object = { _field: 1 };
const key = /* #__KEY__ */ "_field";
object[key];
```
Before, an intermediate codegen pass could remove the marker:
```js
const object = { _field: 1 };
const key = "_field";
object[key];
```
After, the marker survives for the later property-mangling pass.
Verified with the affected crate suites, `just minsize`, workspace lint, docs, AST generation, and independent review. `just ready` is only blocked locally by existing Node-version and terminal-color snapshot differences.
Implemented with AI assistance (OpenAI Codex). I reviewed and understand the changes and remain responsible for this contribution under the repository AI usage policy.
Oxc Minifier
Next-generation JavaScript/TypeScript minifier achieving best-in-class compression.
Inspiration
- Closure Compiler: Advanced size optimizations
- Terser/UglifyJS: Comprehensive battle-tested transforms
- esbuild: Efficient algorithms and architecture
- SWC: Modern Rust performance
Key Features
- Maximum compression through exhaustive optimizations
- 100% correctness with comprehensive testing
- Fixed-point iteration for optimal size
- Arena allocation for performance
Current Performance
See tasks/minsize for compression benchmarks.
- Matching/beating esbuild on many libraries
- Full test262, Babel, TypeScript conformance
Usage
use oxc_minifier::{Minifier, MinifierOptions};
let options = MinifierOptions::default();
let minifier = Minifier::new(options);
let result = minifier.minify(&mut program);
Testing Infrastructure
just minsize- Track compression benchmarkscargo coverage- Conformance tests (test262, Babel, TypeScript)tasks/e2e- Real-world E2E testing
Development
just test- Run all testscargo run -p oxc_minifier --example minifier- Try the minifier
Key Dependencies
oxc_ecmascript- ECMAScript operations and constant evaluationoxc_semantic- Scope and symbol analysisoxc_mangler- Variable renaming
Documentation
- Architecture - Design and components
- Optimizations - Complete optimization catalog
- Assumptions - Code assumptions for optimization
- Correctness - Testing and validation
- Roadmap - Development plan
- Claude Guide - AI assistant reference