https://github.com/mishoo/UglifyJS

sort by:
Revision Author Date Message Commit Date
1ca43bc v2.8.25 15 May 2017, 11:45:33 UTC
3ee1464 Merge pull request #1938 from alexlamsl/v2.8.25 15 May 2017, 11:44:44 UTC
24967b8 fix & improve coverage of `estree` (#1935) - fix `estree` conversion of getter/setter - fix non-directive literal in `to_mozilla_ast()` - revamp `test/mozilla-ast.js` - reuse `test/ufuzz.js` for code generation - use `acorn.parse()` for creating `estree` - extend `test/ufuzz.js` for `acorn` workaround - catch variable redefinition - non-trivial literal as directive - adjust options for tolerance Miscellaneous - optional semi-colon when parsing directives fixes #1914 closes #1915 15 May 2017, 10:33:43 UTC
a8c67ea fix bugs with getter/setter (#1926) - `reduce_vars` - `side_effects` - property access for object - `AST_SymbolAccessor` as key names enhance `test/ufuzz.js` - add object getter & setter - property assignment to setter - avoid infinite recursion in setter - fix & adjust assignment operators - 50% `=` - 25% `+=` - 2.5% each for the rest - avoid "Invalid array length" - fix `console.log()` - bypass getter - curb recursive reference - deprecate `-E`, always report runtime errors 15 May 2017, 10:22:43 UTC
d0b0aec document 3 max passes (#1928) 15 May 2017, 10:18:38 UTC
9f5a602 clarify wording (#1931) 15 May 2017, 10:18:27 UTC
4027a0c fix parser bugs & CLI reporting (#1827) fixes #1825 15 May 2017, 10:18:04 UTC
87f8a48 v2.8.24 12 May 2017, 07:47:02 UTC
c736834 Merge pull request #1921 from alexlamsl/v2.8.24 12 May 2017, 06:58:35 UTC
9a98513 add documentation for `side_effects` & `[#@]__PURE__` (#1925) 12 May 2017, 04:55:07 UTC
f631d64 avoid `arguments` and `eval` in `reduce_vars` (#1924) fixes #1922 12 May 2017, 04:45:38 UTC
aa7e878 fix invalid transform on `const` (#1919) - preserve (re)assignment to `const` for runtime error - suppress `cascade` on `const`, as runtime behaviour is ill-defined 11 May 2017, 21:04:28 UTC
13e5e33 document known issues with `const` (#1916) 11 May 2017, 19:36:54 UTC
487ae8e change `harmony` references to `uglify-es` in README (#1902) 10 May 2017, 08:38:10 UTC
5dfda6e v2.8.23 06 May 2017, 20:31:54 UTC
d08c772 Merge pull request #1871 from alexlamsl/v2.8.23 06 May 2017, 20:06:51 UTC
90ed544 fix test for #1865 (#1873) 06 May 2017, 19:04:17 UTC
d8106b6 fix label-related bugs (#1835) - deep cloning of `AST_LabeledStatement` - `L:do{...}while(false)` - empty statement with label within block extend `test/ufuzz.js` - generate labels for blocks & loops - generate for-in statements - skip suspicious option search if `minify()` errs fixes #1833 06 May 2017, 16:16:30 UTC
dda4eb9 backport test scripts 06 May 2017, 15:48:28 UTC
7305ba0 fix `unsafe` on `evaluate` of `reduce_vars` (#1870) Determine if variables with non-constant values can escape and be modified. fixes #1865 06 May 2017, 15:40:19 UTC
2c21dc5 fix `unused` on for-in statements (#1843) Only need to avoid `var` within the initialisation block. fixes #1841 06 May 2017, 15:34:21 UTC
d0faa47 fix `unused` on labeled for-loop (#1831) fixes #1830 06 May 2017, 15:31:22 UTC
6ad823d fix `reduce_vars` within try-block (#1818) Possible partial execution due to exceptions. 06 May 2017, 15:28:07 UTC
43ad4e9 fix variable substitution (#1816) - let `collapse_vars` take care of value containing any symbols - improve overhead accounting 06 May 2017, 15:26:54 UTC
04b8964 v2.8.22 09 April 2017, 03:36:57 UTC
d6fbc36 fix LHS cases for NaN & friends (#1804) `Infinity = beyond` should not become `1/0 = beyond` 08 April 2017, 19:18:14 UTC
9a97884 enhance `test/ufuzz.js` (#1803) - `-E` to report test cases with runtime errors - favor returning expressions rather than empty return - emit a newline upon fuzzer completion to not erase the iteration count closes #1800 08 April 2017, 17:36:38 UTC
0479ff0 fix a couple of bugs in `global_defs` (#1802) - `optimize()` substituted expression - compute nested property string correctly fixes #1801 Miscellaneous - reset optimisation flags on all node types 08 April 2017, 08:46:25 UTC
cf72fe5 fix `delete` corner cases (#1799) - assignment - boolean - conditional - sequence 08 April 2017, 06:25:28 UTC
a1532eb extend ufuzz generator (#1783) - property access - property assignment - allow bare expression within try-block - normalise `Error` in `console.log()` - generate more unary expressions - add parenthesis to enforce precedence - adjust variable reuse/creation - add parameters to function declaration & expression - add return expression - add trivial arguments to function call 07 April 2017, 10:47:30 UTC
c2a1bce fix `pure_getters` for chained property access (#1798) 07 April 2017, 09:06:01 UTC
e3c9c22 fix corner cases with `delete` (#1796) `delete Infinity` returns `false` where as `delete (1/0)` returns `true` 07 April 2017, 07:39:59 UTC
0f4cd73 introduce "strict" to `pure_getters` (#1795) 07 April 2017, 05:31:58 UTC
281e882 fix `reduce_vars` on catch variable (#1794) Improved catch handling in `figure_out_scope()` means special case treatment of IE8 is no longer valid in `reset_opt_flags()`. Also fixed recursive assignment in variable definition. 07 April 2017, 04:32:56 UTC
cc6aa3e fix incorrect context in variable substitution (#1791) `AST_Node.optimize()` is context-aware, so don't cache its results to be used elsewhere. Also fixed a few cases of AST corruption and beef up safety of `pure_getters`. 06 April 2017, 19:42:17 UTC
e869779 enable `inline_script` by default (#1793) 06 April 2017, 16:45:51 UTC
06cdb74 improve `pure_getters` (#1786) - property access to `null` & `undefined` always has side effects - utilise `reduce_vars` to determine safe property access - may-be cases treated as side effects unless `unsafe` 06 April 2017, 03:18:59 UTC
ff289b9 implement delayed resolution for `reduce_vars` (#1788) Although it would be nice to enforce `AST_Node` cloning during transformation, that ship has sailed a long time ago. We now get the assigned value when resolving `AST_SymbolRef` instead of `reset_opt_flags()`, which has the added advantage of improved compressor efficiency. fixes #1787 05 April 2017, 13:06:42 UTC
9b6bc67 optimise `do{...}while(false)` (#1785) - better heuristics to avoid issues like #1532 - fix `TreeWalker.loopcontrol_target()` - `continue` cannot refer to `switch` blocks 04 April 2017, 15:48:22 UTC
4b90dc1 remove `--mangle-props` from fuzzing (#1777) The inherently unsafe nature makes this feature unsuitable to be tested this way. fixes #1774 04 April 2017, 08:24:16 UTC
951770f exclude mangling of special property names (#1779) - `null` - `true` - `false` - numeric literals 03 April 2017, 19:50:19 UTC
48b3fe9 fix `mangleProperties` on identifiers (#1776) - fix handling of "-Infinity" - add test case for "-0" reverts #1481 03 April 2017, 15:17:47 UTC
a400741 workaround Node.js bugs (#1775) Wrap test code in IIFE before passing to `vm` fixes #1768 fixes #1771 03 April 2017, 10:56:11 UTC
59a4e56 fix mangleProperties of `undefined` & `Infinity` (#1772) `NaN` already works by the happy accident of `Number.NaN` fixes #1770 03 April 2017, 04:31:05 UTC
1f1fccc extend `test/ufuzz.js` (#1769) New expressions: - property access - array literal - object literal Miscellaneous: - reduce execution timeout - test `toplevel` and `mangleProperties` 02 April 2017, 20:00:33 UTC
b7f6b73 v2.8.21 02 April 2017, 09:07:55 UTC
9469c03 fix corner case in `switch` (#1765) 02 April 2017, 09:07:20 UTC
d575276 avoid confusion of `NaN` & `Infinity` with `catch` symbol of the same name (#1763) fixes #1760 fixes #1761 02 April 2017, 08:14:09 UTC
f7ca4f2 fix corner cases in switch and undefined (#1762) - fix side effects in switch condition for singular blocks - fix `undefined` confusion with local variable - gate `OPT(AST_Switch)` with `switches` fixes #1758 fixes #1759 02 April 2017, 06:52:25 UTC
c076e7b speed up fuzzer code generation (#1757) - only output one top-level function or statement block - reduce `rng()` granularity from 2^32 to 65536 - fix overflow in `rng()` - track `canThrow` during `typeof` creation 01 April 2017, 21:11:29 UTC
4a55bb0 minor tweaks to `test/ufuzz.js` (#1756) - count iterations from `1` instead of `0` - remove `unsafe` from default set of `minify()` tests - improve usability of help 01 April 2017, 19:17:01 UTC
28ecea5 upgrade fuzzer (#1754) - configurable set of `minify()` options - test and report suspects upon failure - continue after failure if infinite iterations is specified 01 April 2017, 18:10:50 UTC
9a31170 fuzz regexp literals, more constant numbers, typeof expression (#1755) 01 April 2017, 18:08:46 UTC
ee3fe0f fix switch branch elimination (#1752) Merge unreachable case body with previous fallthrough case fixes #1750 01 April 2017, 09:19:57 UTC
87f6e1b minor tweaks to fuzzer (#1751) - remove `let` as variable name - employ `crypto.randomBytes()` 01 April 2017, 09:09:52 UTC
c934fc8 implement `test/sandbox.js` (#1749) - `test/run-tests.js` and `test/ufuzz.js` now shares the same `run_code()` and `same_stdout()` - re-enable fuzzer to generate top-level `NaN`, `Infinity` & `undefined` - attempt to show beautified output only when `run_code()` output is preserved 31 March 2017, 21:47:11 UTC
257ddc3 improve compression of undefined, NaN & Infinitiy (#1748) - migrate transformation logic from `OutputStream` to `Compressor` - always turn `undefined` into `void 0` (unless `unsafe`) - always keep `NaN` except when avoiding local variable redefinition - introduce `keep_infinity` to suppress `1/0` transform, except when avoiding local variable redefinition supersedes #1723 fixes #1730 31 March 2017, 19:02:14 UTC
1ddc057 combine rules for binary boolean operations (#1744) 31 March 2017, 10:47:44 UTC
e6b76a4 Massive extension of the fuzzer (#1697) Fix bug where a `throw` was generated without expression Reenable try/catch/finally and fix them up Skip serialization errors Allow function decl in other funcs but not in blocks etc Rename function to be more appropriate Fix global functions not getting certain names Make the canaries more likely to appear as expressions Add a silly rounding edge case Add a new canary, `c`, which should only ever be incremented Refactoring Fix (another) iife not actually being invoked When a statement hits recursion max return an expression instead of `;` When a expression hits recursion max also inc `c` Generate global code as well as function code Also fixes some argument juggling related bugs. No longer reduces the recursion max when generating sub functions. Generates a function arg. Add used names to var name pool while in that scope This is a little wonky, possibly a hack, but since it's synchronous code I think it's alright to do this. The alternative is to slice the varnames array and juggle them through almost all the generator functions and there are various reasons why this patch is a better alternative. Minify generated code, not beautified code. Prevents beautifier bias. Prevent unnecessary duplication Remove serialization protection because I think it got handled elsewhere Abstract toplevel code generation Add example line of running test case Add poor man options parser, and some options Reindent to 4 spaces Lower chance of `default` generation Comment example of testing a case and output improvement Enable `default` clause appearing at any clause index Removing some training wheels; dont add parens where we dont absolutely need them Support `-s1` and `-s2` to force specific statements being generated at that recursion level Add round number to output when failing. For stats and fun and profit. Solidify statement depth counting. The argument juggling is real. Renamed option to something long. -scf was ugly and probably confusing. Fix missing arguments causing `canThrow` to be truthy, generating crashing code Generate more binary nested expressions Add black and white list cli options for statement generation Allows you to explicitly require or forbid certain statements from/to being made. ``` node test/ufuzz.js --without-stmt switch,try -t 5 -r 5 -V ``` ``` node test/ufuzz.js --only-stmt ifelse,expr -t 5 -r 5 -V ``` Similar granularity for expression may be added later. There can be no comma between names; it just does a split on that arg. Trim down the binary expression generator Prevent scoping issues in nodejs by preventing certain names in global space Oh this list was incomplete? Allow bin-expr to generate assignments too. More vigilant with storing and reusing vars. Add more global builtin names Update wrapper code Also patch Function valueOf 31 March 2017, 09:23:50 UTC
a0c3836 sort options in alphabetical order (#1743) They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read. 31 March 2017, 08:41:04 UTC
f8a71b5 v2.8.20 31 March 2017, 07:27:40 UTC
11e9bdc fix missing preamble when shebang is absent (#1742) 31 March 2017, 07:26:57 UTC
a84564d v2.8.19 31 March 2017, 04:26:10 UTC
c595b84 fix catch symbol mangling (#1734) Only need to look up the immediate non-block/catch scope for the same-name special case. fixes #1733 30 March 2017, 18:57:47 UTC
7cb1adf remove paranthesis for `-(x*y)` (#1732) 30 March 2017, 08:09:00 UTC
7bea38a optimize try-catch-finally (#1731) - eliminate empty blocks - flatten out if try-block does not throw 30 March 2017, 04:16:58 UTC
0f910ee improve tests from #1726 (#1729) 29 March 2017, 16:13:46 UTC
beb9659 speed up IIFE elimination (#1728) - `side_effects` will clean up inner statements, so checking for an empty function body should suffice - drop side effects when dropping `return` from statement 29 March 2017, 15:27:35 UTC
f1a833a speed up `equivalent_to()` and `AST_Switch` (#1727) 29 March 2017, 14:08:26 UTC
2e41cd6 fix missing parentheses around NaN/Infinity shorthands (#1726) fixes #1724 fixes #1725 29 March 2017, 12:53:03 UTC
09f77c7 output optimal representations of NaN & Infinity (#1723) - move these optimisations out from `Compressor` to `OutputStream` - fixes behaviour inconsistency when running uglified code from global or module levels due to redefinition 29 March 2017, 10:31:55 UTC
fef0bf9 improve beautified output of switch blocks (#1721) 28 March 2017, 20:40:05 UTC
ae740b9 v2.8.18 28 March 2017, 19:13:30 UTC
ec7f37f remove UGLIFY_DEBUG (#1720) fixes #1719 28 March 2017, 17:27:24 UTC
eb48a03 fix corner case in `unused` (#1718) When fixing catch-related issue in #1715, it tries to optimise for duplicate definitions but did not take anonymous functions into account. Remove such optimisation for now and we can cover this as a more general rule later. 28 March 2017, 17:00:21 UTC
6ab3224 v2.8.17 28 March 2017, 13:49:04 UTC
c909ffb fix `unused` on var of the same name within catch (#1716) fixes #1715 28 March 2017, 13:25:49 UTC
f71f490 fix `is_number()` on `+=` (#1714) fixes #1710 28 March 2017, 09:08:16 UTC
fb177a6 drop anonymous function name when overshadowed by other declarations (#1712) fixes #1709 28 March 2017, 09:02:20 UTC
65da9ac handle var within catch of the same name (#1711) The following code prints `1`: var a = 1; !function(){ a = 4; try{ throw 2; } catch (a) { var a = 3; } }(); console.log(a); fixes #1708 28 March 2017, 08:42:39 UTC
67d0237 fix tail trimming of switch blocks (#1707) now guarded under `dead_code` fixes #1705 27 March 2017, 19:59:13 UTC
984a217 fix mangle for variable declared within catch block (#1706) fixes #1704 27 March 2017, 19:26:35 UTC
aa3f647 ufuzz: workaround for Function.toString() v2 (#1700) 27 March 2017, 13:49:08 UTC
c526da5 `has_side_effects()` should take `AST_Switch.expression` into account (#1699) fixes #1698 27 March 2017, 10:09:35 UTC
581630e fix typeof side effects (#1696) `statement_to_expression()` drops `typeof` even if it operates on undeclared variables. Since we now have `drop_side_effect_free()`, replace and remove this deprecated functionality. 26 March 2017, 20:37:42 UTC
f595293 preserve side effects in switch expression (#1694) fixes #1690 26 March 2017, 18:32:46 UTC
f001e4c fix `cascade` on anonymous function reference (#1693) Unlike normal variables and even function definitions, these cannot be reassigned, even though assignment expressions would "leak" the assigned value as normal. 26 March 2017, 17:58:21 UTC
57ce5bd handle overlapped variable definitions (#1691) Process variable definitions with or without assigned values against: - `arguments` - named function arguments - multiple definitions within same scope Essentially demote variable declarations with no value assignments. Also fixed invalid use of `AST_VarDef` over `arguments` - should use a member of `AST_SymbolDeclaration` instead. 26 March 2017, 17:30:21 UTC
861a79a fix `delete` related issues in `collapse_vars` and `reduce_vars` (#1689) 26 March 2017, 11:14:30 UTC
00996af ufuzz: workaround function name and toString() (#1688) fixes #1686 26 March 2017, 10:18:44 UTC
e76fb35 fix `cascade` on `delete` operator (#1687) Conditions including strict mode would make `delete` return `true` or `false`, and are too complex to be evaluated by the compressor. Suppress assignment folding into said operator. fixes #1685 26 March 2017, 10:08:44 UTC
3276740 fallthrough should not execute case expression (#1683) - de-duplicate trailing cases only, avoid all potential side-effects - enable switch statement fuzzing fixes #1680 26 March 2017, 08:52:38 UTC
5509e51 optimize conditional when condition symbol matches consequent (#1684) 26 March 2017, 08:36:33 UTC
94f8472 suppress switch branch de-duplication upon side effects (#1682) fixes #1679 26 March 2017, 05:32:43 UTC
8a4f865 fix side-effects detection on switch statements (#1678) extension of #1675 26 March 2017, 04:05:44 UTC
adb0e88 Improve fuzzer. :) (#1665) @qfox Put value constants in a global constant 74c0fb9 @qfox And the other string based values as well a5033c5 @qfox Be more strict about parameters, allow max to be optional 9c7ce70 @qfox Support a `V` (capital) flag to only log out at intervals 2d822c7 @qfox Fewer magic variables a6a9a7c @qfox Fix decrement such that a function is created when n=1 7e4b017 @qfox Add more values 64e596e @qfox Make `b` appear more often d33191a @qfox Add functions that contain (only..) functions 29a86e3 @qfox Allow the block statement to contain multiple statements 7570484 @qfox Make the interval count a constant d587ad8 @qfox Enable mangling, disable post-processing … 4dc8d35 @qfox Add more simple value that may trigger syntactic errors 8496d58 @qfox Add `else` to some `if` statements a4aed65 @qfox Move iife to expr generator, fix missing recursion arg e453159 @qfox Improve output on error where it wasnt printing the last code properly 4565a1a @qfox Add switch statement to generator ceafa76 @qfox Add var statement, support optional comma for expr generator b83921b @qfox Expression generator should use a simple value instead of `0` as recu… … 9d1a5c7 @qfox const -> var to keep things es5... 0143099 @qfox Add more simple values that may trigger edge cases 5e124f1 @qfox Add central name generator, take special care for global functions aeb7682 @qfox Add some `return` and function declaration cases to statement generator 6c9c3cc @qfox Exclude switches from generator for now 91124b2 Put value constants in a global constant And the other string based values as well Be more strict about parameters, allow max to be optional Support a `V` (capital) flag to only log out at intervals Fewer magic variables Fix decrement such that a function is created when n=1 Add more values Make `b` appear more often Add functions that contain (only..) functions Allow the block statement to contain multiple statements Make the interval count a constant Enable mangling, disable post-processing Mangling is kind of the whole point... Similarly, to beautify the minified code afterwards may supress bugs so it's probably best not to beautify the code prematurely. And there's no point anyways since you won't see it most of the time and only care about the main input anyways. Add more simple value that may trigger syntactic errors Add `else` to some `if` statements Move iife to expr generator, fix missing recursion arg Improve output on error where it wasnt printing the last code properly Add switch statement to generator Add var statement, support optional comma for expr generator Expression generator should use a simple value instead of `0` as recursion default const -> var to keep things es5... Add more simple values that may trigger edge cases Add central name generator, take special care for global functions Add some `return` and function declaration cases to statement generator Exclude switches from generator for now Enable switch generation because #1667 was merged Add typeof generator Add some elision tests Add a new edge case that returns an object explicitly Add all binary ops to try and cover more paths Forgot four binops and added `Math` to var name pool Harden the incremental pre/postfix tests Improve switch generator, allow `default` to appear at any clause index Add try/catch/finally generation Prevent function statements being generated Add edge case with decremental op and a group Disable switch generation until #1679 and #1680 are solved Only allow `default` clause as last clause for now Tentatively enable `throw`, `break` and `continue` statements when in valid contexts 26 March 2017, 04:04:50 UTC
f83d370 improve switch optimisations (#1677) - correctly determine reachability of (default) branches - gracefully handle multiple default branches - optimise branches with duplicate bodies fixes #376 fixes #441 fixes #1674 25 March 2017, 21:15:46 UTC
b19aa58 fix `has_side_effects()` (#1675) `AST_Try` is an `AST_Block`, so besides try block we also need to inspect catch and finally blocks for possible side effects. Also extend this functionality to handle `AST_If` and `AST_LabeledStatement` while we are at it. fixes #1673 25 March 2017, 15:03:26 UTC
0a65de8 fix `reduce_vars` on `AST_Switch` (#1671) Take conditional nature of switch branches into account. fixes #1670 25 March 2017, 13:17:30 UTC
6e86ee9 fix typeof side-effects (#1669) `has_side_effects()` does not take `typeof`'s magical power of not tripping over undeclared variable into account. fixes #1668 25 March 2017, 09:40:18 UTC
back to top