Age | Commit message (Expand) | Author |
2017-04-04 | exclude mangling of special property names (#1779)...- `null`
- `true`
- `false`
- numeric literals | Alex Lam S.L |
2017-04-03 | fix `mangleProperties` on identifiers (#1776)...- fix handling of "-Infinity"
- add test case for "-0"
reverts #1481 | Alex Lam S.L |
2017-04-03 | workaround Node.js bugs (#1775)...Wrap test code in IIFE before passing to `vm`
fixes #1768
fixes #1771 | Alex Lam S.L |
2017-04-03 | fix mangleProperties of `undefined` & `Infinity` (#1772)...`NaN` already works by the happy accident of `Number.NaN`
fixes #1770 | Alex Lam S.L |
2017-04-03 | extend `test/ufuzz.js` (#1769)...New expressions:
- property access
- array literal
- object literal
Miscellaneous:
- reduce execution timeout
- test `toplevel` and `mangleProperties` | Alex Lam S.L |
2017-04-02 | v2.8.21 | Alex Lam S.L |
2017-04-02 | fix corner case in `switch` (#1765) | Alex Lam S.L |
2017-04-02 | avoid confusion of `NaN` & `Infinity` with `catch` symbol of the same name (#......fixes #1760
fixes #1761 | Alex Lam S.L |
2017-04-02 | 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 | Alex Lam S.L |
2017-04-02 | 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 | Alex Lam S.L |
2017-04-02 | 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 | Alex Lam S.L |
2017-04-02 | upgrade fuzzer (#1754)...- configurable set of `minify()` options
- test and report suspects upon failure
- continue after failure if infinite iterations is specified | Alex Lam S.L |
2017-04-02 | fuzz regexp literals, more constant numbers, typeof expression (#1755) | kzc |
2017-04-01 | fix switch branch elimination (#1752)...Merge unreachable case body with previous fallthrough case
fixes #1750 | Alex Lam S.L |
2017-04-01 | minor tweaks to fuzzer (#1751)...- remove `let` as variable name
- employ `crypto.randomBytes()` | Alex Lam S.L |
2017-04-01 | 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 | Alex Lam S.L |
2017-04-01 | 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 | Alex Lam S.L |
2017-03-31 | combine rules for binary boolean operations (#1744) | Alex Lam S.L |
2017-03-31 | 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 | Peter van der Zee |
2017-03-31 | 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. | Alex Lam S.L |
2017-03-31 | v2.8.20 | Alex Lam S.L |
2017-03-31 | fix missing preamble when shebang is absent (#1742) | Alex Lam S.L |
2017-03-31 | v2.8.19 | Alex Lam S.L |
2017-03-31 | fix catch symbol mangling (#1734)...Only need to look up the immediate non-block/catch scope for the same-name special case.
fixes #1733 | Alex Lam S.L |
2017-03-30 | remove paranthesis for `-(x*y)` (#1732) | Alex Lam S.L |
2017-03-30 | optimize try-catch-finally (#1731)...- eliminate empty blocks
- flatten out if try-block does not throw | Alex Lam S.L |
2017-03-30 | improve tests from #1726 (#1729) | Alex Lam S.L |
2017-03-29 | 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 | Alex Lam S.L |
2017-03-29 | speed up `equivalent_to()` and `AST_Switch` (#1727) | Alex Lam S.L |
2017-03-29 | fix missing parentheses around NaN/Infinity shorthands (#1726)...fixes #1724
fixes #1725 | Alex Lam S.L |
2017-03-29 | 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 | Alex Lam S.L |
2017-03-29 | improve beautified output of switch blocks (#1721) | Alex Lam S.L |
2017-03-29 | v2.8.18 | Alex Lam S.L |
2017-03-29 | remove UGLIFY_DEBUG (#1720)...fixes #1719 | Alex Lam S.L |
2017-03-29 | 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. | Alex Lam S.L |
2017-03-28 | v2.8.17 | Alex Lam S.L |
2017-03-28 | fix `unused` on var of the same name within catch (#1716)...fixes #1715 | Alex Lam S.L |
2017-03-28 | fix `is_number()` on `+=` (#1714)...fixes #1710 | Alex Lam S.L |
2017-03-28 | drop anonymous function name when overshadowed by other declarations (#1712)...fixes #1709 | Alex Lam S.L |
2017-03-28 | 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 | Alex Lam S.L |
2017-03-28 | fix tail trimming of switch blocks (#1707)...now guarded under `dead_code`
fixes #1705 | Alex Lam S.L |
2017-03-28 | fix mangle for variable declared within catch block (#1706)...fixes #1704 | Alex Lam S.L |
2017-03-27 | ufuzz: workaround for Function.toString() v2 (#1700) | Alex Lam S.L |
2017-03-27 | `has_side_effects()` should take `AST_Switch.expression` into account (#1699)...fixes #1698 | Alex Lam S.L |
2017-03-27 | 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. | Alex Lam S.L |
2017-03-27 | preserve side effects in switch expression (#1694)...fixes #1690 | Alex Lam S.L |
2017-03-27 | 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. | Alex Lam S.L |
2017-03-27 | 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. | Alex Lam S.L |
2017-03-26 | fix `delete` related issues in `collapse_vars` and `reduce_vars` (#1689) | Alex Lam S.L |
2017-03-26 | ufuzz: workaround function name and toString() (#1688)...fixes #1686 | Alex Lam S.L |