On this page:

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 worker field is the index of the worker that the created the event. The event field is a compile-event as documented in make-compilation-manager-load/use-compiled-handler.


(parallel-compile-files list-of-files 
  [#:worker-count worker-count 
  #:handler handler]) 
  (or/c void? #f)
  list-of-files : (listof path-string?)
  worker-count : exact-positive-integer? = (processor-count)
  handler : 
(->i ([worker-id exact-integer?]
      [handler-type symbol?]
      [path path-string?]
      [msg string?]
      [out string?]
      [err string?])
 = void
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.

  #: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"


(parallel-compile worker-count    
  collects-tree)  (void)
  worker-count : non-negative-integer?
  setup-fprintf : 
(->i ([stage string?] [format string?])
     #:rest (listof any/c) void)
  append-error : 
(->i ([cc cc?]
      [prefix string?]
      [exn (or/c exn? (cons/c string? string?) #f)]
      [out string?]
      [err string?]
      [message string?])
  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 of package base: Changed append-error to allow a pair of error strings.