c8e6144 | Alex Lam S.L | 02 March 2017, 23:30:28 UTC | Merge pull request #1541 from alexlamsl/harmony-v2.8.5 Merging from master for 2.8.5 | 02 March 2017, 23:30:28 UTC |
f704e9b | alexlamsl | 02 March 2017, 23:23:46 UTC | fix destructing crash in reduce_vars fixes #1531 | 02 March 2017, 23:23:46 UTC |
0b77d86 | alexlamsl | 02 March 2017, 23:17:52 UTC | Merge branch 'master' into harmony-v2.8.5 | 02 March 2017, 23:17:52 UTC |
b5e0e8c | Alex Lam S.L | 02 March 2017, 23:12:24 UTC | facilitate fix for #1531 (#1542) | 02 March 2017, 23:12:24 UTC |
e5cb927 | Alex Lam S.L | 02 March 2017, 21:14:21 UTC | v2.8.5 | 02 March 2017, 21:14:21 UTC |
17b8135 | Alex Lam S.L | 02 March 2017, 20:45:20 UTC | fix chained assignment with `unused` (#1540) When #1450 optimises `a=b=42`, it stops after the first variable even if both are unused. fixes #1539 | 02 March 2017, 20:45:20 UTC |
4d63d4f | kzc | 02 March 2017, 19:51:15 UTC | collapse_vars should not replace constant in for-in init section (#1538) fixes #1537 | 02 March 2017, 19:51:15 UTC |
70d72ad | Alex Lam S.L | 02 March 2017, 18:39:57 UTC | properly cover all cases of for-in loop variables (#1536) | 02 March 2017, 18:39:57 UTC |
fe9227a | Alex Lam S.L | 02 March 2017, 16:56:06 UTC | fix reference marking in for-in loops (#1535) fixes #1533 | 02 March 2017, 16:56:06 UTC |
b49e142 | Alex Lam S.L | 02 March 2017, 16:54:41 UTC | disable do{...}while(false) optimisation (#1534) - fails to handle `break` in body fixes #1532 | 02 March 2017, 16:54:41 UTC |
ee3b39b | kzc | 02 March 2017, 07:11:40 UTC | optimize trivial IIFEs returning constants (#1530) | 02 March 2017, 07:11:40 UTC |
9699ffb | Alex Lam S.L | 02 March 2017, 03:33:59 UTC | trim unused invocation parameters (#1526) | 02 March 2017, 03:33:59 UTC |
fdc9b94 | Alex Lam S.L | 02 March 2017, 03:31:39 UTC | minor improvement to string optimisation (#1514) - "" + "a" => "a" - "" + a + "b" => a + "b" - "a" + "" => "a" (improving on #45) | 02 March 2017, 03:31:39 UTC |
e27dab7 | Alex Lam S.L | 02 March 2017, 03:22:06 UTC | Merge pull request #1528 from alexlamsl/harmony-v2.8.4 Merging from master for 2.8.4 | 02 March 2017, 03:22:06 UTC |
80f3ad3 | alexlamsl | 02 March 2017, 03:16:55 UTC | Merge branch 'master' into harmony-v2.8.4 | 02 March 2017, 03:16:55 UTC |
40ceddb | Alex Lam S.L | 01 March 2017, 16:24:49 UTC | v2.8.4 | 01 March 2017, 16:24:49 UTC |
7aa6911 | Alex Lam S.L | 01 March 2017, 16:20:53 UTC | fix corner cases in `reduce_vars` (#1524) Avoid variable substitution in the following cases: - use of variable before declaration - declaration within conditional code blocks - declaration within loop body fixes #1518 fixes #1525 | 01 March 2017, 16:20:53 UTC |
bff7ad6 | Alex Lam S.L | 01 March 2017, 07:28:46 UTC | v2.8.3 | 01 March 2017, 07:28:46 UTC |
c2334ba | Alex Lam S.L | 01 March 2017, 07:25:26 UTC | fix crash on missing `props` to `string_template()` (#1523) Patched up `make_node()` without `orig`. There may be other cases where `start` could be missing, so make it print "undefined" instead of crashing. fixes #1518 | 01 March 2017, 07:25:26 UTC |
22f7af2 | Alex Lam S.L | 01 March 2017, 03:13:32 UTC | Merge pull request #1521 from alexlamsl/harmony-v2.8.2 Merging from master for 2.8.2 | 01 March 2017, 03:13:32 UTC |
8a7a474 | alexlamsl | 01 March 2017, 03:06:33 UTC | Merge branch 'master' into harmony-v2.8.2 | 01 March 2017, 03:06:33 UTC |
fb2b6c7 | Alex Lam S.L | 28 February 2017, 20:46:12 UTC | v2.8.2 | 28 February 2017, 20:46:12 UTC |
f5cbe19 | Alex Lam S.L | 28 February 2017, 20:12:10 UTC | invert `reduce_vars` tracking flag (#1519) Modules like webpack and grunt-contrib-uglify still uses `ast.transform(compressor)` before `Compressor.compress(ast)` was introduced. Workaround this compatibility issue by deactivating `reduce_vars` in such case. Also fix use case with omitted `options` when calling `Compressor()`. fixes #1516 | 28 February 2017, 20:12:10 UTC |
b34fa11 | Alex Lam S.L | 28 February 2017, 18:03:47 UTC | fix `evaluate` on object getter & setter (#1515) | 28 February 2017, 18:03:47 UTC |
320984c | Alex Lam S.L | 28 February 2017, 16:27:08 UTC | v2.8.1 | 28 February 2017, 16:27:08 UTC |
4365a51 | Alex Lam S.L | 28 February 2017, 16:25:43 UTC | temporarily disables `reduce_vars` (#1517) ... as we investigate #1516 | 28 February 2017, 16:25:43 UTC |
514fc68 | Alex Lam S.L | 28 February 2017, 15:14:25 UTC | Merge pull request #1509 from alexlamsl/harmony-2.8.0 Merging from master for 2.8.0 | 28 February 2017, 15:14:25 UTC |
478aaab | alexlamsl | 28 February 2017, 06:08:31 UTC | fix parser test not sure if `start.pos` is correct, but oh well | 28 February 2017, 06:08:31 UTC |
ab21753 | alexlamsl | 28 February 2017, 05:23:02 UTC | restore sourceMappingURL in test | 28 February 2017, 05:23:02 UTC |
a942dc0 | alexlamsl | 27 February 2017, 19:58:01 UTC | fix parser tests update exception messages | 27 February 2017, 19:58:01 UTC |
a0eaff7 | kzc | 27 February 2017, 18:47:33 UTC | fix parsing of arrow function with bind fixes #1510 | 27 February 2017, 18:47:33 UTC |
57777b6 | alexlamsl | 27 February 2017, 18:28:58 UTC | Merge branch 'master' into harmony-2.8.0 | 27 February 2017, 18:28:58 UTC |
858e6c7 | Alex Lam S.L | 27 February 2017, 18:25:44 UTC | warn & drop `#__PURE__` iff IIFE is dropped (#1511) - consolidate `side-effects` optimisations - improve string `+` optimisation - enhance literal & `conditionals` optimisations | 27 February 2017, 18:25:44 UTC |
8d205f7 | kzc | 27 February 2017, 06:54:47 UTC | fix parser handling of comments | 27 February 2017, 06:54:47 UTC |
bc9bfd1 | alexlamsl | 27 February 2017, 03:39:48 UTC | fix test | 27 February 2017, 03:39:48 UTC |
9fc1c4b | alexlamsl | 26 February 2017, 22:23:12 UTC | update test top-level block-variables not within blocks are global variables | 26 February 2017, 22:23:12 UTC |
c59bf5e | alexlamsl | 26 February 2017, 22:20:08 UTC | fix `SymbolDef.global` properly compute for top-level block-variables | 26 February 2017, 22:20:08 UTC |
d2d3a6e | alexlamsl | 26 February 2017, 22:06:09 UTC | fix double-`descend()` for `AST_Export` in `AST_Toplevel.figure_out_scope()` | 26 February 2017, 22:06:09 UTC |
7755733 | alexlamsl | 26 February 2017, 21:30:18 UTC | fix "Starting destructuring." commit 32f76f7ff does not take into account `AST_SymbolFunarg` is also `AST_SymbolVar`, so don't need to call `AST_Scope.def_variable()` twice | 26 February 2017, 21:30:18 UTC |
b3a987b | alexlamsl | 26 February 2017, 21:11:01 UTC | fix up `drop_unused()` | 26 February 2017, 21:11:01 UTC |
88a338f | alexlamsl | 26 February 2017, 20:37:48 UTC | Merge branch 'master' into harmony-2.8.0 | 26 February 2017, 20:37:48 UTC |
0b0296e | Alex Lam S.L | 26 February 2017, 19:47:54 UTC | v2.8.0 | 26 February 2017, 19:47:54 UTC |
872270b | Alex Lam S.L | 26 February 2017, 19:40:54 UTC | improve error messages (#1506) - better inheritance of `Error` sub-classes - mark parse error against source in CLI closes #235 closes #348 closes #524 closes #1356 closes #1405 | 26 February 2017, 19:40:54 UTC |
b1c593a | kzc | 26 February 2017, 17:55:24 UTC | add harmony branch details in README (#1507) | 26 February 2017, 17:55:24 UTC |
13be50a | Alex Lam S.L | 25 February 2017, 21:58:26 UTC | faster tree transversal (#1462) - convert `[].forEach()` to for-loops | 25 February 2017, 21:58:26 UTC |
16cd5d5 | Alex Lam S.L | 25 February 2017, 16:40:33 UTC | consolidate `evaluate` & `reduce_vars` (#1505) - improve marking efficiency - apply smarter `const` replacement to `var` fixes #1501 | 25 February 2017, 16:40:33 UTC |
834f9f3 | Alex Lam S.L | 24 February 2017, 20:13:10 UTC | update docs for `pure_funcs` & `drop_console` (#1503) closes #1362 closes #1399 | 24 February 2017, 20:13:10 UTC |
cf0951f | Alex Lam S.L | 24 February 2017, 20:11:21 UTC | allow --in-source-map inline (#1490) - limited to one input file (or `stdin`) - only works with built-in parser fixes #520 | 24 February 2017, 20:11:21 UTC |
852f784 | Ondřej Španěl | 24 February 2017, 00:51:24 UTC | Avoid using exports when undefined (#1471) Makes direct usage within web browser easier, even if officially unsupported. | 24 February 2017, 00:51:24 UTC |
07734b0 | Anthony Van de Gejuchte | 24 February 2017, 00:49:19 UTC | Destructuring consistency fixes (#1417) - Use AST_Destructuring for lhf assignment patterns - Use AST_DefaultAssign for default assignments - Add more checks for lhs expressions - Add lots of testing - Cleanup ast (e.g. remove default property) - Fix #1402 based on a patch from @kzc - Refine spread allowance in array destructring pattern - Add destructuring AST tree checker | 24 February 2017, 00:49:19 UTC |
85c1cba | Anthony Van de Gejuchte | 24 February 2017, 00:48:13 UTC | Remove duplicated code (#1456) [ES6] Remove duplicated code | 24 February 2017, 00:48:13 UTC |
229e42c | Alex Lam S.L | 23 February 2017, 23:33:57 UTC | Merge pull request #1485 from alexlamsl/merge-2.8.0 2.8.0 staging | 23 February 2017, 23:33:57 UTC |
4e49302 | alexlamsl | 23 February 2017, 17:46:57 UTC | enable `collapse_vars` & `reduce_vars` by default - fix corner cases in `const` optimisation - deprecate `/*@const*/` fixes #1497 closes #1498 | 23 February 2017, 17:46:57 UTC |
1e51586 | kzc | 21 February 2017, 06:24:18 UTC | 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 | 21 February 2017, 06:24:18 UTC |
d48a308 | Ondřej Španěl | 20 February 2017, 09:14:53 UTC | Fix: AST_Accessor missing start / end tokens fixes #1492 closes #1493 | 21 February 2017, 05:32:16 UTC |
26fbeec | alexlamsl | 19 February 2017, 17:46:59 UTC | 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 | 21 February 2017, 05:31:59 UTC |
8898b8a | alexlamsl | 18 February 2017, 14:44:53 UTC | clean up `max_line_len` - never exceed specified limit - otherwise warning is shown - enabled only for final output closes #1496 | 21 February 2017, 05:29:58 UTC |
ec64acd | alexlamsl | 18 February 2017, 11:34:54 UTC | introduce `unsafe_proto` - `Array.prototype.slice` => `[].slice` closes #1491 | 21 February 2017, 05:29:58 UTC |
ac0b61e | alexlamsl | 18 February 2017, 11:33:53 UTC | remove extraneous spaces between ++/+/--/- fixes #1377 closes #1488 | 21 February 2017, 05:29:58 UTC |
c06a50f | Anthony Van de Gejuchte | 18 February 2017, 11:33:05 UTC | Add .gitattributes to checkout lf eol style closes #1487 | 21 February 2017, 05:29:58 UTC |
09f9ae2 | alexlamsl | 18 February 2017, 11:30:33 UTC | improve `--beautify bracketize` reduce whitespaces from if-else statements fixes #1482 closes #1483 | 21 February 2017, 05:29:58 UTC |
7e6331b | alexlamsl | 18 February 2017, 11:28:25 UTC | add benchmark & JetStream tests - `test/benchmark.js` measures performance - `test/jetstream.js` verifies correctness - configurable mangle/compress/output options closes #1479 | 21 February 2017, 05:29:58 UTC |
e275148 | alexlamsl | 18 February 2017, 11:27:31 UTC | 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 | 21 February 2017, 05:29:58 UTC |
974247c | alexlamsl | 18 February 2017, 11:22:24 UTC | evaluate AST_SymbolRef as parameter fix invalid boolean conversion now exposed in `make_node_from_constant()` closes #1477 | 21 February 2017, 05:29:58 UTC |
a0f4fd3 | alexlamsl | 18 February 2017, 11:19:55 UTC | improve reduce_vars and fix a bug - update modified flag between compress() passes - support IIFE arguments - fix corner case with multiple definitions closes #1473 | 21 February 2017, 05:29:58 UTC |
b8b133d | alexlamsl | 18 February 2017, 11:19:12 UTC | improve keep_fargs & keep_fnames - utilise in_use_ids instead of unreferenced() - drop_unused now up-to-date for subsequent passes closes #1476 | 21 February 2017, 05:29:58 UTC |
c525a2b | alexlamsl | 18 February 2017, 11:15:09 UTC | 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 | 21 February 2017, 05:29:58 UTC |
6ffbecb | kzc | 18 February 2017, 11:12:57 UTC | smarter const replacement taking name length into account closes #1459 | 21 February 2017, 05:29:58 UTC |
f0ff618 | alexlamsl | 18 February 2017, 11:11:57 UTC | 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 | 21 February 2017, 05:29:58 UTC |
6b3c49e | alexlamsl | 18 February 2017, 11:07:52 UTC | improve string concatenation shuffle associative operations to minimise parentheses and aid other uglification efforts closes #1454 | 21 February 2017, 05:29:57 UTC |
f584ca8 | alexlamsl | 18 February 2017, 11:07:03 UTC | `-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 | 21 February 2017, 05:29:57 UTC |
ae4db00 | alexlamsl | 18 February 2017, 11:05:54 UTC | tweak do-while loops - `do{...}while(false)` => `{...}` - clean up `AST_While` logic closes #1452 | 21 February 2017, 05:29:57 UTC |
100307a | alexlamsl | 18 February 2017, 11:05:11 UTC | 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 | 21 February 2017, 05:29:57 UTC |
148047f | alexlamsl | 18 February 2017, 11:03:53 UTC | 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 | 21 February 2017, 05:29:57 UTC |
d11dca3 | kzc | 18 February 2017, 11:02:59 UTC | fix stray else in compress with conditionals=false closes #1449 | 21 February 2017, 05:29:57 UTC |
e5badb9 | alexlamsl | 18 February 2017, 11:01:42 UTC | enable typeof "undefined" for general use move out of unsafe, guard corner case with screw_id8 instead closes #1446 | 18 February 2017, 11:01:42 UTC |
fa668a2 | alexlamsl | 18 February 2017, 11:00:54 UTC | fix corner case in keep_fnames happens when inner function: - just below top level - not referenced - `unused` is disabled closes #1445 | 18 February 2017, 11:00:54 UTC |
686a496 | alexlamsl | 18 February 2017, 10:59:40 UTC | remove unused AST_Scope.nesting & AST_SymbolRef.frame they are computed but never used closes #1444 | 18 February 2017, 10:59:40 UTC |
11676f9 | alexlamsl | 18 February 2017, 10:58:23 UTC | fix crash in unsafe replacement of undefined remove extraneous call to AST_SymbolRef.reference() closes #1443 | 18 February 2017, 10:58:23 UTC |
dd31d12 | Anthony Van de Gejuchte | 18 February 2017, 10:56:18 UTC | Improve optimizing `function() { if(c){return foo} bar();}` closes #1437 | 18 February 2017, 10:56:18 UTC |
eb55d8a | Mihai Bazon | 12 February 2017, 08:59:43 UTC | Merge pull request #1481 from anatdagan/propsmangle_only_identifiers verify that property names after mangle are legal | 12 February 2017, 08:59:43 UTC |
81f1df1 | Anat Dagan | 10 February 2017, 12:13:47 UTC | in mangle_names there is a check that the variable name is legal and that it is not a reserved word. This should apply to propsmangle as well. | 10 February 2017, 12:13:47 UTC |
4bd3160 | Richard van Velzen | 26 January 2017, 12:02:22 UTC | Merge branch 'master' into harmony | 26 January 2017, 12:02:22 UTC |
7f8d72d | Alex Lam S.L | 26 January 2017, 11:59:32 UTC | update test (#1441) improved reduce_vars & binary operands produce more optimal results | 26 January 2017, 11:59:32 UTC |
1eaa211 | Alex Lam S.L | 26 January 2017, 11:18:28 UTC | 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() | 26 January 2017, 11:18:28 UTC |
0610c02 | Alex Lam S.L | 26 January 2017, 11:16:50 UTC | 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` | 26 January 2017, 11:16:50 UTC |
0d7d491 | Alex Lam S.L | 26 January 2017, 11:14:18 UTC | 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 | 26 January 2017, 11:14:18 UTC |
4728bc7 | Anthony Van de Gejuchte | 26 January 2017, 11:06:46 UTC | Allow parsing regexp after arrow token (#1439) | 26 January 2017, 11:06:46 UTC |
4828484 | alexlamsl | 17 January 2017, 09:33:40 UTC | add missing LHS cases which global_defs should avoid | 19 January 2017, 20:06:28 UTC |
52ce9a3 | Anthony Van de Gejuchte | 30 October 2016, 23:10:52 UTC | Fix compression with unused containing destructuring | 19 January 2017, 20:04:28 UTC |
abbeb26 | kzc | 10 January 2017, 19:19:32 UTC | [ES6] output parens for yield when parented by AST_Dot or AST_Sub (#1419) | 19 January 2017, 16:15:59 UTC |
ec2e5fa | kzc | 21 December 2016, 15:52:30 UTC | Have minify() and tests use figure_out_scope() as uglifyjs CLI does Clarify docs, help and tests for --support-ie8 and screw_ie8=false | 19 January 2017, 16:14:33 UTC |
da17766 | Anthony Van de Gejuchte | 30 November 2016, 20:54:23 UTC | Add preventive test involving non-ascii function identifiers | 19 January 2017, 16:13:33 UTC |
b11c515 | Anthony Van de Gejuchte | 30 November 2016, 20:50:31 UTC | Fix regression with non-ascii function identifiers Regression since 110a1ac885ba224cbc677e42695e252068edd267 | 19 January 2017, 15:47:37 UTC |
0913db8 | Wiktor Kwapisiewicz | 30 November 2016, 13:54:15 UTC | Add note about name mangling when using --mangle-props=unquoted (#1314) | 19 January 2017, 15:47:10 UTC |
962b1f3 | Richard van Velzen | 30 November 2016, 17:59:32 UTC | Merge branch 'master' into harmony | 30 November 2016, 17:59:32 UTC |
5c7705f | kzc | 30 November 2016, 06:18:52 UTC | remove npm-shrinkwrap.json to work around npm@4.0.2 bug (#1384) | 30 November 2016, 17:09:52 UTC |
3ee46e9 | Richard van Velzen | 29 November 2016, 21:32:49 UTC | Merge branch 'master' into harmony | 29 November 2016, 21:32:49 UTC |
f637248 | Richard van Velzen | 29 November 2016, 21:29:59 UTC | v2.7.5 | 29 November 2016, 21:29:59 UTC |
ee26e7f | Richard van Velzen | 29 November 2016, 19:50:27 UTC | Merge branch 'master' into harmony | 29 November 2016, 19:50:27 UTC |