1.5 API for Parallel Builds
The
setup/parallel-build library provides the parallel-compilation
functionality of
raco setup and
raco make.
Both parallel-compile-files and parallel-compile log messages
to the topic 'setup/parallel-build at the level 'info. These
messages are instances of a parallel-compile-event prefab structure:
(struct parallel-compile-event (worker event) #:prefab)
The
parallel-compile-files utility function is used by
raco make to
compile a list of paths in parallel. The optional
#:worker-count argument specifies the number of compile workers to spawn during
parallel compilation. The callback,
handler, is called with the symbol
'done as the
handler-type argument for each successfully compiled file,
'output when a
successful compilation produces stdout/stderr output,
'error when a
compilation error has occured, or
'fatal-error when a unrecoverable
error occurs. The other arguments give more information for each status update.
The return value is
(void) if it was successful, or
#f if there was an error.
| (parallel-compile-files |
| source-files |
| #:worker-count 4 |
| #:handler (lambda (type work msg out err) |
| (match type |
| ['done (when (verbose) (printf " Made ~a\n" work))] |
| ['output (printf " Output from: ~a\n~a~a" work out err)] |
| [else (printf " Error compiling ~a\n~a\n~a~a" |
| work |
| msg |
| out |
| err)]))) |
|
| worker-count : non-negative-integer? |
|
|
| collects-tree : (listof any/c) |
The
parallel-compile function is used by
raco setup to
compile collections in parallel. The
worker-count argument
specifies the number of compilation workers to spawn during parallel
compilation. The
setup-fprintf and
append-error
functions communicate intermediate compilation results and errors. The
collects-tree argument is a compound data structure containing
an in-memory tree representation of the collects directory.
When the exn argument to append-error is a pair of
strings, the first string is a long form of the error message, and the
second string is a short form (omitting evaluation context
information, for example).
Changed in version 6.1.1.8 of package base: Changed append-error to allow
a pair of error strings.