## [0.47.1] - 2025-01-19 ### Features -ee8ee55napi/parser: Add `.hasChanged()` to `MagicString` (#8586) (Boshen) -1bef911napi/parser: Add source map API (#8584) (Boshen) ### Bug Fixes -7b219a9minifier: Fix dce shadowed undefined (#8582) (Boshen) -7421a52transformer/typescript: Correctly resolve references to non-constant enum members (#8543) (branchseer) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
34 KiB
Changelog
All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog, and this project does not adhere to Semantic Versioning until v1.0.0.
[0.47.1] - 2025-01-19
Bug Fixes
7b219a9minifier: Fix dce shadowed undefined (#8582) (Boshen)
[0.47.0] - 2025-01-18
Features
4d4e805minifier: Collapse if stmt with empty consequent (#8577) (camc314)991a22fminifier: FoldArray::concatinto literal (#8442) (sapphi-red)3dc2d8bminifier: Fold string concat chaining (#8441) (sapphi-red)a4ae450minifier: Fold array concat chaining (#8440) (sapphi-red)7cc81efminifier: Fold invalid typeof comparisons (#8550) (camc314)927f43fminifier: Improve.charCodeAt(arg)when arg is valid (#8534) (Boshen)06f14d5minifier: Remove empty class static blockclass Foo { static {} }(#8525) (Boshen)1860411minifier: Remove last redundant return statement (#8523) (Boshen)
Bug Fixes
65c596dminifer: Keep idents if not in scope when minimizing array exprs (#8551) (camc314)f57aac2minifier: Incorrect folding of expr in bool ctx (#8542) (camc314)946ad76minifier:(-Infinity).toString()->'-Infinity'(#8535) (Boshen)b1d0186minifier: Do not fold!!void b(#8533) (Boshen)53adde5minifier:x['-2147483648']->x[-2147483648](#8528) (Boshen)405b73dminifier: Do not changedelete undefinedtodelete void 0(#8527) (Boshen)92e44cbminifier: Do not removeundefinedinvar x = undefined(#8526) (Boshen)209e313minifier:class C { ['-1']() {} }cannot be minifized (#8516) (Boshen)6585463minifier: Always keep the last value of sequence expression (#8490) (Boshen)
Refactor
8f57929minifier: Mergetry_compress_type_of_equal_stringintotry_minimize_binary(#8561) (sapphi-red)
Testing
e0f5d6cminifier: Update esbuild test (Boshen)629c417minifier: Port esbuild minification tests (#8497) (Boshen)
[0.46.0] - 2025-01-14
Features
8accfefminifier: Minifyvar x; void x->void 0(#8466) (Boshen)870a583minifier: Foldfalse['toString'](#8447) (Boshen)4ad695dnapi/minify: Implement napi (#8478) (Boshen)
Bug Fixes
4c6675cminifier: Do not convert while to fors in DCE (#8484) (Boshen)1d6e84dminifier: Fix incorrectnull.toString()and1n.toString()(#8464) (Boshen)25d4bf9minifier: Remove usage of empty spans (#8462) (Boshen)dd64340minifier: Keepreturn undefinedin async generator function (#8439) (Boshen)
Performance
8fc238aminifier: MergeNormalizeandRemoveSyntaxpass (#8467) (Boshen)372eb09minifier: Preallocate mangler's semantic data (#8451) (Boshen)
[0.45.0] - 2025-01-11
Features
6c7acacallocator: ImplementIntoIteratorfor&mut Vec(#8389) (overlookmotel)41ddf60minfier: AddCompressOptions::target(#8179) (Boshen)d56020bminifier: Drop0fromnew Int8Array(0)and other TypedArrays (#8431) (sapphi-red)f935d94minifier: Removenewfrom NativeErrors /AggregateError(#8430) (sapphi-red)dab7a51minifier: Minimize not!(x === undefined)->x !== undefined(#8429) (Boshen)0e7bab8minifier: Removeif(false){}in a single pass (#8421) (Boshen)5b5b844minifier: Foldambiguous if else(#8415) (Boshen)438a6e7minifier: Minimize conditions in boolean context (#8381) (Boshen)793cb43minifier:a != null ? a : b->a ?? b(#8352) (camc314)814da55minifier: Compressx = x || 1tox ||= 1(#8368) (sapphi-red)a596821minifier: Compressa.b = a.b + ctoa.b += c(#8367) (sapphi-red)579eb60minifier: Compressa.b || (a.b = c)toa.b ||= c(#8366) (sapphi-red)f367a16minifier: Port esbuild conditional expr minification (#8351) (camc314)8d52cd0minifier: Merge assign expression in conditional expression (#8345) (sapphi-red)a69d15fminifier: Compressnew Array(2)->[,,](#8344) (sapphi-red)819c475minifier: Compressnew Array(7n)->[7n](#8343) (sapphi-red)e085d66minifier: Remove empty IIFE (#8340) (Boshen)2c2e483minifier: Fold object spread({ ...null })->({})(#8339) (Boshen)6220e05minifier: Remove empty if statmentif (test) {}->test(#8336) (Boshen)a76dfaeminifier: Remove label statement with empty body (#8333) (Boshen)e88a6bdminifier: Minimize!0 + null !== 1->!0 + null != 1(#8332) (Boshen)ec88c68minifier: Compressa || (a = b)toa ||= b(#8315) (sapphi-red)e6fe84dminifier: Compressa = a + btoa += b(#8314) (sapphi-red)9ea4e31minifier: Removenewfromnew Error/new Function/new RegExp(#8313) (sapphi-red)051fbb6minifier: Minimizex["0"]-> x[0] (#8316) (Boshen)a542013minifier: Minimizedo{}while(true)->do;while(true)(#8311) (Boshen)e3ff81eminifier: Minimize(x = 1) === 1->(x = 1) == 1(#8310) (Boshen)4b68cc0minifier: Minimize emptytrystatement (#8309) (Boshen)922c514minifier: Fold.toString()(#8308) (Boshen)66a2443minifier: Minify sequence expressions (#8305) (camc314)af65c36minifier: Minimize double negated binary expressions (#8304) (camc314)76c778bminifier: Remove logical nots when arg is a delete expression (#8303) (camc314)5ed439bminifier: Minify typeof in binary expressions (#8302) (camc314)6afc590minifier: Compress typeof addition string (#8301) (camc314)ecc789fminifier: Foldif(x >> y == 0){}->if(!(x >> y)){}(#8277) (Boshen)0e3b79aminifier: FoldString()->'',Number()->false(#8274) (Boshen)c9cf593minifier: Compress property key{[1]: _}-> {1: _} (#8272) (Boshen)b92b2abminifier: FoldBigInt(1n)->1n(#8270) (Boshen)a4df387minifier: Compress loose equals undefined (#8268) (camc314)f000596minifier: Minify call expressionstoNumber(#8267) (camc314)092aeafminifier: Flatten spread args in call expressions (#8266) (camc314)04ec38dminifier: Remove unused arrow function expressions (#8262) (camc314)e446c15minifier: Improve minimizing unary not expressions (#8261) (camc314)7f19211minifier: Minimize unary expression statements (#8256) (camc314)cec63e2minifier:{}evals tof64::NaN(Boshen)4d8a08dminifier: Improve constant evaluation (#8252) (Boshen)e84f267minifier: Compress more property keys (#8253) (Boshen)d1224f9minifier: Improve minimizing conditional expressions (#8251) (camc314)65f46f5minifier: Constant foldString.fromCharCode(#8248) (Boshen)bd8d677minifier: Minimize~undefined,~null,~true,~false(#8247) (Boshen)f73dc9eminifier: Constant fold'x'.toString()andtrue.toString()(#8246) (Boshen)fd5af73minifier: MinimizeNumberconstructor (#8245) (Boshen)2f52f33minifier: Minsize!!!foo ? bar : baz->foo ? baz : bar(#8244) (Boshen)ccdc039minifier: Always put literals on the rhs of equal op1==x=>x==1(#8240) (Boshen)39353b2minifier: Improve minimizing conditionals (#8238) (Cameron)c90fc16minifier: Restore conditional minification and fix edge case (#8235) (camc314)6c8ee9fminifier: Remove last redundantreturnstatement (#8234) (Boshen)51f4792minifier: Minimizefoo ? foo : barandfoo ? bar : foo(#8229) (Boshen)6e2ec17minifier: Statement fusion switch cases; improved minimize exit poitns (#8228) (Boshen)574a242minifier: Minimize all variants oftypeof x == 'undefined'(#8227) (Boshen)2041477minifier: Foldif(x)return;y->if(!x)y(#8226) (Boshen)9c1afa4minifier: Optional catch binding when catch param is unused (#8221) (Boshen)4a29845minifier: AddConvertToDottedProperties(#8212) (Boshen)2786deaminifier: AddRemoveUnusedCode(#8210) (Boshen)cd274eeminifier: Minimize logical exprs (#8209) (Cameron)4ae15dfminifier: Imprve more conditional expr minification with boolean lit (#8208) (camc314)3202b4fminifier: Imprve conditional expr minification with boolean lit (#8207) (camc314)3b45011minifier: Handle conditional expr with boolean lit (#8206) (camc314)4c2059aminifier: Reverse negated conditional exprs (#8205) (camc314)4804933minifier: AddMinimizeExitPointsand ExploitAssigns` boilerplate (#8203) (Boshen)bf266e1minifier: Try collapse conditional to logical or expr (#8197) (Cameron)06e1780minifier: ImproveStatementFusion(#8194) (Boshen)42e211aminifier: Only constant fold numbers when result is smaller (#8092) (Boshen)d0de560minifier: ChangeNaNtof64::NAN(#8191) (Boshen)cef8eb8minifier: Changefoo?.['bar']tofoo?.bar(#8176) (翠 / green)8149e34minifier: Optional catch binding when es target >= es2019 (#8180) (Boshen)fc43ec5minifier: Foldstring.length/array.length(#8172) (sapphi-red)29dc0dcminifier: Changefoo['bar']-> foo.bar (#8169) (Boshen)3c5718dminifier: Foldtypeof foo == undefinedintofoo == undefinedwhen possible (#8160) (翠 / green)f3a36e1minifier: Foldtypeof foo != "undefined"intotypeof foo < "u"(#8159) (翠 / green)37c9959minifier: NormalizeInfinityintof64::Infinity(#8148) (Boshen)8fb71f5minifier: Minify stringPropertyKey(#8147) (Boshen)6615e1eminifier: Constant foldinstanceof(#8142) (翠 / green)2b2a373minifier: Minimizea + 'b' + 'c'->a + 'bc'(#8137) (Boshen)213364aminifier: Minimizeif (x) if (y) z->if (x && y) z(#8136) (Boshen)6b51e6dminifier: Minimizeif(foo) bar else baz->foo ? bar : baz(#8133) (Boshen)f615bfaminifier: Minimizeif (x) return; return 1->return x ? void 0 : 1(#8130) (Boshen)f0b1ee5minifier: Minimizeif(!x) foo()->x || foo()(#8122) (Boshen)f8200a8minifier: Minimizeif(foo) bar->foo && bar(#8121) (Boshen)72d9967minifier: AddNormalizeast pass (#8120) (Boshen)fef0b25minifier: Collapsevarinto for loop initializer (#8119) (Boshen)2331ea8minifier:typeof foo === 'number'=>typeof foo == 'number'(#8112) (Boshen)ad9a0a9mininifier: Minimize variants ofa instanceof b == true(#8241) (Boshen)
Bug Fixes
74572deecmascript: Incorrectto_int_32value for Infinity (#8144) (翠 / green)5c63414mangler: Keep exported symbols fortop_level: true(#7927) (翠 / green)3c93549minifier: Dce if statement should keep side effects and vars (#8433) (Boshen)52f88c0minifier: Rotate associative operators to make it more idempotent (#8424) (camc314)a80460cminifier: Correctly setself.changedwhen minimizing if stmts (#8420) (camc314)d4ca8d4minifier:!!xis not idempotent inRemoveDeadCode(#8419) (Boshen)357b61dminifier: Do not minifyObject.definePropertyin sequence expressions (#8416) (Boshen)0efc845minifier:+0nproducesTypeError(#8410) (Boshen)7ce6a7cminifier:a in bhas error throwing side effect (#8406) (Boshen)2f3a9dcminifier: Cannot transform property key#constructor(#8405) (Boshen)c0a3ddaminifier:instanceofhas error throwing side effect (#8378) (Boshen)5516f7fminifier: Do not fold object comparisons (#8375) (Boshen)cb098c7minifier: Computed property keyprototypecannot be changed (#8373) (Boshen)82ee77eminifier: Do not remove shadownedundefinedin return statement (#8371) (Boshen)f87da16minifier: Do not fold literals in-0 != +0(#8278) (Boshen)62a2644minifier: Handle arrow fn expressions correctly inis_in_boolean_context(#8260) (camc314)d2f8eaaminifier: Fix panic inpeephole_minimize_conditions(#8242) (Boshen)a698defminifier: Fix incorrect return value for(x ? true : y)(#8233) (Boshen)56b7f13minifier: Do not constant fold0 instanceof F(#8199) (Boshen)75d5f17minifier: Minify stringPropertyKey(#8177) (sapphi-red)
Documentation
aaa009dminifier: Clarify assumptions for compressor (#8404) (翠 / green)
Refactor
fb2acd8minifier: Change minimize conditionals into a loop (#8413) (Boshen)baaec60minifier: Remove the buggy??transform (#8411) (Boshen)1c4658dminifier: Change ast passes order,!in_fixed_loophappen last (#8380) (Boshen)09f0f48minifier: Remove the buggyminimize_exit_pointsimplementation (#8349) (Boshen)9a5c66aminifier: Clean up (#8346) (Boshen)98f2b1cminifier: Clean uppeephole_substitute_alternate_syntax(#8327) (Boshen)fc662b7minifier: Handle big int values later (#8324) (Boshen)d16e598minifier: Clean uppeephole_replace_known_methods(#8306) (Boshen)b8d26eaminifier: Move optional catch param to peephole_substitute_alternate_syntax (#8282) (Boshen)0845162minifier: Clean upReplaceKnownMethods(Boshen)7c7f5d7minifier: Clean uppeephole_fold_constants(Boshen)bf0fbceminifier: Improve constant fold numbers (#8239) (Boshen)62f8fbaminifier: Move all conditional minification logic to minimze_conditions (#8231) (camc314)cfb51f2minifier: Fuse ast passes (#8184) (Boshen)bf9cafeminifier: Clean uppeephole_substitute_alternate_syntaxa little bit (Boshen)75264edminifier: Clean uptry_optimize_block(#8139) (Boshen)c22062bminifier: Cleanup peephole_minimize_conditions (#8114) (Boshen)e594c39minifier: Clean uppeephole_substitute_alternate_syntax.rs(#8111) (Boshen)
Testing
3149fe0minifier: Add anonymous function test case for logical expression to logical assignment compression (#8347) (sapphi-red)91b42deminifier: Enable some passing tests (#8250) (camc314)1fa5341minifier: Port tests from ConvertToDottedPropertiesTest (#8175) (sapphi-red)
[0.44.0] - 2024-12-25
Features
5397fe9minifier: Constant foldundefined?.bar->undefined(#8075) (Boshen)1932f1eminifier: Foldfoo === undefined || foo === null(#8063) (翠 / green)
Bug Fixes
b605baaminifier: Constant fold strings with tab char (#8096) (Boshen)
Refactor
8b54d89minifier: Remove parens must happen on enter (#8060) (Boshen)7cb84f3minifier: Only minify on ast node exit (#8059) (Boshen)77d845aminifier: Fuse DCE AST passes (#8058) (Boshen)6123f5eminifier: Fold statements on exit (#8057) (Boshen)
[0.42.0] - 2024-12-18
Features
db9e93bmangler: Mangle top level variables (#7907) (翠 / green)075bd16minifier: Fold bitwise operation (#7908) (翠 / green)
Bug Fixes
4799471minfier: Bigint bitwise operation only works with bigint (#7937) (Boshen)de8a86eminifier: Incorrect minification intry_fold_left_child_op(#7949) (翠 / green)
Refactor
3858221global: Sort imports (#7883) (overlookmotel)1314c97minifier: Expose dce as an API instead of an option (#7957) (Boshen)
Styling
7fb9d47rust:cargo +nightly fmt(#7877) (Boshen)
[0.40.0] - 2024-12-10
ebc80f6ast: [BREAKING] Change 'raw' from &str to Option (#7547) (Song Gao)
Refactor
[0.39.0] - 2024-12-04
-
f2f31a8traverse: [BREAKING] Remove unsound APIs (#7514) (overlookmotel) -
b0e1c03ast: [BREAKING] AddStringLiteral::rawfield (#7393) (Boshen)
Features
97af341minifier: Minify alternated one child if block (#7231) (7086cmd)ac0d25cminifier: Minify one child if statement expression (#7230) (Ethan Goh)
Bug Fixes
896ff86minifier: Do not fold if statement block with lexical declaration (#7519) (Boshen)
Performance
c133693minifier: Fuse ast passes (#7493) (Boshen)
Refactor
63a66cfminifier: Remove unused ast pass from DCE (#7540) (Boshen)625a5baminifier: Improve ast passes (#7518) (Boshen)
Testing
9d6e14becmascript: Move tests tooxc_minifierdue to cyclic dependency withoxc_parser(#7542) (Boshen)
[0.37.0] - 2024-11-21
Features
39afb48allocator: IntroduceVec::from_array_in(#7331) (overlookmotel)
Bug Fixes
cf99be0minifier: Do not compare bigint with object (#7294) (7086cmd)
Testing
0d6a66aminifier: Fix minimize condition tests (#7222) (7086cmd)
[0.36.0] - 2024-11-09
Refactor
a297765minifier: Usemapandand_theninstead of let else (#7178) (7086cmd)
[0.35.0] - 2024-11-04
Refactor
97caae1minifier: Do not useAstBuilder::*_from_*methods (#7072) (overlookmotel)2c7ac29minifier: RemoveTri, useOption<bool>instead (#6912) (Boshen)
[0.34.0] - 2024-10-26
Features
4429754ecmascript: Constant evalnullto number (#6879) (Boshen)fd57e00ecmascript: Add abstract_relational_comparison to dce (#6846) (Boshen)8bcaf59minifier: Late peeophole optimization (#6882) (Boshen)860cbcaminifier: Implement folding simple arrow fns (#6875) (camc314)c26020eminifier: Implement folding String.prototype.replaceAll (#6871) (camc314)50744f3minifier: Implement folding String.prototype.replace (#6870) (camc314)fccf82eminifier: Implement foldingsubstringstring fns (#6869) (camc314)e6a5a1bminifier: Implement foldingcharCodeAtstring fns (#6475) (camc314)
Bug Fixes
a47c70eminifier: Fix remaining runtime bugs (#6855) (Boshen)686727fminifier: Reference read has side effect (#6851) (Boshen)c658d93minifier: Keep template literals with expressions (#6849) (Boshen)
Refactor
423d54crust: Remove the annoyingclippy::wildcard_imports(#6860) (Boshen)
[0.33.0] - 2024-10-24
Features
b4bc300minifier: Improve folding block stmts (#6793) (camc314)34fe7c0minifier: Dce meaningless labeled statements (#6688) (7086cmd)
Bug Fixes
2f6ad42codegen: Print negative bigint1n- -1ncorrectly after constant folding (#6798) (Boshen)ca79993minifier: Do not dce object literals yet (#6839) (Boshen)ec5a19bminifier: Do not remove binary expressions (#6829) (Boshen)22355f7minifier: Do not removeundefinedfor destructuring patterns (#6828) (Boshen)
Refactor
8b25131minifier: Binary operations useConstantEvaluation(#6700) (Boshen)
[0.32.0] - 2024-10-19
Features
e5ed6a5codegen: Print negative numbers (#6624) (Boshen)15c04e5ecmascript: Add feature flag for constant evaluation (Boshen)e561880ecmascript: Add constant_evaluation and side_effects code (#6550) (Boshen)3556062ecmascript: AddConstantEvaluation(#6549) (Boshen)39c2e66ecmascript: AddToBigIntandStringToBigInt(#6508) (Boshen)6f22538ecmascript: AddToBoolean,ToNumber,ToString(#6502) (Boshen)071e564minifier: Finish implementing folding object expressions (#6586) (camc314)590925aminifier: Finish implementing folding array expressions (#6575) (camc314)ef237cfminifier: Complete implementation of statement fusion (#6566) (camc314)97c8a36minifier: Implementcollapse-variable-declarations(#6464) (dalaoshu)096e590minifier: Implement foldingcharAtstring fns (#6436) (camc314)e5a6f5dminifier: Implement converting template literals to strings (#6486) (camc314)14d0590minifier: Implement folding of simple function calls (Boolean) (#6484) (camc314)7fbc7b6minifier: Implement folding of simple function calls (String) (#6483) (camc314)a4f57a4minifier: Implement foldingindexOfandlastIndexOfstring fns (#6435) (camc314)3677ef8minifier: Dce ExpressionStatements with no side effect (#6457) (7086cmd)06ea121minifier: Fold for statement (#6450) (7086cmd)a9544aeminifier: Partially implement minification for some known string methods (#6424) (camc314)9dc4ee9minifier: Implement block stmt support forStatementFusion(#6422) (camc314)ebbf77dminifier: Implement calculations for NumberValue (#6419) (7086cmd)97ac179minifier: Arithmetic operations for infinity. (#6332) (7086cmd)13b0b0bminifier: Fold literal object constructors on window (#6379) (dalaoshu)
Bug Fixes
389d261minifier:~~operator should only work on numbers (#6598) (Boshen)16bea12minifier: Useto_js_string()instead offs64::to_string(#6597) (Boshen)a71e8a0minifier: Preserve init variable declarations when removingforstatements during DCE (#6551) (magic-akari)
Refactor
6d041fbecmascript: RemoveNumberValue(#6519) (Boshen)856cab5ecmascript: Move ToInt32 fromoxc_syntaxtooxc_ecmascript(#6471) (Boshen)f4cdc56minifier: Use constant folding unary expression fromoxc_ecmascript(#6647) (Boshen)67ad08aminifier: UnifyValueType(#6545) (Boshen)bbca743minifier: Move string methods tooxc_ecmascript(#6472) (Boshen)702c049minifier: Move compress block to dce (#6468) (7086cmd)46a38c6minifier: Remove allowclippy::unused_self(#6441) (Boshen)994b60bminifier: Use builtin get_number_value. (#6335) (7086cmd)435a89coxc: Remove uselessallocator.alloc(program)calls (#6571) (Boshen)1a90ec4rust: Backport v1.82.0 changes to main branch first (#6690) (Boshen)
Testing
c5deb32minifier: Port the rest of tests (#6420) (7086cmd)e59da61minifier: Add all test cases forcollapse_variable_declarations(#6421) (dalaoshu)73d6a4aminifier: Port all replace_known_methods tests. (#6418) (7086cmd)
[0.31.0] - 2024-10-08
-
020bb80codegen: [BREAKING] Change toCodegenReturn::codeandCodegenReturn::map(#6310) (Boshen) -
82ab689transformer,minifier: [BREAKING] Move define and inject plugin from minifier to transformer (#6199) (Boshen)
Features
e304e8cminifier: Minify exponential arithmetic operation. (#6281) (7086cmd)f9ae70cminifier: Minify basic arithmetic calculations. (#6280) (7086cmd)4008afeminifier: Fold array and object constructors (#6257) (camchenry)115ccc9minifier: Bitwise not in exceeded value. (#6235) (7086cmd)ee6c850minifier: Scaffold peephole replace known methods. (#6245) (7086cmd)c32af57minifier: Fold demical bitwise not for bigint. (#6233) (7086cmd)23b6464minifier: Fold true / false comparison. (#6225) (7086cmd)585ccdaminifier: Support subtraction assignment. (#6214) (7086cmd)cca0034minifier: Handle positiveNaNandInfinity. (#6207) (7086cmd)dac8f09minifier: Minify unary plus negation. (#6203) (7086cmd)3b79e1bminifier: Evaluate bigint in fold constant (#6178) (Boshen)9e62396syntax_operations: Add crateoxc_ecmascript(#6202) (Boshen)
Bug Fixes
d953a6bminifier: Correct the reference link (#6283) (dalaoshu)37cbabbminifier: Should not handle the strict operation for bool comparison. (#6261) (7086cmd)e29c067minifier: Handle exceeded shifts. (#6237) (7086cmd)
Refactor
ac5a23fminifier: Use ctx.ast.vec instead of Vec::new. (#6331) (7086cmd)1cee207minifier: Some boilerplate work for PeepholeFoldConstants (#6054) (Boshen)
Testing
964d71eminifier: Add arithmetic tests for fold constants. (#6269) (7086cmd)fcb4651minifier: Enable null comparison with bigint. (#6252) (7086cmd)
[0.30.2] - 2024-09-27
Features
60c52baast: Allow passing span tovoid_0method (#6065) (Dunqing)
Bug Fixes
e0a8959minifier: Computevoid numberasundefined(#6028) (Boshen)
[0.30.1] - 2024-09-24
Features
5c323a2minifier: Loop compressor passes (#6013) (Boshen)
Refactor
0a2f687minifier: Move dce conditional expression toRemoveDeadCode(#5971) (Boshen)
[0.30.0] - 2024-09-23
Features
9076deeminifier: Implement part ofStatementFusion(#5936) (Boshen)
Bug Fixes
362c427mangler,codegen: Do not mangle top level symbols (#5965) (Boshen)
Refactor
943bd76minifier: Move tests to their src files (#5912) (Boshen)cbaeea6minifier: Clean up some tests (#5910) (Boshen)144611eminifier: Align ast pass names with closure compiler (#5908) (Boshen)
[0.29.0] - 2024-09-13
Features
953fe17ast: ProvideNONEtype for AST builder calls (#5737) (overlookmotel)e968e9fminifier: Constant fold nullish coalescing operator (#5761) (Boshen)6bc13f6minifier: AddMinimizeConditionspass (#5747) (Boshen)
Bug Fixes
8ff013aminifier: Handle dce CallExpression::callee (#5752) (Boshen)
Performance
d18c896rust: Usecow_utilsinstead (#5664) (dalaoshu)
Refactor
2890c98minifier: Add tests forremove_syntax(#5749) (Boshen)9a9d8f6minifier: Replaceself.astwithctx.ast(#5748) (Boshen)746f7b3minifier: Align code with closure compiler (#5717) (Boshen)21e2df5minifier: ReplaceVisitMutwithTraversefor inject and define plugins (#5705) (Boshen)
[0.28.0] - 2024-09-11
-
ee4fb42ast: [BREAKING] Reduce size ofWithClausebyBoxing it (#5677) (Boshen) -
4a8aec1span: [BREAKING] ChangeSourceType::jstoSourceType::cjsandSourceType::mjs(#5606) (Boshen) -
b060525semantic: [BREAKING] Removesource_typeargument fromSemanticBuilder::new(#5553) (Boshen)
Features
68c3cf5minifier: Foldvoid 1->void 0(#5670) (Boshen)c6bbf94minifier: Constant fold unary expression (#5669) (Boshen)86256eaminifier: Constant foldtypeof(#5666) (Boshen)
Bug Fixes
b8f8dd6minifier/replace_global_defines: Do not replace shadowed identifiers (#5691) (Boshen)
Performance
Refactor
067f9b5semantic: IntroduceIsGlobalReferencetrait (#5672) (Boshen)
[0.27.0] - 2024-09-06
Features
ba4b68cminifier: Remove parenthesized expression for dce (#5439) (Boshen)
[0.25.0] - 2024-08-23
-
78f135dast: [BREAKING] RemoveReferenceFlagfromIdentifierReference(#5077) (Boshen) -
c4c08a7ast: [BREAKING] RenameIdentifierReference::reference_flagsfield (#5024) (overlookmotel) -
d262a58syntax: [BREAKING] RenameReferenceFlagtoReferenceFlags(#5023) (overlookmotel) -
ce4d469codegen: [BREAKING] Remove const genericMINIFY(#5001) (Boshen)
Features
2b21be3oxc_minifier: Define plugin with postfix wildcard (#4979) (IWANABETHATGUY)
Refactor
0f64d10minifier: Remove duplicated helpermove_out_expression(#5007) (IWANABETHATGUY)b4407c4oxc,mangler:oxccrate add mangler; mangler use options API (Boshen)
[0.24.3] - 2024-08-18
Bug Fixes
46cb1c1minifier: HandleObject.definedPropert(exportsfor @babel/types/lib/index.js (#4933) (Boshen)81fd637minifier: Do not fold0 && (module.exports = {})forcjs-module-lexer(#4878) (Boshen)879a271minifier: Do not joinrequirecalls forcjs-module-lexer(#4875) (Boshen)
[0.24.2] - 2024-08-12
Performance
504ac0bminifier:InjectGlobalVariablesonly add toreplaced_dot_definesonce for each (#4803) (overlookmotel)35f2742minifier: Avoid repeatedAtomcreation inInjectGlobalVariables(#4802) (overlookmotel)
[0.24.1] - 2024-08-10
Features
c519295minifier: AddInjectGlobalVariablesplugin (@rollup/plugin-inject) (#4759) (Boshen)
[0.24.0] - 2024-08-08
Features
229a0e9minifier: Implement dot define for member expressions (#3959) (camc314)
Bug Fixes
94d3c31minifier: Avoid removing function declaration fromKeepVar(#4722) (Boshen)bf43148minifier: Do notremove_syntaxin dead_code_elimination (Boshen)bf48c7fminifier: Fixkeep_varkeeping vars from arrow functions (#4680) (Boshen)9be29afminifier: Temporarily fix shadowedundefinedvariable (#4678) (Boshen)e8b662aminifier: Various fixes to pass minifier conformance (#4667) (Boshen)
Performance
0f5e982minifier: Only visit arrow expression after droppingconsole.log(#4677) (Boshen)
Refactor
fbfd852minifier: AddNodeUtiltrait for accessing symbols on ast nodes (#4734) (Boshen)e0832f8minifier: Useoxc_traversefor AST passes (#4725) (Boshen)17602dbminifier: Move tests and files around (Boshen)3289477minifier: Clean up tests (#4724) (Boshen)e78cba6minifier: Ast passes infrastructure (#4625) (Boshen)
[0.23.1] - 2024-08-06
Features
229a0e9minifier: Implement dot define for member expressions (#3959) (camc314)
Bug Fixes
bf48c7fminifier: Fixkeep_varkeeping vars from arrow functions (#4680) (Boshen)9be29afminifier: Temporarily fix shadowedundefinedvariable (#4678) (Boshen)e8b662aminifier: Various fixes to pass minifier conformance (#4667) (Boshen)
Performance
0f5e982minifier: Only visit arrow expression after droppingconsole.log(#4677) (Boshen)
Refactor
e78cba6minifier: Ast passes infrastructure (#4625) (Boshen)
[0.23.0] - 2024-08-01
Features
a558492codegen: ImplementBinaryExpressionVisitor(#4548) (Boshen)
Bug Fixes
6a94e3fcodegen: Fixes for esbuild test cases (#4503) (Boshen)
[0.22.0] - 2024-07-23
Features
0deb027minfier: Dceif (xxx) else if (false) { REMOVE }(#4407) (Boshen)e33ec18minifier: Compresstypeof foo == "undefined"intotypeof foo > "u"(#4412) (Boshen)
Bug Fixes
267f7c4minifier: SkipObject.defineProperty(exports, ...)forcjs-module-lexer(#4409) (Boshen)
[0.21.0] - 2024-07-18
Features
83c2c62codegen: Add option for choosing quotes; remove slowchoose_quotmethod (#4219) (Boshen)5d17675mangler: Add debug mode (#4314) (Boshen)e3e663bmangler: Initialize crate and integrate into minifier (#4197) (Boshen)c818472minifier: Dce conditional expression&&or||(#4190) (Boshen)
Bug Fixes
e167ef7codegen: Print parenthesis properly (#4245) (Boshen)f144082minifier: RemoveDeadCode should visit nested expression (#4268) (underfin)
Refactor
2c7bb9fast: Pass finalScopeFlagsintovisit_function(#4283) (overlookmotel)
[0.20.0] - 2024-07-11
Features
54cd04aminifier: Implement dce with var hoisting (#4160) (Boshen)44a894aminifier: Implement return statement dce (#4155) (Boshen)
[0.19.0] - 2024-07-09
b936162ast/ast_builder: [BREAKING] Shorter allocator utility method names. (#4122) (rzvxa)
Refactor
[0.18.0] - 2024-07-09
d347aedast: [BREAKING] Generateast_builder.rs. (#3890) (rzvxa)
Features
c6c16a5minifier: Dce all conditional expressions (#4135) (Boshen)
[0.17.1] - 2024-07-06
Bug Fixes
719fb96minifier: Omit dceundefinedwhich can be a shadowed variable (#4073) (Boshen)
[0.17.0] - 2024-07-05
Features
0da9dfbminifier: Add constant folding to remove dead code (#4058) (Boshen)
Bug Fixes
aaac2d8codegen: Preserve parentheses from AST instead calculating from operator precedence (#4055) (Boshen)
Refactor
edb557cminifier: Add a folder struct for constant folding (#4057) (Boshen)
[0.16.2] - 2024-06-30
Performance
1eac3d2semantic: UseAtom<'a>forReferences (#3972) (Don Isaac)
[0.16.0] - 2024-06-26
6796891ast: [BREAKING] Rename all instances ofBigintLiteraltoBigIntLiteral. (#3898) (rzvxa)
Features
dd540c8minifier: Add skeleton for ReplaceGlobalDefines ast pass (#3803) (Boshen)f3c3970minifier: Add skeleton for RemoveDeadCode ast pass (#3802) (Boshen)
Bug Fixes
Refactor
8027b1eminifier: Change prepass to ast_passes::remove_parens (#3801) (Boshen)
[0.15.0] - 2024-06-18
-
5c38a0fcodegen: [BREAKING] New code gen API (#3740) (Boshen) -
534242acodegen: [BREAKING] RemoveCodegenOptions::enable_typescript(#3674) (Boshen)
Features
38a75e5coverage: Improve codegen (#3729) (Boshen)
Bug Fixes
8f64d99minifier: Respectjoin_vars: falseoption (#3724) (mysteryven)
[0.14.0] - 2024-06-12
Refactor
e90e6a2minifier: MakePrepassCopy(#3603) (overlookmotel)
[0.13.4] - 2024-06-07
Bug Fixes
affb2c8codegen: Print indentation before directive (#3512) (Dunqing)
[0.13.2] - 2024-06-03
Features
0cdb45aoxc_codegen: Preserve annotate comment (#3465) (IWANABETHATGUY)
[0.13.1] - 2024-05-22
Features
e2dd8acsyntax: Exportis_reserved_keywordandis_global_objectmethod (#3384) (Boshen)
[0.13.0] - 2024-05-14
Refactor
7e1fe36ast: Squash nested enums (#3115) (overlookmotel)a8af5desyntax: Move number related functions to number module (#3130) (Boshen)
[0.11.0] - 2024-03-30
Refactor
fc38783ast: Add walk_mut functions (#2776) (Ali Rezvani)d9b77d8sourcemap: Change sourcemap name to take a reference (#2779) (underfin)
[0.10.0] - 2024-03-14
Features
4f9dd98span: RemoveFrom<String>andFrom<Cow>API because they create memory leak (#2628) (Boshen)
Refactor
cbc2f5fRemove unused dependencies (#2718) (Boshen)-8001b2fMakeCompactStrimmutable (#2620) (overlookmotel)-0646bf3RenameCompactStringtoCompactStr(#2619) (overlookmotel)
[0.9.0] - 2024-03-05
Refactor
ef932a3codegen: Clean up API around building sourcemaps (#2602) (Boshen)903f17cspan: Move base54 method to mangler (#2523) (Boshen)
[0.8.0] - 2024-02-26
Features
6b3b260Codegen: Improve codegen (#2460) (Andrew McClenaghan)e6d536ccodegen: Configurable typescript codegen (#2443) (Andrew McClenaghan)
Refactor
d08abc6ast: S/NumberLiteral/NumericLiteral to align with estree (Boshen)e6b391aast: S/ArrowExpression/ArrowFunctionExpression to align estree (Boshen)-a2c173dRemovepanic!from examples (#2454) (Boshen)-70a0076Remove global allocator from non-user facing apps (#2401) (Boshen)
[0.7.0] - 2024-02-09
Refactor
1822cfeast: Fix BigInt memory leak by removing it (#2293) (Boshen)
[0.6.0] - 2024-02-03
Features
1ee6d8ccodegen: Move string test to codegen (#2150) (Wenzhe Wang)18a58d4minifier: Handle more expressions for side effects (#2062) (Bradley Farias)
Bug Fixes
29dc5e6codegen: Add parenthesis in binary expression by precedence (#2067) (Wenzhe Wang)
[0.4.0] - 2023-12-08
Features
c6ad660semantic: Support scope descendents starting from a certain scope. (#1629) (Miles Johnson)
Refactor
1a576f6rust: Move to workspace lint table (#1444) (Boshen)
[0.3.0] - 2023-11-06
Features
e0ca09bcodegen: Implement the basics of non-minifying codegen (#987) (Boshen)809f050codegen: Move minifying printer to codegen crate (#985) (Boshen)ef8aaa7minifier: Re-enable mangler (#972) (Boshen)14e1dacminifier: Reenable minifier tests (#969) (Boshen)f0029d5minifier: Reenable mangler (Boshen)55b2f03minifier: Partially re-enable minifier (#963) (Boshen)5b1e1e5parser: TypeScript 5.2 (#811) (Cameron)2e2b758playground: Add transform and minify (#993) (Boshen)ce79bc1transform_conformance: Move Formatter to codegen (#986) (Boshen)678db1dtransformer: ES2020 Nullish Coalescing Operator (#1004) (Boshen)0f72066transformer: Finish 2016 exponentiation operator (#996) (Boshen)-0e91044Adjust the order of print semicolon (#1003) (Wenzhe Wang)
Refactor
4787220ast: Clean up some methods (Boshen)903854dast: Fix the lifetime annotations around Vist and VisitMut (#973) (Boshen)db5417fclippy: Allow clippy::too_many_lines (Boshen)eaeb630clippy: Allow struct_excessive_bools (Boshen)801d78aminifier: Make the minifier api only accept an ast (#990) (Boshen)110059frust: ChangeRefCell.clone().into_inner()toRefCell.get()(Boshen)
[0.2.0] - 2023-09-14
Features
027a67dminifier: Constant addition expression folding (#882) (Don Isaac)e090b56minifier: Initialize conditions folding (#658) (阿良仔)c5ff534semantic: Addnode_idtoReference(#689) (Makoto Tateno)
Refactor
3516759ast: UseatomforDirectiveandHashbang(#701) (Yunfei He)