Age | Commit message (Expand) | Author |
2017-04-20 | improve `unused` (#1832)...- extract leading value with side-effects out of `var` statement
- reduce scanning of `AST_Definitions` from 3 passes to just once | Alex Lam S.L |
2017-04-20 | fix `unused` on labeled for-loop (#1831)...fixes #1830 | Alex Lam S.L |
2017-04-19 | improve `collapse_vars` on `AST_Var` (#1828)...Perform the same cascaded scanning within `var` statement as we do on array of statements. | Alex Lam S.L |
2017-04-19 | fix parser bugs & CLI reporting (#1827)...fixes #1825 | Alex Lam S.L |
2017-04-19 | extend `cascade` into `a.b` (#1829)...fixes #27 | Alex Lam S.L |
2017-04-18 | clean up `collapse_vars` (#1826)...- remove overlap in functionality of singular, consecutive reference of constant value
- remove workarounds for previous bugs in `lib/scope.js`
- distribute recursive `collapse_single_use_vars()` calls to their respective `OPT(AST_Node)`
- enable collapsing of variables within a single `AST_Definitions` | Alex Lam S.L |
2017-04-18 | support safe reassignments in `reduce_vars` (#1823)...`var a=1;a=2;x(a)` => `x(2)`
fix pre-existing issues
- reference counting on assignment
- walking of anonymous functions
- chained assignment | Alex Lam S.L |
2017-04-18 | fix `reduce_vars` on conditionals (#1822) | Alex Lam S.L |
2017-04-17 | fix `reduce_vars` on boolean binary expressions (#1819)...Side effects of `&&` and `||` have not mattered until #1814, which takes assignment expressions into account. | Alex Lam S.L |
2017-04-17 | compress duplicated variable definitions (#1817)...These are surprisingly common, as people reuse the same variable name within loops or switch branches. | Alex Lam S.L |
2017-04-17 | fix `reduce_vars` within try-block (#1818)...Possible partial execution due to exceptions. | Alex Lam S.L |
2017-04-17 | enhance `reduce_vars` (#1814)...- allow immediate assignment after declaration of variable
- relax modification rule for immutable value
- fix order of visit for TreeWalker
- remove extraneous code | Alex Lam S.L |
2017-04-16 | fix variable substitution (#1816)...- let `collapse_vars` take care of value containing any symbols
- improve overhead accounting | Alex Lam S.L |
2017-04-15 | unify CLI & API under `minify()` (#1811)...- rename `screw_ie8` to `ie8`
- rename `mangle.except` to `mangle.reserved`
- rename `mangle.properties.ignore_quoted` to `mangle.properties.keep_quoted`
- compact `sourceMap` options
- more stringent verification on input `options`
- toplevel shorthands
- `ie8`
- `keep_fnames`
- `toplevel`
- `warnings`
- support arrays and unquoted string values on CLI
- drop `fromString` from `minify()`
- `minify()` no longer handles any `fs` operations
- unify order of operations for `mangle_properties()` on CLI & API
- `bin/uglifyjs` used to `mangle_properties()` before even `Compressor`
- `minify()` used to `mangle_properties()` after `Compressor` but before `mangle_names()`
- both will now do `Compressor`, `mangle_names()` then `mangle_properties()`
- `options.parse` / `--parse` for parser options beyond `bare_returns`
- add `mangle.properties.builtins` to disable built-in reserved list
- disable with `--mangle-props builtins` on CLI
- `warnings` now off by default
- add `--warn` and `--verbose` on CLI
- drop `--enclose`
- drop `--export-all`
- drop `--reserved-file`
- use `--mangle reserved` instead
- drop `--reserve-domprops`
- enabled by default, disable with `--mangle-props domprops`
- drop `--prefix`
- use `--source-map base` instead
- drop `--lint`
- remove `bin/extract-props.js`
- limit exposure of internal APIs
- update documentations
closes #96
closes #102
closes #136
closes #166
closes #243
closes #254
closes #261
closes #311
closes #700
closes #748
closes #912
closes #1072
closes #1366
fixes #101
fixes #123
fixes #124
fixes #263
fixes #379
fixes #419
fixes #423
fixes #461
fixes #465
fixes #576
fixes #737
fixes #772
fixes #958
fixes #1036
fixes #1142
fixes #1175
fixes #1220
fixes #1223
fixes #1280
fixes #1359
fixes #1368 | Alex Lam S.L |
2017-04-15 | drop `angular` (#1812)...Remove support for `@ngInject` as there are proper alternatives anyway. | Alex Lam S.L |
2017-04-12 | convert `AST_Seq` from binary tree to array (#1460)...- rename `AST_Seq` to `AST_Sequence`
- raise default sequences_limit from 200 to 800 | Alex Lam S.L |
2017-04-09 | fix LHS cases for NaN & friends (#1804)...`Infinity = beyond` should not become `1/0 = beyond` | Alex Lam S.L |
2017-04-09 | 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 | Alex Lam S.L |
2017-04-08 | 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 | Alex Lam S.L |
2017-04-08 | fix `delete` corner cases (#1799)...- assignment
- boolean
- conditional
- sequence | Alex Lam S.L |
2017-04-07 | 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 | Alex Lam S.L |
2017-04-07 | fix `pure_getters` for chained property access (#1798) | Alex Lam S.L |
2017-04-07 | fix corner cases with `delete` (#1796)...`delete Infinity` returns `false` where as `delete (1/0)` returns `true` | Alex Lam S.L |
2017-04-07 | introduce "strict" to `pure_getters` (#1795) | Alex Lam S.L |
2017-04-07 | 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. | Alex Lam S.L |
2017-04-07 | 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`. | Alex Lam S.L |
2017-04-06 | 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` | Alex Lam S.L |
2017-04-05 | 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 | Alex Lam S.L |
2017-04-04 | optimise `do{...}while(false)` (#1785)...- better heuristics to avoid issues like #1532
- fix `TreeWalker.loopcontrol_target()`
- `continue` cannot refer to `switch` blocks | Alex Lam S.L |
2017-04-04 | remove `--mangle-props` from fuzzing (#1777)...The inherently unsafe nature makes this feature unsuitable to be tested this way.
fixes #1774 | Alex Lam S.L |
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 | 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 | fix missing preamble when shebang is absent (#1742) | 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 |