summaryrefslogtreecommitdiff
path: root/am
Commit message (Collapse)AuthorAgeFilesLines
* Add 'bytevector-slice'.Ludovic Courtès2023-01-141-0/+1
| | | | | | | | | * module/rnrs/bytevectors/gnu.scm: New file. * am/bootstrap.am (SOURCES): Add it. * libguile/bytevectors.c (scm_bytevector_slice): New function. * libguile/bytevectors.h (scm_bytevector_slice): New declaration. * test-suite/tests/bytevectors.test ("bytevector-slice"): New tests. * doc/ref/api-data.texi (Bytevector Slices): New node.
* Rework bootstrap to be reproducibleAndy Wingo2022-02-011-74/+350
| | | | | | | | | | | | | | | | | | * configure.ac: * Makefile.am (SUBDIRS): Replace bootstrap/ with stage0, stage1, and stage2. * am/bootstrap.am: Include all files and all rules. * meta/build-env.in (GUILE_AUTO_COMPILE): Always turn off auto-compilation. Take a GUILE_BOOTSTRAP_STAGE argument, which can be stage0, stage1, stage2, or unset. Adapt the load-compiled path accordingly. * meta/uninstalled-env.in: Include .go files from stage2. * module/Makefile.am: Rework to use boostrap.am. * module/system/base/optimize.scm (available-optimizations): Punt the inlinable-exports machinery to -O2. * stage0/Makefile.am: * stage1/Makefile.am: * stage2/Makefile.am: New files.
* Add new pass to optimize away return value count checksAndy Wingo2021-11-151-0/+1
| | | | | | | | | * module/language/cps/return-types.scm: New file. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add new file. * module/language/tree-il/compile-cps.scm (sanitize-meta): Strip "noreturn" and "return-type" properties -- these should only be computed by Guile.
* Add support for recording inlinable module exportsAndy Wingo2021-05-111-0/+1
| | | | | | | | | | | * module/language/tree-il/inlinable-exports.scm: New module. * am/bootstrap.am: * module/Makefile.am: * module/language/tree-il/optimize.scm (make-optimizer): * module/system/base/optimize.scm (available-optimizations): Wire up new module. * module/ice-9/boot-9.scm (module): Add inlinable-exports field. (define-module*): Add #:inlinable-exports kwarg.
* Add pass to resolve free toplevel references in declarative modulesAndy Wingo2021-05-111-0/+1
| | | | | | | | | | * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): * module/language/tree-il/optimize.scm (make-optimizer): Wire up the new pass. * module/language/tree-il/resolve-free-vars.scm: New pass. * module/system/base/optimize.scm (available-optimizations): Enable new pass at -O1.
* New pass: elide-arity-checksAndy Wingo2021-04-211-0/+1
| | | | | | | | | | * module/language/cps/elide-arity-checks.scm: New file. Elides argument count checks for known callers. * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Add new file. * module/language/cps/optimize.scm (optimize-first-order-cps): * module/system/base/optimize.scm (available-optimizations): Add new pass.
* Read-in-scheme replaces boot "read" definitionAndy Wingo2021-03-031-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of defining a separate module, given that "read" calls are quite all over the place, we're just going to replace the boot "read" binding with read.scm. This way, we'll be able to remove support for reader options in the boot reader, as it will only ever be used for a finite set of files. * NEWS: Update. * module/Makefile.am (ice-9/boot-9.go): Depend on read.scm. (SOURCES): * am/bootstrap.am (SOURCES): Don't build a ice-9/read.go, as we include it. * module/ice-9/boot-9.scm (read-syntax): Define here, as "include" now uses it. (read-hash-procedures, read-hash-procedure, read-hash-extend): New procedures. Will replace C variants. (read, read-syntax): Include read.scm to define these. * module/ice-9/psyntax-pp.scm (include): Regenerate. * module/ice-9/psyntax.scm (include): Use read-syntax, so we get better source information. * module/ice-9/read.scm (let*-values): New local definition, to avoid loading srfi-11. (%read): Use list->typed-array instead of u8-list->bytevector. * module/language/scheme/spec.scm: Remove (ice-9 read) import; read-syntax is there in the boot environment
* Read Scheme via read-syntaxAndy Wingo2021-02-251-0/+1
| | | | | | * module/language/scheme/spec.scm: Use read-syntax. * test-suite/tests/dwarf.test: Adapt expected source locations. * am/bootstrap.am (SOURCES): Add ice-9/read.
* Replace libltdl with raw dlopen, dlsymAndy Wingo2021-02-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * NEWS: Update. * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Add system/foreign-library.scm. * configure.ac: Replace ltdl check with -ldl check. * libguile/dynl.c: Rewrite to just expose core dlopen / dlsym / etc to a helper Scheme module. (scm_dynamic_link, scm_dynamic_pointer, scm_dynamic_function) (scm_dynamic_object_p, scm_dynamic_call): Rewrite in terms of (system foreign-library). * libguile/extensions.c (load_extension): Avoid scm_dynamic_call. * module/system/foreign-library.scm: New file. * module/oop/goops.scm (<dynamic-object>): Hackily export <foreign-library> instead of a class here. * doc/ref/api-foreign.texi (Foreign Function Interface): Rewrite to only document the new interfaces. Eventually we will deprecate dynamic-link and friends. * doc/ref/guile.texi (API Reference): Move Foreign Objects after Foreign Function Interface. Seems there should be some closer relationship but this will do for now. * doc/ref/tour.texi (Putting Extensions into Modules): * doc/ref/libguile-parallel.texi (Parallel Installations): Update for rename of Modules and Extensions to Foreign Extensions. * libguile/deprecated.h: * libguile/deprecated.c (scm_dynamic_unlink): Deprecate. * libguile/guile.c: Remove ltdl include. * test-suite/tests/foreign.test: Update tests to use new API, and update error expectations.
* Add new pass to optimize branch chains to table dispatchAndy Wingo2020-08-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | * module/language/cps/switch.scm: New pass. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add switch.scm. * module/system/base/optimize.scm (available-optimizations): * module/language/cps/optimize.scm (optimize-first-order-cps): Run switch optimization at level 2. * libguile/hash.c (JENKINS_LOOKUP3_HASHWORD2): Add note regarding cross-compilation. * module/language/cps/graphs.scm (intmap-select): New definition. * module/language/cps/utils.scm (compute-singly-referenced-labels): Move here, from various places. Doesn't take a body intset argument. * module/language/cps/contification.scm: * module/language/cps/closure-conversion.scm: * module/language/cps/simplify.scm: Use compute-singly-referenced-labels from utils. * module/language/cps/effects-analysis.scm (annotation->memory-kind*): (annotation->memory-kind): Add symbol annotation cases.
* Punt more CPS compiler until later in bootstrapAndy Wingo2020-05-131-2/+3
| | | | * am/bootstrap.am (SOURCES): Punt CPS compiler until later.
* Punt CPS compiler to end of bootstrapAndy Wingo2020-05-121-34/+34
| | | | * am/bootstrap.am (SOURCES): Compile the CPS compiler last.
* Slight tweaks to bootstrap orderAndy Wingo2020-05-111-6/+6
| | | | | * am/bootstrap.am (SOURCES): Compile boot-9 and compile-bytecode earlier. Put intmap, intset, graphs, and vlist until later.
* guilec can be parameterized by GUILE_OPTIMIZATIONS, defaults to -O2Andy Wingo2020-05-111-3/+4
| | | | * am/guilec (GUILE_OPTIMIZATIONS): New var.
* Wire up simplified warning levels in "guild compile"Andy Wingo2020-05-082-2/+2
| | | | | | | | | | | | * am/guilec (GUILE_WARNINGS): * am/bootstrap.am (GUILE_WARNINGS): Explictly default to -W1. * bootstrap/Makefile.am (GUILE_WARNINGS): Set to -Wnone, as the meaning of "no -W flags" has changed to be effectively -W1. * module/scripts/compile.scm (%options): Adapt to parse -Wnone, -W2, and so on. (parse-args): Default to (default-warning-level). (show-warning-help): Add more warning help. (compile): Pass #:warning-level.
* Add baseline compilerAndy Wingo2020-05-041-0/+1
| | | | | | * module/language/tree-il/compile-bytecode.scm: New file. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add new file.
* Remove unused (language tree-il canonicalize)Andy Wingo2020-05-041-1/+0
| | | | | | * module/language/tree-il/canonicalize.scm: Remove. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Update.
* Add eta-expansion pass after pevalAndy Wingo2020-01-151-1/+2
| | | | | | | | * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Add eta-expand.scm. * module/language/tree-il/eta-expand.scm: New file. * module/language/tree-il/optimize.scm (optimize) (tree-il-optimizations): Add eta-expansion at level 2.
* Add letrectify tree-il passAndy Wingo2019-08-181-2/+2
| | | | | | | | * module/language/tree-il/letrectify.scm: New pass, not wired up yet. Adds lexical definitions for declarative top-level definitions, for better inlining and contification within a compilation unit. * am/bootstrap.am: * module/Makefile.am: Add to build.
* Split graph utilities out of (language cps utils)Andy Wingo2019-08-131-1/+2
| | | | | | | * module/language/cps/graphs.scm: New file. * module/language/cps/utils.scm: Re-export functions from graphs.scm. * am/bootstrap.am: * module/Makefile.am: Add to build.
* Emit instrument-loop in loops.Andy Wingo2018-07-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Handle renamve of handle-interrupts.scm to loop-instrumentation.scm. * libguile/jit.h (SCM_JIT_COUNTER_ENTRY_INCREMENT): Rename from SCM_JIT_COUNTER_CALL_INCREMENT. * libguile/vm-engine.c (instrument-entry): Rename from instrument-call. * module/language/cps/compile-bytecode.scm (compile-function): Add handle-interrupts code before calls and returns. Compile the "instrument-loop" primcall to an "instrument-loop" instruction and a "handle-interrupts" instruction. (lower-cps): Adapt to add-loop-instrumentation name change. * module/language/cps/loop-instrumentation.scm: Rename from handle-interrupts.scm and just add "instrument-loop" primcalls in loops. The compiler will add handle-interrupts primcalls as appropriate. * module/system/vm/assembler.scm (<jit-data>): New data type, for emitting embedded JIT data. (<meta>): Add field for current JIT data. (make-meta): Initialize current JIT data. (emit-instrument-entry*, emit-instrument-loop*): New instruction emitters that reference the current JIT data. (end-program): Now that all labels are known, arrange to serialize the JIT data. (link-data): Reserve space for JIT data, and add relocs to initialize the "start" / "end" fields.
* Add (system base optimize) moduleAndy Wingo2018-01-051-0/+1
| | | | | | | | | | | | | * module/system/base/optimize.scm: New module. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add new module. * module/language/tree-il/optimize.scm (tree-il-optimizations): Rename from tree-il-default-optimization-options. Directly specify the optimization level at which a pass should be enabled. * module/language/cps/optimize.scm (cps-optimizations): Likewise, rename from cps-default-optimization-options. * module/scripts/compile.scm (%options, show-optimization-help): Adapt to use new module.
* $throw is a new kind of CPS termAndy Wingo2018-01-031-2/+1
| | | | | | * module/language/cps.scm ($throw): New term type that doesn't have a continuation. Adapt all callers. Remove now-unneeded "prune-bailouts" pass.
* Remove inline-constructors passAndy Wingo2017-12-271-1/+0
| | | | | | | | | | * module/language/cps/constructors.scm: Remove pass, as "list" and "vector" are now inlined by CPS conversion, and nothing in the optimizer reifies "list" or "vector" primcalls. * module/language/cps/optimize.scm (optimize-higher-order-cps) (cps-default-optimization-options): * am/bootstrap.am: * module/Makefile.am: Remove references to inline-constructors pass.
* Inline "elide-values" optimization into CPS conversionAndy Wingo2017-12-271-1/+0
| | | | | | | | | | * module/language/tree-il/compile-cps.scm (adapt-arity, convert): Avoid reifying "values" primcalls unless necessary. Effectively inlines the "elide-values" optimization into CPS conversion. * module/language/cps/elide-values.scm: Remove, as it's now unneeded. * module/language/cps/optimize.scm (optimize-higher-order-cps): * module/Makefile.am: * am/bootstrap.am: Remove elide-values references.
* Refactor lowering of Tree-IL primcalls to CPSAndy Wingo2017-12-271-1/+1
| | | | | | | | | | | | | | | * module/language/tree-il/cps-primitives.scm: New file, replacing (language cps primitives). Lists known primitives and their relation to Tree-IL explicitly, instead of assuming that any Tree-IL primcall that shares a name with a bytecode instruction is a CPS primcall. * module/language/cps/verify.scm: Remove use of (language cps primitives) and primcall arity checking. Would be nice to add this back at some point. * module/language/tree-il/compile-cps.scm (convert): Refactor to use new tree-il-primitive->cps-primitive+nargs+nvalues helper. * module/Makefile.am: * am/bootstrap.am: Adapt.
* Add integer devirtualization pass.Andy Wingo2017-11-241-0/+1
| | | | | | | * module/language/cps/devirtualize-integers.scm: New pass. * module/language/cps/optimize.scm: * module/Makefile.am: * am/bootstrap.am: Add new pass.
* Add (system base types internal).Andy Wingo2017-10-251-1/+2
| | | | | | | | | * module/system/base/types/internal.scm: New file, extracted from (system base types). * module/system/base/types.scm: Use (system base types internal) and adapt to %tc1-pair, %tc2-inum, and %tc3-heap-object name changes. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add new file.
* Add handle-interrupts inst and compiler passAndy Wingo2016-11-161-0/+1
| | | | | | | | | | | | * libguile/vm-engine.c (vm_engine): Remove initial VM_HANDLE_INTERRUPTS call; surely our caller already handled interrupts. Add handle-interrupts opcode. * am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): Add handle-interrupts.scm. * module/system/vm/assembler.scm (system): * module/language/cps/compile-bytecode.scm (compile-function): (lower-cps): Add handle-interrupts support. * module/language/cps/handle-interrupts.scm: New file.
* Add meta/build-envAndy Wingo2016-07-102-3/+3
| | | | | | | | | | | | | * meta/build-env.in: New file which sets up an environment that does not inherit GUILE_LOAD_PATH / GUILE_LOAD_COMPILED_PATH (unless cross-compiling). * doc/ref/Makefile.am (autoconf-macros.texi): * libguile/Makefile.am (snarf2checkedtexi): * module/Makefile.am (ice-9/psyntax-pp.go): * test-suite/standalone/Makefile.am (GUILE_INSTALL_LOCALE): * am/bootstrap.am (.scm.go): * am/guilec (.scm.go): Use build-env. * configure.ac: Create build-env.
* Add -Wmacro-use-before-definitionAndy Wingo2016-06-251-1/+1
| | | | | | | | | | | | | * module/ice-9/boot-9.scm (%auto-compilation-options): * am/guilec (GUILE_WARNINGS): Add -Wmacro-use-before-definition. * module/language/tree-il/analyze.scm (unbound-variable-analysis): Use match-lambda. (<macro-use-info>, macro-use-before-definition-analysis): New analysis. * module/system/base/message.scm (%warning-types): Add macro-use-before-definition warning type. * module/language/tree-il/compile-cps.scm (%warning-passes): Add support for macro-use-before-definition.
* Load port bindings in separate (ice-9 ports) moduleAndy Wingo2016-04-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * module/ice-9/ports.scm: New file. * am/bootstrap.am (SOURCES): Add ice-9/ports.scm. * libguile/fports.c (scm_init_ice_9_fports): New function. (scm_init_fports): Arrange for scm_init_ice_9_fports to be called via load-extension, and load snarfed things there. Move open-file definition early, to allow ports to bootstrap. * libguile/ioext.c (scm_init_ice_9_ioext): New function. (scm_init_ioext): Similarly, register scm_init_ice_9_ioext as an extension. * libguile/ports.c (scm_set_current_input_port) (scm_set_current_output_port, scm_set_current_error_port): Don't define Scheme bindings; do that in Scheme. * libguile/ports.c (scm_i_set_default_port_encoding): (scm_i_default_port_encoding, scm_i_default_port_conversion_handler): (scm_i_set_default_port_conversion_handler): Since we now init encoding early, remove the "init" flags on these encoding/strategy vars. (scm_init_ice_9_ports): New function. (scm_init_ports): Register scm_init_ice_9_ports extension, and define some bindings needed by the bootstrap. * module/Makefile.am (SOURCES): Add ice-9/ports.scm. * module/ice-9/boot-9.scm: Remove code that's not on the boot path, moving it to ice-9/ports.scm. At the end, load (ice-9 ports). * module/ice-9/psyntax.scm (include): Use close-port instead of close-input-port. * module/ice-9/psyntax-pp.scm (include): Regenerate.
* Distribute prebuilt bootstraps for common hostsAndy Wingo2016-01-291-0/+153
| | | | | | | | | | | | | | | | | * am/bootstrap.am: New file, factored out of bootstrap/Makefile.am. * bootstrap/Makefile.am: Use bootstrap.am. * prebuilt/Makefile.am: * prebuilt/i686-pc-linux-gnu/Makefile.am: * prebuilt/mips-unknown-linux-gnu/Makefile.am: * prebuilt/x86_64-unknown-linux-gnu/Makefile.am: New files. * configure.ac: Output the prebuilt/ makefiles. * Makefile.am: Descend into prebuilt/ when making dist. * meta/uninstalled-env.in: Arrange to put prebuilt/ in the beginning of the GUILE_LOAD_COMPILED_PATH. Also fix a case where bootstrap/ wasn't being correctly added to the load path.
* Merge branch 'bt/elisp'BT Templeton2012-03-051-5/+14
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: am/guilec libguile/_scm.h libguile/vm-i-scheme.c module/language/elisp/compile-tree-il.scm module/language/elisp/runtime.scm module/language/elisp/runtime/macros.scm module/language/tree-il/compile-glil.scm module/language/tree-il/primitives.scm
| * load boot.elBT Templeton2011-11-221-5/+11
| | | | | | | | | | | | | | * am/guilec: Add support for compiling Elisp files. * module/Makefile.am: New variable ELISP_SOURCES. * module/language/elisp/boot.el: New file. * module/language/elisp/spec.scm: Load boot.el.
* | Allow $GUILE_FOR_BUILD to use its own environment when cross-compiling.Ludovic Courtès2011-11-231-2/+5
|/ | | | | | | | | * am/guilec (.scm.go): Use `-L' to specify the search path. * module/Makefile.am (ice-9/psyntax-pp.go): Likewise. * meta/uninstalled-env.in (top_builddir): Leave $GUILE_LOAD_PATH, $GUILE_SYSTEM_PATH, and $GUILE_SYSTEM_EXTENSIONS_PATH unchanged when cross-compiling.
* Run `guild compile' with `--target=$(host)'.Ludovic Courtès2011-11-221-1/+1
| | | | * am/guilec (.scm.go): Run `guild compile' with `--target=$(host)'.
* rename `guile-tools' to `guild'Andy Wingo2011-05-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac: Look for ln -s. Write out `guild' instead of `guile-tools'. * meta/Makefile.am (install-data-hook): Link the installed `guild' to the backward-compatible `guile-tools' name. (bin_SCRIPTS, EXTRA_DIST): Fix up for guild change. * meta/guild.in: Moved here from `guile-tools.in'. * doc/ref/Makefile.am (autoconf-macros.texi): * doc/ref/api-evaluation.texi (Compilation): * doc/ref/autoconf.texi (Autofrisk, Using Autofrisk): * doc/ref/mod-getopt-long.texi (getopt-long Reference): * doc/ref/tools.texi (Miscellaneous Tools, Executable Modules): Minimal doc update. * .gitignore: * am/guilec (.scm.go): * libguile/Makefile.am (snarf2checkedtexi): * module/Makefile.am (ice-9/psyntax-pp.go): Update makefiles, etc. * module/scripts/README: * module/scripts/lint.scm: * module/scripts/list.scm: Update commentaries.
* Inline the effect of am/pre-inst-guileNeil Jerram2011-03-252-34/+1
| | | | | | | | | | | | | | | | | It's just one variable definition, and in my opinion it confuses, rather than helps, the overall build picture to have two names (preinstguile and meta/guile) for the same thing. * am/Makefile.am (am_frags): Remove pre-inst-guile. * am/pre-inst-guile: Deleted. * doc/ref/Makefile.am: Don't include am/pre-inst-guile. ($(snarf_doc).am, $(snarf_doc).texi): Expand $(preinstguile). * module/Makefile.am (ice-9/psyntax-pp.scm.gen): Don't include am/pre-inst-guile. (ice-9/psyntax-pp.scm.gen): Expand $(preinstguile).
* Remove unused definition of preinstguiletoolNeil Jerram2011-03-251-4/+3
| | | | * am/pre-inst-guile (preinstguiletool): Removed.
* Compile with `-Wformat'.Ludovic Courtès2010-10-101-1/+1
| | | | * am/guilec (GUILE_WARNINGS): Add `-Wformat'.
* Create tags for Scheme sourceNeil Jerram2010-09-121-0/+1
| | | | | | | * am/guilec: Set ETAGS_ARGS. * module/Makefile.am: When adding sources to EXTRA_DIST, add them to ETAGS_ARGS too.
* Revert "don't autocompile while snarfing"Andy Wingo2010-08-271-1/+1
| | | | | This reverts commit 176ee5c82a9e6c775722cfe96711f2a02cdb7672, which added autocomp inhibitions in the wrong place.
* don't autocompile while snarfingAndy Wingo2010-08-271-1/+1
| | | | | * am/snarf (GUILE_SNARF): Don't autocompile while snarfing, as we probably don't have a compiled Guile at this point.
* Check for go/scm mtime ordering rather than equality.Ludovic Courtès2010-07-261-18/+7
| | | | | | | | | | | | | | * am/guilec (install-data-hook): Remove. (guile_install_go_files): New variable. ($(guile_install_go_files)): New dependency. * libguile/load.c (compiled_is_fresh): Check for ordering of STAT_SOURCE and STAT_COMPILED, not equality. * module/ice-9/boot-9.scm (load): Ditto. * module/system/base/compile.scm (call-with-output-file/atomic): Don't set the timestamp of TEMPLATE.
* Use AM_SILENT_RULES to pare down build output, ignore auto-generated filesNo Itisnt2010-06-182-1/+12
| | | | | | | | | | | * .gitignore: Ignore extra gnulib headers. * am/snarf: Silent SNARF command * am/guilec: Silent GUILEC command * configure.ac: Use AM_SILENT_RULES when available * guile-readline/Makefile.am: * libguile/Makefile.am: * srfi/Makefile.am: * test-suite/standalone/Makefile.am: Silence snarf output
* Compile with `-Warity-mismatch'.Ludovic Courtès2009-11-081-1/+3
| | | | | * am/guilec (GUILE_WARNINGS): New variable; add `-Warity-mismatch'. (.scm.go): Use it.
* Compile Guile modules with `-Wunbound-variable'.Ludovic Courtès2009-10-221-1/+3
| | | | * am/guilec (.scm.go): Compile with `-Wunbound-variable'.
* Change Guile license to LGPLv3+Neil Jerram2009-06-173-18/+18
| | | | | | | | | | (Not quite finished, the following will be done tomorrow. module/srfi/*.scm module/rnrs/*.scm module/scripts/*.scm testsuite/*.scm guile-readline/* )
* propagate timestamps to installed .scm and .go filesAndy Wingo2009-06-041-0/+19
| | | | | * am/guilec: Propagate timestamps of .scm and .go files on to their installed variants. Helps the is-the-.go-file-stale? code do its job.