Age | Commit message (Expand) | Author |
2017-03-01 | fix `evaluate` on object getter & setter (#1515) | Alex Lam S.L |
2017-02-28 | warn & drop `#__PURE__` iff IIFE is dropped (#1511)...- consolidate `side-effects` optimisations
- improve string `+` optimisation
- enhance literal & `conditionals` optimisations | Alex Lam S.L |
2017-02-26 | consolidate `evaluate` & `reduce_vars` (#1505)...- improve marking efficiency
- apply smarter `const` replacement to `var`
fixes #1501 | Alex Lam S.L |
2017-02-24 | enable `collapse_vars` & `reduce_vars` by default...- fix corner cases in `const` optimisation
- deprecate `/*@const*/`
fixes #1497
closes #1498
| alexlamsl |
2017-02-21 | Support marking a call as pure...A function call or IIFE with an immediately preceding comment
containing `@__PURE__` or `#__PURE__` is deemed to be a
side-effect-free pure function call and can potentially be
dropped.
Depends on `side_effects` option.
`[#@]__PURE__` hint will be removed from comment when pure
call is dropped.
fixes #1261
closes #1448
| kzc |
2017-02-21 | fix `pure_funcs` & improve `side_effects`...- only drops side-effect-free arguments
- drop side-effect-free parts with discarded value from `AST_Seq` & `AST_SimpleStatement`
closes #1494
| alexlamsl |
2017-02-21 | clean up `max_line_len`...- never exceed specified limit
- otherwise warning is shown
- enabled only for final output
closes #1496
| alexlamsl |
2017-02-21 | introduce `unsafe_proto`...- `Array.prototype.slice` => `[].slice`
closes #1491
| alexlamsl |
2017-02-21 | Add .gitattributes to checkout lf eol style...closes #1487
| Anthony Van de Gejuchte |
2017-02-21 | enhance `global_defs`...- support arrays, objects & AST_Node
- support `"a.b":1` on both cli & API
- emit warning if variable is modified
- override top-level variables
fixes #1416
closes #1198
closes #1469
| alexlamsl |
2017-02-21 | evaluate AST_SymbolRef as parameter...fix invalid boolean conversion now exposed in `make_node_from_constant()`
closes #1477
| alexlamsl |
2017-02-21 | improve reduce_vars and fix a bug...- update modified flag between compress() passes
- support IIFE arguments
- fix corner case with multiple definitions
closes #1473
| alexlamsl |
2017-02-21 | improve keep_fargs & keep_fnames...- utilise in_use_ids instead of unreferenced()
- drop_unused now up-to-date for subsequent passes
closes #1476
| alexlamsl |
2017-02-21 | fix duplicated test names...previously test cases with the same name would be skipped except for the last one
`test/run-test.js` will now report duplicated names as errors
closes #1461
| alexlamsl |
2017-02-21 | smarter const replacement taking name length into account...closes #1459
| kzc |
2017-02-21 | clean up `negate_iife`...- remove extra tree scanning phase for `negate_iife`
- `negate_iife` now only deals with the narrowest form, i.e. IIFE sitting directly under `AST_SimpleStatement`
- `booleans`, `conditionals` etc. will now take care the rest via more accurate accounting
- `a(); void b();` => `a(); b();`
fixes #1288
closes #1451
| alexlamsl |
2017-02-21 | improve string concatenation...shuffle associative operations to minimise parentheses and aid other uglification efforts
closes #1454
| alexlamsl |
2017-02-21 | `-c sequences=N` suboptimal at N expression cutoff...N = 2:
a;
b;
c;
d;
was:
a, b;
c;
d;
now:
a, b;
c, d;
fixes #1455
closes #1457
| alexlamsl |
2017-02-21 | tweak do-while loops...- `do{...}while(false)` => `{...}`
- clean up `AST_While` logic
closes #1452
| alexlamsl |
2017-02-21 | fixes & improvements to [].join()...fixes
- [a].join() => "" + a
- ["a", , "b"].join() => "a,,b"
- ["a", null, "b"].join() => "a,,b"
- ["a", undefined, "b"].join() => "a,,b"
improvements
- ["a", "b"].join(null) => "anullb"
- ["a", "b"].join(undefined) => "a,b"
- [a + "b", c].join("") => a + "b" + c
closes #1453
| alexlamsl |
2017-02-21 | drop unused: toplevel, assign-only...- assign statement does not count towards variable usage by default
- only works with assignments on the same scope level as declaration
- can be disabled with `unused` set to "keep_assign"
- `toplevel` to drop unused top-level variables and/or functions
- `top_retain` to whitelist top-level exceptions
closes #1450
| alexlamsl |
2017-02-21 | fix stray else in compress with conditionals=false...closes #1449
| kzc |
2017-02-18 | enable typeof "undefined" for general use...move out of unsafe, guard corner case with screw_id8 instead
closes #1446
| alexlamsl |
2017-02-18 | fix corner case in keep_fnames...happens when inner function:
- just below top level
- not referenced
- `unused` is disabled
closes #1445
| alexlamsl |
2017-02-18 | fix crash in unsafe replacement of undefined...remove extraneous call to AST_SymbolRef.reference()
closes #1443
| alexlamsl |
2017-02-18 | Improve optimizing `function() { if(c){return foo} bar();}`...closes #1437
| Anthony Van de Gejuchte |
2017-01-26 | update test (#1441)...improved reduce_vars & binary operands produce more optimal results | Alex Lam S.L |
2017-01-26 | fix mangling collision with keep_fnames (#1431)...* fix mangling collision with keep_fnames
fixes #1423
* pass mangle options to figure_out_scope()
bring command-line in line with minify()
| Alex Lam S.L |
2017-01-26 | optimise binary operands with evaluate() (#1427)...- remove call to evaluate() in is_constant() and let nested optimize() does its job instead
- reject RegExp in is_constant() and remove special case logic under collapse_vars
- operands to conditionals optimisation are now always evaluate()-ed
- throw error in constant_value() instead of returning undefined to catch possible bugs, similar to make_node_from_constant()
- optimise binary boolean operators under `evaluate` instead of `conditionals` | Alex Lam S.L |
2017-01-26 | augment evaluate to extract within objects (#1425)...- gated by `unsafe`
- replaces previous optimisation specific to String.length
- "123"[0] => 1
- [1, 2, 3][0] => 1
- [1, 2, 3].length => 3
- does not apply to objects with overridden prototype functions | Alex Lam S.L |
2017-01-19 | add missing LHS cases which global_defs should avoid | alexlamsl |
2017-01-19 | Have minify() and tests use figure_out_scope() as uglifyjs CLI does...Clarify docs, help and tests for --support-ie8 and screw_ie8=false
| kzc |
2017-01-19 | Add preventive test involving non-ascii function identifiers | Anthony Van de Gejuchte |
2016-11-29 | Add --mangle-props-debug and fix --mangle-props=unquoted collision...Patch by @AshleyScirra
Based on: PR #1316
Renamed the CLI debug option to --mangle-props-debug
Fixes: #1321 name collision in --mangle-props=unquoted
| Ashley (Scirra) |
2016-10-27 | Pass mangle options to figure_out_scope before mangling in tests | Anthony Van de Gejuchte |
2016-10-06 | Remove console.log and add extra test case | Richard van Velzen |
2016-10-06 | Add an option to wrap IIFEs in parenthesis...For #1307.
| Richard van Velzen |
2016-10-06 | Fix (typeof side_effect()) in boolean context...Fixes #1289 with suggestion by @rvanvelzen
| kzc |
2016-10-01 | Optimize unmodified variables | alexlamsl |
2016-09-01 | Account for side effects in `string + expr` optimization | kzc |
2016-08-30 | implement optimization: (x = 2 * x) ---> (x *= 2) | kzc |
2016-08-17 | Fix negate_iife transform to return a correct tree for nested IIFEs...Fix for #1256, partially reverts d854523783b4
| Richard van Velzen |
2016-08-17 | Fix negate_iife regression #1254 | kzc |
2016-08-14 | Fix --mangle-props and --mangle-props=unquoted...Fixes: #1247
Fix --mangle-props and --name-cache inconsistency.
AST_Dot and AST_Sub properties are now mangled by --mangle-props
without regard to being used in an assignment statement.
Note: if --mangle-props is used then *all* javascript files used must
be uglified with the same mangle options.
Fix the ignore_quoted=true mangle option, also known as
`--mangle-props=unquoted`. If a given property is quoted anywhere
it will not be mangled in any quoted or non-quoted context.
| kzc |
2016-08-14 | Additional object literal property tests | kzc |
2016-08-14 | Fix unneeded parens around unary args in new expression. | kzc |
2016-07-15 | Keep const in own scope while compressing...- Fixes #1205
- Fix provided by @kzc
| Anthony Van de Gejuchte |
2016-07-15 | Fix mangle with option keep_fnames=true for Safari....Fixes: #1202
| kzc |
2016-06-30 | Enable --screw-ie8 by default....catch identifier is mangled correctly for ES5 standards-compliant JS engines by default.
Unconditionally use the ie8 if/do-while workaround whether or not --screw-ie8 is enabled.
To support non-standard ie8 javascript use: uglifyjs --support-ie8
| kzc |
2016-06-30 | Move OctalEscapeSequence to read_escape_char...This should simplify and improve implementation, make it easier to
implement template strings, and keep master a bit more in sync with
harmony.
Previous implementation wasn't broken, though the loop gave me the
impression it could read infinite numbers and annoyed me a bit. It was
also slightly unnecessary because the lookup involved only 3 characters.
| Anthony Van de Gejuchte |