#
Chapter 6
`cm.ss`: Compilation Manager

`(make-compilation-manager-load/use-compiled-handler``)` PROCEDURE

Returns a procedure suitable as a value for the `current-load/use-compiled` parameter (see section 7.4.1.6 in PLT MzScheme: Language Manual). The returned procedure automatically compiles source files to a `.zo` file if

- the file is expected to contain a module (i.e., the second argument to the handler is a symbol);

- the value of `current-eval`, `current-load`, and `current-namespace` is the same as when `make-compilation-manager-load/use-compiled-handler` was called; and

- either the source file is newer than the `.zo` file in the `compiled` subdirectory, or no `.dep` file exists next to the `.zo` file, or the version in the `.dep` does not match the result of `(`version`)`, or one of the files listed in the `.dep` file has a timestamp newer than the one recorded in the `.dep` file.

After the handler procedure compiles the `.zo` file, it creates a corresponding `.dep` file that lists the current version, plus the timestamp for every file that is `require`d by the module in the compiled file (including `require-for-syntax`es).

The handler caches timestamps when it checks `.dep` files, and the cache is maintained across calls to the same handler. The cache is not consulted to compare the immediate source file to its `.zo` file, which means that the caching behavior is consistent with the caching of the default module name resolver (see section 5.4 in PLT MzScheme: Language Manual).

`(managed-compile-zo``` `file``)` PROCEDURE

Compiles the given module source file to a `.zo`, installing a compilation-manager handler while the file is compiled, and creating a `.dep` file to record the timestamps of immediate files used to compile the source (i.e., files `require`d in the source, including `require-for-syntax`es).

`(manager-trace-handler``` `proc``` [`procedure`]`)`

A parameter whose value is a procedure to return a trace string for compilation-manager actions. The procedure receives a single string argument, and its result is ignored.

`(trust-existing-zos``` `on?``` [`procedure`]`)`

A parameter that is intended for use by `Setup PLT` when installing with pre-built `.zo` files. It causes a compilation-manager load/use-compiled handler to ``touch'' out-of-date `.zo` files instead of re-compiling from source.