aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2017-06-20ensure mangling works if catch reuses a scope variable (#2123)Alex Lam S.L
fixes #2120
2017-06-17make defensive copies when `inline` (#2116)Alex Lam S.L
fixes #2114
2017-06-16fix loss of context in `collapse_vars` & `cascade` (#2112)Alex Lam S.L
fixes #2110
2017-06-16in-place `tigten_body()` (#2111)Alex Lam S.L
By reducing copies of `AST_Node` arrays, we should be able to reduce: - memory pressure - potential bugs caused by multiple references in AST - duplicated executions of `OPT()`
2017-06-16correctly determine scope of `AST_This` (#2109)Alex Lam S.L
fixes #2107
2017-06-16enforce `inline` scope restriction (#2106)Alex Lam S.L
fixes #2105
2017-06-15suppress `inline` of `this` (#2103)Alex Lam S.L
fixes #2101
2017-06-15compute `uses_arguments` correctly in `figure_out_scope()` (#2099)Alex Lam S.L
fixes #2097
2017-06-13fix variable accounting in `inline` (#2085)Alex Lam S.L
fixes #2084
2017-06-09marshal `mangle[.properties].reserved` from non-Array values (#2072)Alex Lam S.L
2017-06-08fix iteration over object with inherited properties (#2068)Alex Lam S.L
fixes #2055
2017-06-07fix `cascade` on multi-branch evaluations (#2067)Alex Lam S.L
Partially reverts #2059 as this has better coverage and performance. fixes #2062
2017-06-06fix `inline` handling of `AST_Call.args` (#2059)Alex Lam S.L
2017-06-06implement function inlining (#2053)Alex Lam S.L
- empty body - single `AST_Return` - single `AST_SimpleStatement` - avoid `/*#__PURE__*/` Miscellaneous - enhance single-use function substitution fixes #281
2017-06-06workaround webkit parsing error (#2056)Alex Lam S.L
apply `webkit` to jetstream tests
2017-06-04fix `AST_Function` scope invariance (#2052)Alex Lam S.L
improve function name hack in `run_code()`
2017-06-03clean up `lib/parse.js` (#2047)Alex Lam S.L
- remove unused definitions - replace `array_to_hash()`
2017-06-01fix non-identifier getter/setter name (#2041)Alex Lam S.L
fixes #2040
2017-06-01whitelist `unsafe` `evaluate` candidates (#2039)Alex Lam S.L
- all arguments may accept constant values - return constant value - free of side effects - available & identical across locales and runtime environments
2017-06-01enhance `unsafe` `evaluate` (#2037)Alex Lam S.L
2017-05-31introduce `unsafe_Func` (#2033)Alex Lam S.L
Separate flag for #203 functionality.
2017-05-29better fix for #512 & #2010 (#2019)Alex Lam S.L
- remove duplicated functionalities - fix similar issue with `else`
2017-05-28implement `--help options` (#2017)Alex Lam S.L
2017-05-27fix `hoist_funs` on block-scoped `function` under "use strict" (#2013)Alex Lam S.L
Technically not part of ES5, but commonly used code exists in the wild.
2017-05-27fix `if_return` on `AST_Defun` (#2010)Alex Lam S.L
Previous fiix for #1052 perturbs declaration order of functions which leads to incorrect behaviour under "use strict".
2017-05-26fix `dead_code` on block-scoped `function` under "use strict" (#2006)Alex Lam S.L
Technically not part of ES5, but commonly used code exists in the wild.
2017-05-26clean up `lib/scope.js` (#2003)Alex Lam S.L
fixes #2004
2017-05-25report timing breakdown (#2000)Alex Lam S.L
fix corner cases with `sourceMap` fixes #1998
2017-05-23fix source map offset (#1993)Alex Lam S.L
Account for whitespace insertions. fixes #505 fixes #890
2017-05-22improve usability of `global_defs` in `minify()` (#1987)Alex Lam S.L
Use `@key` to `parse()` string value as `AST_Node`. fixes #1986
2017-05-20enhance `if_return` to handle `return void...` (#1977)Alex Lam S.L
fixes #512
2017-05-19introduce `unsafe_regexp` (#1970)Alex Lam S.L
fixes #1964
2017-05-17improve `RegExp` handling (#1959)Alex Lam S.L
- remove `options.output.unescape_regexps` - preserve original pattern whenever possible fixes #54 fixes #1929
2017-05-17remove `space_colon` (#1960)Alex Lam S.L
Always emit space after colon when `options.output.beautify` is enabled.
2017-05-16fix parsing of property access after new line (#1944)Alex Lam S.L
Account for comments when detecting property access in `tokenizer`. fixes #1943
2017-05-15improve keyword-related parser errors (#1941)Alex Lam S.L
fixes #1937
2017-05-15fix & improve coverage of `estree` (#1935)Alex Lam S.L
- 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
2017-05-14fix bugs with getter/setter (#1926)Alex Lam S.L
- `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
2017-05-12remove support for `const` (#1910)Alex Lam S.L
As this is not part of ES5.
2017-05-12avoid `arguments` and `eval` in `reduce_vars` (#1924)Alex Lam S.L
fixes #1922
2017-05-12fix invalid transform on `const` (#1919)Alex Lam S.L
- preserve (re)assignment to `const` for runtime error - suppress `cascade` on `const`, as runtime behaviour is ill-defined
2017-05-08return `Error` from `minify()` (#1880)Alex Lam S.L
Have `minify()` return `Error` in `result.error` rather than throwing it.
2017-05-08support dumping AST (#1879)Alex Lam S.L
Re-order `AST_Binary` properties to make dump more readable. closes #769
2017-05-08support `minify()` output as AST (#1878)Alex Lam S.L
- `options.output.ast` (default `false`) - `options.output.code` (default `true`)
2017-05-06fix `unsafe` on `evaluate` of `reduce_vars` (#1870)Alex Lam S.L
Determine if variables with non-constant values can escape and be modified. fixes #1865
2017-05-06kill `opera` (#1869)Alex Lam S.L
2017-05-06enhance `collapse_vars` (#1862)Alex Lam S.L
- extend expression types - `a++` - `a=x;` - extend scan range - `for(init;;);` - `switch(expr){case expr:}` - `a = x; a = a || y;` - terminate upon `debugger;` closes #1821 fixes #27 fixes #315 fixes #1858
2017-05-02rename variables for better readability (#1863)Alex Lam S.L
2017-05-02improve literal return optimization (#1860)kzc
2017-04-30enforce `toplevel` on other compress options (#1855)Alex Lam S.L
Respect "funcs" and "vars" properly. fixes #1850
g' instead of using compile-time tricks....* emacs/guix-{init,profiles}.el.in: Rename to ... * emacs/guix-{init,profiles}.el: ... these. New files. Use 'guix-config'. * emacs/guix-config.el.in: New file. * emacs.am (nodist_lisp_DATA): Add it. Move them to ... (ELFILES): ... here. * .gitignore, configure.ac: Adjust accordingly. Mathieu Lirzin 2015-08-27Add 'guix graph'....* guix/scripts/graph.scm, tests/graph.scm, tests/guix-graph.sh, doc/images/coreutils-bag-graph.dot, doc/images/coreutils-graph.dot: New files. * Makefile.am (MODULES): Add guix/scripts/graph.scm. (SH_TESTS): Add tests/guix-graph.sh. (SCM_TESTS): Add tests/graph.scm. * doc.am (DOT_FILES, DOT_VECTOR_GRAPHICS): New variables. (EXTRA_DIST): Use them. (dist_infoimage_DATA): Use $(DOT_FILES). (pdf-local, info-local, ps-local): Likewise. * doc/guix.texi (Packages with Multiple Outputs): Add cross-reference to 'guix graph'. (Invoking guix gc): Likewise. (Invoking guix graph): New section. Ludovic Courtès 2015-07-15Add 'guix-daemon.service' file for systemd....* etc/guix-daemon.service.in: New file, provided by Ricardo Wurmus. * daemon.am (CLEANFILES): Add etc/guix-daemon.service. (systemdservicedir, nodist_systemdservice_DATA): New variables. (EXTRA_DIST): Add etc/guix-daemon.service.in. * doc/guix.texi (Binary Installation, Build Environment Setup): Mention 'guix-daemon.service'. Ludovic Courtès 2015-07-07Prevent Git from silently ignoring new files....* .gitignore: Ignore only specific files instead of the whole 'build-aux' directory. Mathieu Lirzin 2015-06-02Ignore man page build artifacts.David Thompson 2015-05-25Augment '.gitignore'.Ludovic Courtès 2015-05-09doc: Show both the "bare-bones" and the "desktop" configurations....* doc/guix.texi (System Installation): Add xref to "Using the Configuration System" instead of including one here. (Using the Configuration System): Remove first example, and include os-config-bare-bones.texi instead. Include os-config-desktop.texi as a second example. * doc.am (OS_CONFIG_EXAMPLES_TEXI): New variable. (BUILT_SOURCES, EXTRA_DIST, MAINTAINERCLEANFILES): Use it. (doc/os-config.texi): Remove. (doc/os-config-%.texi): New target. Ludovic Courtès 2015-03-25Rename 'guix substitute-binary' to 'guix substitute'....* guix/scripts/substitute-binary.scm: Rename to... * guix/scripts/substitute.scm: ... this. Adjust module name, entry point, comments, and help string accordingly. * nix/scripts/substitute-binary.in: Rename to... * nix/scripts/substitute.in: ... this. * pre-inst-env.in (NIX_SUBSTITUTERS): Adjust accordingly. * tests/substitute-binary.scm: Rename to... * tests/substitute.scm: ... this. Adjust references to (guix scripts substitute) accordingly. * guix/ui.scm (show-guix-help)[internal?]: Change "substitute-binary" to "substitute". * Makefile.am (MODULES, SCM_TESTS): Adjust to file renames. * daemon.am (nodist_pkglibexec_SCRIPTS): Likewise. * config-daemon.ac: Likewise. * guix/tests.scm (call-with-derivation-narinfo): Adjust comments and docstring. Ludovic Courtès 2015-01-07gnu: Add bootstrap binaries for 'armhf-linux'....* gnu/packages/bootstrap/armhf-linux/bash, gnu/packages/bootstrap/armhf-linux/mkdir, gnu/packages/bootstrap/armhf-linux/tar, gnu/packages/bootstrap/armhf-linux/xz: New files. * gnu-system.am (bootstrap_armhf_linuxdir, dist_bootstrap_armhf_linux_DATA) (nodist_bootstrap_armhf_linux_DATA): New variables. (DISTCLEANFILES): Add $(nodist_bootstrap_armhf_linux_DATA). (gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz): New target. * build-aux/download.scm (file-name->uri): Use newer date in URI for armhf-linux. * gnu/packages/bootstrap.scm (raw-build): Use "guile-2.0.11.tar.xz" on armhf-linux. (glibc-dynamic-linker, %bootstrap-coreutils&co, %bootstrap-binutils) (%bootstrap-glibc, %bootstrap-gcc): Add armhf-linux cases. * m4/guix.m4 (GUIX_SYSTEM_TYPE): Add armhf case. (GUIX_ASSERT_SUPPORTED_SYSTEM): Add armhf-linux to list of supported systems. * doc/guix.texi (GNU Distribution): Add armhf-linux to the list of supported systems. Mark H Weaver 2014-12-02emacs: Move profiles code to "guix-profiles.el.in"....* emacs/guix-base.el (guix-user-profile, guix-default-profile, guix-current-profile, guix-profile-prompt, guix-set-current-profile): Move to... * emacs/guix-init.el.in (guix-default-profile): Move to... * emacs/guix-profiles.el.in: ... here. New file. * configure.ac (AC_CONFIG_FILES): Add "emacs/guix-profiles.el". * emacs.am (nodist_lisp_DATA): Likewise. Alex Kost 2014-09-03Add Emacs user interface....* configure.ac (emacsuidir): New variable. (AC_CONFIG_FILES): Add 'emacs/guix-init.el', 'emacs/guix-helper.scm'. * Makefile.am: Include 'emacs.am'. * emacs.am: New file. * doc/emacs.texi: New file. * doc/guix.texi: Include 'emacs.texi'. * emacs/guix-backend.el: New file. * emacs/guix-base.el: New file. * emacs/guix-helper.scm.in: New file. * emacs/guix-history.el: New file. * emacs/guix-info.el: New file. * emacs/guix-init.el.in: New file. * emacs/guix-list.el: New file. * emacs/guix-main.scm: New file. * emacs/guix-utils.el: New file. * emacs/guix.el: New file. Alex Kost 2014-06-13Separate package description translations from string translations....* po/packages/LINGUAS, po/packages/Makevars, po/packages/POTFILES.in: New files. * po/guix/Makevars (DOMAIN): Change to "guix". (XGETTEXT_OPTIONS): Remove "--keyword=synopsis --keyword=description". * po/guix/POTFILES.in: Remove gnu/packages/*.scm. * configure.ac: Change to gettext 0.18.3. Produce po/packages/Makefile.in. * Makefile.am (SUBDIRS): Add po/packages. * guix/ui.scm (%package-text-domain): New variable. (P_): New procedure. (package->recutils): Use 'P_' instead of '_'. * guix/scripts/package.scm (find-packages-by-description): Use 'P_' instead of 'gettext'. Ludovic Courtès 2014-06-13Move gettext files to 'po/guix'....* po: Rename to... * po/guix: ... this. * po/guix/Makevars (subdir, top_builddir): Adjust accordingly. * configure.ac: Change 'po/Makefile.in' to 'po/guix/Makefile.in'. * Makefile.am (SUBDIRS): Change 'po' to 'po/guix'. Ludovic Courtès 2014-02-16Update .gitignore for Guile 2.0.9 bootstrap binaries....* .gitignore: Change version number in ignored Guile bootstrap binaries from 2.0.7 to 2.0.9. Mark H Weaver 2014-01-24Add 'guix offload' as a daemon build hook....* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_BUILD_HOOK): New macro. (options): Add '--no-build-hook'. (parse_opt): Handle it. (main)[HAVE_DAEMON_OFFLOAD_HOOK]: Set 'useBuildHook' by default. Set $NIX_BUILD_HOOK to our offload hook unless otherwise specified. [!HAVE_DAEMON_OFFLOAD_HOOK]: Clear 'useBuildHook'. * pre-inst-env.in: Set and export NIX_BUILD_HOOK. * nix/scripts/offload.in, guix/scripts/offload.scm: New files. * guix/ui.scm (show-guix-help)[internal?]: Add "offload". * config-daemon.ac: Call 'GUIX_CHECK_UNBUFFERED_CBIP'. Instantiate 'nix/scripts/offload'. Set 'BUILD_DAEMON_OFFLOAD' conditional, and optionally define 'HAVE_DEAMON_OFFLOAD_HOOK' cpp macro. * daemon.am (nodist_pkglibexec_SCRIPTS)[BUILD_DAEMON_OFFLOAD]: Add it. * Makefile.am (MODULES)[BUILD_DAEMON_OFFLOAD]: Add 'guix/scripts/offload.scm'. (EXTRA_DIST)[!BUILD_DAEMON_OFFLOAD]: Likewise. * m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): New macro. * doc/guix.texi (Setting Up the Daemon): Move most of the body to... (Build Environment Setup): ... this. New subsection. (Daemon Offload Setup): New subsection. Ludovic Courtès 2013-12-20daemon: Implement signed archive import/export....* guix/scripts/authenticate.scm, nix/scripts/guix-authenticate.in, tests/signing-key.pub, tests/signing-key.sec: New files. * po/POTFILES.in: Add 'guix/scripts/authenticate.scm'. * guix/store.scm (dump-port): New procedure. (process-stderr): Add 'user-port' optional parameter. Handle the %STDERR-WRITE and %STDERR-READ cases as expected. (import-paths, export-path, export-paths): New procedures. * tests/store.scm ("export/import several paths", "import corrupt path"): New tests. * Makefile.am (MODULES): Add 'guix/scripts/authenticate.scm'. (EXTRA_DIST): Add 'tests/signing-key.{pub,sec}'. * daemon.am (libstore_a_CPPFLAGS)[-DNIX_CONF_DIR]: Change 'NIX_CONF_DIR' to .../guix. Change 'OPENSSL_PATH' to 'guix-authenticate'. * config-daemon.ac: Instantiate 'nix/scripts/guix-authenticate'. * nix/nix-daemon/guix-daemon.cc (main): Augment $PATH to include 'settings.nixLibexecDir'. * test-env.in: Export 'NIX_CONF_DIR' and 'NIX_LIBEXEC_DIR'. Populate $NIX_CONF_DIR. Ludovic Courtès 2013-12-04Augment 'gitignore'.Ludovic Courtès 2013-11-03gnu: add bootstrap support for mips64el-linux using the MIPS N32 ABI....* .gitignore: Add entry for bootstrap/mips64el-linux/guile-2.0.9.tar.xz. * gnu-system.am (bootstrap_mips64el_linuxdir, dist_bootstrap_mips64el_linux_DATA, nodist_bootstrap_mips64el_linux_DATA): New variables. (DISTCLEANFILES): Add $(nodist_bootstrap_mips64el_linux_DATA). (gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): New target. * build-aux/download.scm (file-name->uri): Adapt to the newer mips64el-linux bootstrap tarballs. * gnu/packages/bootstrap.scm (%bootstrap-guile, %bootstrap-coreutils&co, %bootstrap-binutils, %bootstrap-glibc, %bootstrap-gcc): Adapt to the newer mips64el-linux bootstrap tarballs. * gnu/packages/bootstrap/mips64el-linux/bash: * gnu/packages/bootstrap/mips64el-linux/mkdir: * gnu/packages/bootstrap/mips64el-linux/tar: * gnu/packages/bootstrap/mips64el-linux/xz: New files. Mark H Weaver 2013-09-23Add 'guix-register'....* nix/guix-register/guix-register.cc, tests/guix-register.sh: New files. * Makefile.am (SH_TESTS)[BUILD_DAEMON]: Add tests/guix-register.sh. * daemon.am (sbin_PROGRAMS, guix_register_SOURCES, guix_register_CPPFLAGS, guix_register_LDADD): New variables. * test-env.in: Export 'storedir', 'prefix', 'datarootdir', 'datadir', and 'localstatedir'. Ludovic Courtès 2013-07-07doc: Add a "Boostrapping" section....* doc/guix.texi (Package Modules): New node, with material formerly under "GNU Distribution". (Bootstrapping): New node. * Makefile.am (EXTRA_DIST): Add doc/images/bootstrap-graph.dot and doc/images/bootstrap-graph.eps. (infoimagedir, dist_infoimage_DATA, DOT_OPTIONS): New variable. (.dot.png, .dot.eps, doc/guix.pdf, doc/guix.info, doc/guix.ps): New targets. * doc/images/bootstrap-graph.dot: New file. Ludovic Courtès 2013-06-12Ignore /po/Makevars.templateKonrad Hinsen 2013-04-03Add preliminary binary substituter....* guix/scripts/substitute-binary.scm: New file. * Makefile.am (MODULES): Add it. * nix/scripts/substitute-binary.in: New file. * config-daemon.ac: Produce nix/scripts/substitute-binary. * daemon.am (nodist_pkglibexec_SCRIPTS): Add nix/scripts/substitute-binary. * guix/store.scm (substitutable-path-info): Use the `query-substitutable-path-infos' RPC. * nix/nix-daemon/guix-daemon.cc (main): Honor `NIX_SUBSTITUTERS'. * pre-inst-env.in: Set `NIX_SUBSTITUTERS'. * test-env.in: Leave `NIX_SUBSTITUTERS' unchanged. Set `GUIX_BINARY_SUBSTITUTE_URL, and create $NIX_STATE_DIR/substituter-data. Run `guix-daemon' within `./pre-inst-env'. * tests/store.scm ("substitute query"): New test. Ludovic Courtès 2013-02-16Replace individual scripts with master 'guix' script....* scripts/guix.in: New script. * Makefile.am (bin_SCRIPTS): Add 'scripts/guix'. Remove 'guix-build', 'guix-download', 'guix-import', 'guix-package', and 'guix-gc'. (MODULES): Add 'guix/scripts/build.scm', 'guix/scripts/download.scm', 'guix/scripts/import.scm', 'guix/scripts/package.scm', and 'guix/scripts/gc.scm'. * configure.ac (AC_CONFIG_FILES): Add 'scripts/guix'. Remove 'guix-build', 'guix-download', 'guix-import', 'guix-package', and 'guix-gc'. * guix-build.in, guix-download.in, guix-gc.in, guix-import.in, guix-package.in: Remove shell script boilerplate. Move to guix-COMMAND.in to guix/scripts/COMMAND.scm. Rename module from (guix-COMMAND) to (guix scripts COMMAND). Change "guix-COMMAND" to "guix COMMAND" in usage help string. * pre-inst-env.in: Add "@abs_top_builddir@/scripts" to the front of $PATH. Export $GUIX_UNINSTALLED. * tests/guix-build.sh, tests/guix-daemon.sh, tests/guix-download.sh, tests/guix-gc.sh, tests/guix-package.sh: Use "guix COMMAND" instead of "guix-COMMAND". * doc/guix.texi: Replace all occurrences of "guix-COMMAND" with "guix COMMAND". * po/POTFILES.in: Update. Mark H Weaver 2013-01-20Augment `.gitignore'.Ludovic Courtès 2013-01-18distro: Change the module name space to (gnu ...)....* distro: Rename to... * gnu: ... this. Update module names accordingly. * Makefile.am: Adjust accordingly. * po/POTFILES.in: Likewise. * distro.scm: Search for files under /gnu/packages instead of /distro/packages. * gnu/packages/base.scm (ld-wrapper-boot3): Likewise. Ludovic Courtès