This file is indexed.

/usr/share/doc/racket/raco/make.html is in racket-doc 6.3-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>1&nbsp;raco make: Compiling Source to Bytecode</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_0&quot;);">&#9660;</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco</span>:<span class="mywbr"> &nbsp;</span> Racket Command-<wbr></wbr>Line Tools</a></td></tr></table></div><div class="tocviewsublisttop" style="display: block;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x"><span class="stt">raco make</span>:<span class="mywbr"> &nbsp;</span> Compiling Source to Bytecode</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="exe.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco exe</span>:<span class="mywbr"> &nbsp;</span> Creating Stand-<wbr></wbr>Alone Executables</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="exe-dist.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco distribute</span>:<span class="mywbr"> &nbsp;</span> Sharing Stand-<wbr></wbr>Alone Executables</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="planet.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco planet</span>:<span class="mywbr"> &nbsp;</span> Automatic Package Distribution</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="pkg.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco pkg</span>:<span class="mywbr"> &nbsp;</span> Package Management</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="setup.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco setup</span>:<span class="mywbr"> &nbsp;</span> Installation Management</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="decompile.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco decompile</span>:<span class="mywbr"> &nbsp;</span> Decompiling Bytecode</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="demod.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco demod</span>:<span class="mywbr"> &nbsp;</span> Demodularizing Programs</a></td></tr><tr><td align="right">9&nbsp;</td><td><a href="link.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco link</span>:<span class="mywbr"> &nbsp;</span> Library Collection Links</a></td></tr><tr><td align="right">10&nbsp;</td><td><a href="plt.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco pack</span>:<span class="mywbr"> &nbsp;</span> Packing Library Collections</a></td></tr><tr><td align="right">11&nbsp;</td><td><a href="unpack.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco unpack</span>:<span class="mywbr"> &nbsp;</span> Unpacking Library Collections</a></td></tr><tr><td align="right">12&nbsp;</td><td><a href="ctool.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco ctool</span>:<span class="mywbr"> &nbsp;</span> Working with C Code</a></td></tr><tr><td align="right">13&nbsp;</td><td><a href="test.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco test</span>:<span class="mywbr"> &nbsp;</span> Run tests</a></td></tr><tr><td align="right">14&nbsp;</td><td><a href="docs.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco docs</span>:<span class="mywbr"> &nbsp;</span> Documentation Search</a></td></tr><tr><td align="right">15&nbsp;</td><td><a href="expand.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco expand</span>:<span class="mywbr"> &nbsp;</span> Macro Expansion</a></td></tr><tr><td align="right">16&nbsp;</td><td><a href="read.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco read</span>:<span class="mywbr"> &nbsp;</span> Reading and Pretty-<wbr></wbr>Printing</a></td></tr><tr><td align="right">17&nbsp;</td><td><a href="scribble.html" class="tocviewlink" data-pltdoc="x"><span class="stt">raco scribble</span>:<span class="mywbr"> &nbsp;</span> Building Documentation</a></td></tr><tr><td align="right">18&nbsp;</td><td><a href="command.html" class="tocviewlink" data-pltdoc="x">Adding a <span class="stt">raco</span> Command</a></td></tr><tr><td align="right">19&nbsp;</td><td><a href="config-file.html" class="tocviewlink" data-pltdoc="x">Installation Configuration and Search Paths</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_1&quot;);">&#9658;</a></td><td>1&nbsp;</td><td><a href="" class="tocviewselflink" data-pltdoc="x"><span class="stt">raco make</span>:<span class="mywbr"> &nbsp;</span> Compiling Source to Bytecode</a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">1.1&nbsp;</td><td><a href="#%28part._.Bytecode_.Files%29" class="tocviewlink" data-pltdoc="x">Bytecode Files</a></td></tr><tr><td align="right">1.2&nbsp;</td><td><a href="#%28part._.Dependency._.Files%29" class="tocviewlink" data-pltdoc="x">Dependency Files</a></td></tr><tr><td align="right">1.3&nbsp;</td><td><a href="#%28part._.A.P.I_for_.Making_.Bytecode%29" class="tocviewlink" data-pltdoc="x">API for Making Bytecode</a></td></tr><tr><td align="right">1.4&nbsp;</td><td><a href="#%28part._api~3aparallel-build%29" class="tocviewlink" data-pltdoc="x">API for Parallel Builds</a></td></tr><tr><td align="right">1.5&nbsp;</td><td><a href="#%28part._.Compilation_.Manager_.Hook_for_.Syntax_.Transformers%29" class="tocviewlink" data-pltdoc="x">Compilation Manager Hook for Syntax Transformers</a></td></tr><tr><td align="right">1.6&nbsp;</td><td><a href="#%28part._.A.P.I_for_.Simple_.Bytecode_.Creation%29" class="tocviewlink" data-pltdoc="x">API for Simple Bytecode Creation</a></td></tr><tr><td align="right">1.7&nbsp;</td><td><a href="#%28part._api~3acompile-path%29" class="tocviewlink" data-pltdoc="x">API for Bytecode Paths</a></td></tr><tr><td align="right">1.8&nbsp;</td><td><a href="#%28part._zo%29" class="tocviewlink" data-pltdoc="x">Compiling to Raw Bytecode</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">1.1<tt>&nbsp;</tt></span><a href="#%28part._.Bytecode_.Files%29" class="tocsubseclink" data-pltdoc="x">Bytecode Files</a></td></tr><tr><td><span class="tocsublinknumber">1.2<tt>&nbsp;</tt></span><a href="#%28part._.Dependency._.Files%29" class="tocsubseclink" data-pltdoc="x">Dependency Files</a></td></tr><tr><td><span class="tocsublinknumber">1.3<tt>&nbsp;</tt></span><a href="#%28part._.A.P.I_for_.Making_.Bytecode%29" class="tocsubseclink" data-pltdoc="x">API for Making Bytecode</a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">make-<wbr></wbr>compilation-<wbr></wbr>manager-<wbr></wbr>load/<span class="mywbr"> &nbsp;</span>use-<wbr></wbr>compiled-<wbr></wbr>handler</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compile-zo%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">managed-<wbr></wbr>compile-<wbr></wbr>zo</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compiled-context-key%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">managed-<wbr></wbr>compiled-<wbr></wbr>context-<wbr></wbr>key</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-context-error-display-handler%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">make-<wbr></wbr>compilation-<wbr></wbr>context-<wbr></wbr>error-<wbr></wbr>display-<wbr></wbr>handler</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._trust-existing-zos%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">trust-<wbr></wbr>existing-<wbr></wbr>zos</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-caching-managed-compile-zo%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">make-<wbr></wbr>caching-<wbr></wbr>managed-<wbr></wbr>compile-<wbr></wbr>zo</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-compile-notify-handler%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">manager-<wbr></wbr>compile-<wbr></wbr>notify-<wbr></wbr>handler</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-trace-handler%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">manager-<wbr></wbr>trace-<wbr></wbr>handler</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-skip-file-handler%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">manager-<wbr></wbr>skip-<wbr></wbr>file-<wbr></wbr>handler</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._file-stamp-in-collection%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">file-<wbr></wbr>stamp-<wbr></wbr>in-<wbr></wbr>collection</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._file-stamp-in-paths%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">file-<wbr></wbr>stamp-<wbr></wbr>in-<wbr></wbr>paths</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._get-file-sha1%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">get-<wbr></wbr>file-<wbr></wbr>sha1</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._get-compiled-file-sha1%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">get-<wbr></wbr>compiled-<wbr></wbr>file-<wbr></wbr>sha1</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._with-compile-output%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">with-<wbr></wbr>compile-<wbr></wbr>output</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._parallel-lock-client%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">parallel-<wbr></wbr>lock-<wbr></wbr>client</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._compile-lock-~3eparallel-lock-client%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">compile-<wbr></wbr>lock-<wbr></wbr>&gt;parallel-<wbr></wbr>lock-<wbr></wbr>client</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compile-lock%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">make-<wbr></wbr>compile-<wbr></wbr>lock</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._install-module-hashes%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">install-<wbr></wbr>module-<wbr></wbr>hashes!</span></span></a></td></tr><tr><td><span class="tocsublinknumber">1.4<tt>&nbsp;</tt></span><a href="#%28part._api~3aparallel-build%29" class="tocsubseclink" data-pltdoc="x">API for Parallel Builds</a></td></tr><tr><td><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile-files%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">parallel-<wbr></wbr>compile-<wbr></wbr>files</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">parallel-<wbr></wbr>compile</span></span></a></td></tr><tr><td><span class="tocsublinknumber">1.5<tt>&nbsp;</tt></span><a href="#%28part._.Compilation_.Manager_.Hook_for_.Syntax_.Transformers%29" class="tocsubseclink" data-pltdoc="x">Compilation Manager Hook for Syntax Transformers</a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm-accomplice..rkt%29._register-external-file%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">register-<wbr></wbr>external-<wbr></wbr>file</span></span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcm-accomplice..rkt%29._register-external-module%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym"><span class="RktValLink">register-<wbr></wbr>external-<wbr></wbr>module</span></span></a></td></tr><tr><td><span class="tocsublinknumber">1.6<tt>&nbsp;</tt></span><a href="#%28part._.A.P.I_for_.Simple_.Bytecode_.Creation%29" class="tocsubseclink" data-pltdoc="x">API for Simple Bytecode Creation</a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcompile-file..rkt%29._compile-file%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">compile-<wbr></wbr>file</span></a></td></tr><tr><td><span class="tocsublinknumber">1.7<tt>&nbsp;</tt></span><a href="#%28part._api~3acompile-path%29" class="tocsubseclink" data-pltdoc="x">API for Bytecode Paths</a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcompilation-path..rkt%29._get-compilation-dir%2Bname%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">get-<wbr></wbr>compilation-<wbr></wbr>dir+<span class="mywbr"> &nbsp;</span>name</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcompilation-path..rkt%29._get-compilation-dir%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">get-<wbr></wbr>compilation-<wbr></wbr>dir</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._compiler%2Fcompilation-path..rkt%29._get-compilation-bytecode-file%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">get-<wbr></wbr>compilation-<wbr></wbr>bytecode-<wbr></wbr>file</span></a></td></tr><tr><td><span class="tocsublinknumber">1.8<tt>&nbsp;</tt></span><a href="#%28part._zo%29" class="tocsubseclink" data-pltdoc="x">Compiling to Raw Bytecode</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;6.3&quot;, &quot;../&quot;);" onfocus="this.style.color=&quot;black&quot;; this.style.textAlign=&quot;left&quot;; if (this.value == &quot;...search manuals...&quot;) this.value=&quot;&quot;;" onblur="if (this.value.match(/^ *$/)) { this.style.color=&quot;#888&quot;; this.style.textAlign=&quot;center&quot;; this.value=&quot;...search manuals...&quot;; }"/></form>&nbsp;&nbsp;<a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;6.3&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="index.html" title="backward to &quot;raco: Racket Command-Line Tools&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;raco: Racket Command-Line Tools&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="exe.html" title="forward to &quot;2 raco exe: Creating Stand-Alone Executables&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div><h3 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;make&quot;">1<tt>&nbsp;</tt><a name="(part._make)"></a><span class="stt">raco make</span>: Compiling Source to Bytecode</h3><p>The <span class="stt">raco make</span> command accept filenames for Racket modules to be
compiled to bytecode format. Modules are re-compiled only if the
source Racket file is newer than the bytecode file and has a different
SHA-1 hash, or if any imported module is recompiled or has a different
SHA-1 hash for its compiled form plus dependencies.</p><p>The <span class="stt">raco make</span> command accepts a few flags:</p><ul><li><p><span class="nobreak"><span class="stt">-j</span></span> <span class="sroman">&#8249;<span style="font-style: italic">n</span>&#8250;</span> &#8212;<wbr></wbr> Compiles argument modules in parallel,
using up to <span class="sroman">&#8249;<span style="font-style: italic">n</span>&#8250;</span> parallel tasks.</p></li><li><p><span class="nobreak"><span class="stt">--disable-inline</span></span> &#8212;<wbr></wbr> Disables function inlining while
compiling (but does not re-compile files that are already
up-to-date). This flag is often useful to simplify generated
code before decompiling, and it corresponds to setting
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._compile-context-preservation-enabled%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">compile-context-preservation-enabled</a></span> to <span class="RktVal">#t</span>.</p></li><li><p><span class="nobreak"><span class="stt">--disable-constant</span></span> &#8212;<wbr></wbr> Disables inference of definitions
within a module as constant (but does not re-compile files that
are already up-to-date). The value associated with a
non-constant definition is never inlined or constant-propagated,
either within its own module or an importing module. This flag
corresponds to setting <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._compile-enforce-module-constants%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">compile-enforce-module-constants</a></span>
to <span class="RktVal">#f</span>.</p></li><li><p><span class="nobreak"><span class="stt">--no-deps</span></span> &#8212;<wbr></wbr> Compiles a non-module file (i.e., one that
is run via <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._load%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">load</a></span> instead of <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span>). See
<a href="#%28part._zo%29" data-pltdoc="x">Compiling to Raw Bytecode</a> for more information.</p></li><li><p><span class="nobreak"><span class="stt">-p</span></span> <span class="sroman">&#8249;<span style="font-style: italic">file</span>&#8250;</span> or <span class="nobreak"><span class="stt">--prefix</span></span> <span class="sroman">&#8249;<span style="font-style: italic">file</span>&#8250;</span> &#8212;<wbr></wbr>
For use with <span class="nobreak"><span class="stt">--no-deps</span></span>; see <a href="#%28part._zo%29" data-pltdoc="x">Compiling to Raw Bytecode</a>.</p></li><li><p><span class="nobreak"><span class="stt">-no-prim</span></span> &#8212;<wbr></wbr> For use with <span class="nobreak"><span class="stt">--no-deps</span></span>; see
<a href="#%28part._zo%29" data-pltdoc="x">Compiling to Raw Bytecode</a>.</p></li><li><p><span class="nobreak"><span class="stt">-v</span></span> &#8212;<wbr></wbr> Verbose mode, which shows which files are
compiled.</p></li><li><p><span class="nobreak"><span class="stt">--vv</span></span> &#8212;<wbr></wbr> Very verbose mode, which implies <span class="nobreak"><span class="stt">-v</span></span> and
also shows every dependency that is checked.</p></li></ul><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;Bytecode_Files&quot;">1.1<tt>&nbsp;</tt><a name="(part._.Bytecode_.Files)"></a>Bytecode Files</h4><p>A file <span class="stt">"<span class="sroman">&#8249;<span style="font-style: italic">name</span>&#8250;</span>.<span class="sroman">&#8249;<span style="font-style: italic">ext</span>&#8250;</span>"</span> is compiled to bytecode
that is saved as <span class="stt">"compiled/<span class="sroman">&#8249;<span style="font-style: italic">name</span>&#8250;</span>_<span class="sroman">&#8249;<span style="font-style: italic">ext</span>&#8250;</span>.zo"</span>
relative to the file. As a result, the bytecode file is normally used
automatically when <span class="stt">"<span class="sroman">&#8249;<span style="font-style: italic">name</span>&#8250;</span>.<span class="sroman">&#8249;<span style="font-style: italic">ext</span>&#8250;</span>"</span> is required
as a module, since the underlying <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._load%252Fuse-compiled%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">load/use-compiled</a></span> operation
detects such a bytecode file.</p><p>For example, in a directory that contains the following files:</p><ul><li><p><span class="stt">"a.rkt"</span>:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=guide&amp;rel=Module_Syntax.html%23%2528part._hash-lang%2529&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktMod">#lang</span></a><span class="hspace">&nbsp;</span><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket</span></a></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="hspace">&nbsp;</span><span class="RktVal">"b.rkt"</span><span class="hspace">&nbsp;</span><span class="RktVal">"c.rkt"</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=generic-numbers.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._%252B%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">+</a></span><span class="hspace">&nbsp;</span><span class="RktSym">b</span><span class="hspace">&nbsp;</span><span class="RktSym">c</span><span class="RktPn">)</span></td></tr></table></blockquote></li><li><p><span class="stt">"b.rkt"</span>:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=guide&amp;rel=Module_Syntax.html%23%2528part._hash-lang%2529&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktMod">#lang</span></a><span class="hspace">&nbsp;</span><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket</span></a></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._provide%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">provide</a></span><span class="hspace">&nbsp;</span><span class="RktSym">b</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._define%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define</a></span><span class="hspace">&nbsp;</span><span class="RktSym">b</span><span class="hspace">&nbsp;</span><span class="RktVal">1</span><span class="RktPn">)</span></td></tr></table></blockquote></li><li><p><span class="stt">"c.rkt"</span>:</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=guide&amp;rel=Module_Syntax.html%23%2528part._hash-lang%2529&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktMod">#lang</span></a><span class="hspace">&nbsp;</span><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket</span></a></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._provide%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">provide</a></span><span class="hspace">&nbsp;</span><span class="RktSym">c</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._define%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define</a></span><span class="hspace">&nbsp;</span><span class="RktSym">c</span><span class="hspace">&nbsp;</span><span class="RktVal">1</span><span class="RktPn">)</span></td></tr></table></blockquote></li></ul><p>then</p><p><span class="hspace">&nbsp;&nbsp;</span><span class="stt">raco make a.rkt</span></p><p>triggers the creation of <span class="stt">"compiled/a_rkt.zo"</span>,
<span class="stt">"compiled/b_rkt.zo"</span>, and <span class="stt">"compiled/c_rkt.zo"</span>.
A subsequent</p><p><span class="hspace">&nbsp;&nbsp;</span><span class="stt">racket a.rkt</span></p><p>loads bytecode from the generated <span class="stt">".zo"</span> files, paying
attention to the <span class="stt">".rkt"</span> sources only to confirm that each
<span class="stt">".zo"</span> file has a later timestamp.</p><p>In contrast,</p><p><span class="hspace">&nbsp;&nbsp;</span><span class="stt">raco make b.rkt c.rkt</span></p><p>would create only <span class="stt">"compiled/b_rkt.zo"</span> and
<span class="stt">"compiled/c_rkt.zo"</span>, since neither <span class="stt">"b.rkt"</span> nor
<span class="stt">"c.rkt"</span> imports <span class="stt">"a.rkt"</span>.</p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;Dependency Files&quot;">1.2<tt>&nbsp;</tt><a name="(part._.Dependency._.Files)"></a>Dependency Files</h4><p>In addition to a bytecode file, <span class="stt">raco make</span> creates a file
<span class="stt">"compiled/<span class="sroman">&#8249;<span style="font-style: italic">name</span>&#8250;</span>_<span class="sroman">&#8249;<span style="font-style: italic">ext</span>&#8250;</span>.dep"</span> that records
dependencies of the compiled module on other module files and the
source file&rsquo;s SHA-1 hash.  Using this dependency information, a
re-compilation request via <span class="stt">raco make</span> can consult both the
source file&rsquo;s timestamp/hash and the timestamps/hashes for the
bytecode of imported modules.  Furthermore, imported modules are
themselves compiled as necessary, including updating the bytecode and
dependency files for the imported modules, transitively.</p><p>Continuing the <span class="stt">raco make a.rkt</span> example from the previous
section, the <span class="stt">raco make</span> command creates
<span class="stt">"compiled/a_rkt.dep"</span>, <span class="stt">"compiled/b_rkt.dep"</span>, and
<span class="stt">"compiled/c_rkt.dep"</span> at the same time as the <span class="stt">".zo"</span>
files. The <span class="stt">"compiled/a_rkt.dep"</span> file records the dependency
of <span class="stt">"a.rkt"</span> on <span class="stt">"b.rkt"</span>, <span class="stt">"c.rkt"</span> and the
<a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket</span></a> library. If the <span class="stt">"b.rkt"</span> file is
modified (so that its timestamp and SHA-1 hash changes), then running</p><p><span class="hspace">&nbsp;&nbsp;</span><span class="stt">raco make a.rkt</span></p><p>again rebuilds <span class="stt">"compiled/a_rkt.zo"</span> and
<span class="stt">"compiled/b_rkt.zo"</span>.</p><p>For module files that are within library collections, <span class="stt">raco
setup</span> uses the same <span class="stt">".zo"</span> and <span class="stt">".dep"</span> conventions
and files as <span class="stt">raco make</span>, so the two tools can be used together.</p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;API_for_Making_Bytecode&quot;">1.3<tt>&nbsp;</tt><a name="(part._.A.P.I_for_.Making_.Bytecode)"></a><a name="(mod-path._compiler/cm)"></a>API for Making Bytecode</h4><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._compiler%2Fcm%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/cm</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">base</span></span></td></tr></table></div><div class="SIntrapara">The <a href="#%28mod-path._compiler%2Fcm%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/cm</span></a> module
implements the compilation and dependency management used by
<span class="stt">raco make</span> and <span class="stt">raco setup</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top" colspan="3"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._make-compilation-manager-load/use-compiled-handler))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktVar">delete-zos-when-rkt-file-does-not-exist?</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:security-guard</span><span class="hspace">&nbsp;</span><span class="RktVar">security-guard</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._false%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">false/c</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">delete-zos-when-rkt-file-does-not-exist?</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">security-guard</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=securityguards.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._security-guard%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">security-guard?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a procedure suitable as a value for the
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-load%252Fuse-compiled%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-load/use-compiled</a></span> parameter. The returned procedure
passes its arguments on to the <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-load%252Fuse-compiled%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-load/use-compiled</a></span>
procedure that is installed when
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> is called,
but first it automatically compiles a source file to a <span class="stt">".zo"</span>
file if</div></p><ul><li><p>the file is expected to contain a module (i.e., the second
argument to the handler is a symbol);</p></li><li><p>the value of each of <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-eval%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-eval</a></span><span class="RktPn">)</span>,
<span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-load%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-load</a></span><span class="RktPn">)</span>, and <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Namespaces.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._namespace-module-registry%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">namespace-module-registry</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Namespaces.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-namespace%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-namespace</a></span><span class="RktPn">)</span><span class="RktPn">)</span> is the same as when
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> was
called;</p></li><li><p>the value of <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._use-compiled-file-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">use-compiled-file-paths</a></span> contains the
first path that was present when
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> was
called;</p></li><li><p>the value of <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-load%252Fuse-compiled%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-load/use-compiled</a></span> is the result
of this procedure; and</p></li><li><p>one of the following holds:</p><ul><li><p>the source file is newer than the <span class="stt">".zo"</span> file in the
first sub-directory listed in <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._use-compiled-file-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">use-compiled-file-paths</a></span>
(at the time that
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span>
was called), and either no <span class="stt">".dep"</span> file exists or it
records a source-file SHA-1 hash that differs from the current
version and source-file SHA-1 hash;</p></li><li><p>no <span class="stt">".dep"</span> file exists next to the <span class="stt">".zo"</span>
file;</p></li><li><p>the version recorded in the <span class="stt">".dep"</span> file does not
match the result of <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=runtime.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._version%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">version</a></span><span class="RktPn">)</span>;</p></li><li><p>one of the files listed in the <span class="stt">".dep"</span> file has a
<span class="stt">".zo"</span> timestamp newer than the target <span class="stt">".zo"</span>,
and the combined hashes of the dependencies recorded in the
<span class="stt">".dep"</span> file does not match the combined hash recorded
in the <span class="stt">".dep"</span> file.</p></li></ul></li></ul><p>If SHA-1 hashes override a timestamp-based decision to recompile the
file, then the target <span class="stt">".zo"</span> file&rsquo;s timestamp is updated to
the current time.</p><p>After the handler procedure compiles a <span class="stt">".zo"</span> file, it creates
a corresponding <span class="stt">".dep"</span> file that lists the current version
and the identification of every file that is directly
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span>d by the module in the compiled file. Additional
dependencies can be installed during compilation via
<a href="#%28mod-path._compiler%2Fcm-accomplice%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/cm-accomplice</span></a>. The <span class="stt">".dep"</span> file also
records the SHA-1 hash of the module&rsquo;s source, and it records a
combined SHA-1 hash of all of the dependencies that includes their
recursive dependencies.</p><p>The handler caches timestamps when it checks <span class="stt">".dep"</span> 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
<span class="stt">".zo"</span> file, which means that the caching behavior is
consistent with the caching of the default module name resolver (see
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Module_Names_and_Loading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-module-name-resolver%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-module-name-resolver</a></span>).</p><p>If <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._use-compiled-file-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">use-compiled-file-paths</a></span> contains an empty list when
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> is called,
then <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._exn%7E3afail%7E3acontract%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">exn:fail:contract</a></span> exception is raised.</p><p>If the <span class="RktVar">delete-zos-when-rkt-file-does-not-exist?</span> argument is a true
value, then the returned handler will delete <span class="stt">".zo"</span> files
when there is no corresponding original source file.</p><p>If the <span class="RktVar">security-guard</span> argument is supplied, it is used when
creating <span class="stt">".zo"</span> files, <span class="stt">".dep"</span> files, and <span class="stt">"compiled/"</span>
directories, and when it adjusts the timestamps for existing files.
If it is <span class="RktVal">#f</span>, then
the security guard in the <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=securityguards.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-security-guard%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-security-guard</a></span> when
the files are created is used (not the security guard at the point
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> is called).</p><p>The continuation the compilation of a module is marked with a
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compiled-context-key%29%29" class="RktValLink" data-pltdoc="x">managed-compiled-context-key</a></span> and the module&rsquo;s source path.</p><p><span style="font-style: italic">Do not</span> install the result of
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> when the
current namespace contains already-loaded versions of modules that may
need to be recompiled&#8212;<wbr></wbr>unless the already-loaded modules are never
referenced by not-yet-loaded modules. References to already-loaded
modules may produce compiled files with inconsistent timestamps and/or
<span class="stt">".dep"</span> files with incorrect information.</p><p>The handler logs messages to the topic <span class="RktVal">'</span><span class="RktVal">compiler/cm</span> at the level
<span class="RktVal">'</span><span class="RktVal">info</span>. These messages are instances of a <span class="RktSym">compile-event</span> prefab
structure:</p><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define-struct.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._struct%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">struct</a></span><span class="hspace">&nbsp;</span><span class="RktSym">compile-event</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">timestamp</span><span class="hspace">&nbsp;</span><span class="RktSym">path</span><span class="hspace">&nbsp;</span><span class="RktSym">type</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">#:prefab</span><span class="RktPn">)</span></p></blockquote><p>The <span class="RktSym">timestamp</span> field is the time at which the event occured in
milliseconds since the epoch.  The <span class="RktSym">path</span> field is the path of a file
being compiled for which the event is about. The <span class="RktSym">type</span> field is a symbol
which describes the action the event corresponds to. The currently logged values
are <span class="RktVal">'</span><span class="RktVal">locking</span>, <span class="RktVal">'</span><span class="RktVal">start-compile</span>, <span class="RktVal">'</span><span class="RktVal">finish-compile</span>, and
<span class="RktVal">'</span><span class="RktVal">already-done</span>.</p><p class="SHistory">Changed in version 6.1.1.8 of package <span class="stt">base</span>: Added identification of the compilation
 context via <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compiled-context-key%29%29" class="RktValLink" data-pltdoc="x">managed-compiled-context-key</a></span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._managed-compile-zo))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compile-zo%29%29" class="RktValDef RktValLink" data-pltdoc="x">managed-compile-zo</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">file</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktVar">read-src-syntax</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:security-guard</span><span class="hspace">&nbsp;</span><span class="RktVar">security-guard</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">file</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">read-src-syntax</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=port-ops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._input-port%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">input-port?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=stxops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._syntax%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">syntax?</a></span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Reading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read-syntax%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">read-syntax</a></span></td></tr></table></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">security-guard</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=securityguards.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._security-guard%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">security-guard?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Compiles the given module source file to a <span class="stt">".zo"</span>, installing
a compilation-manager handler while the file is compiled (so that
required modules are also compiled), and creating a <span class="stt">".dep"</span> file
to record the timestamps of immediate files used to compile the source
(i.e., files <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span>d in the source).</div></p><p>If <span class="RktVar">file</span> is compiled from source, then
<span class="RktVar">read-src-syntax</span> is used in the same way as
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Reading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read-syntax%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">read-syntax</a></span> to read the source module. The normal
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Reading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read-syntax%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">read-syntax</a></span> is used for any required files, however.</p><p>If <span class="RktVar">security-guard</span> is not <span class="RktVal">#f</span>, then the provided security
guard is used when creating the <span class="stt">"compiled/"</span> directories,
<span class="stt">".dep"</span> and <span class="stt">".zo"</span> files, and when it adjusts the timestamps
of existing files. If it is <span class="RktVal">#f</span>, then
the security guard in the <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=securityguards.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-security-guard%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-security-guard</a></span> when
the files are created is used (not the security guard at the point
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compile-zo%29%29" class="RktValLink" data-pltdoc="x">managed-compile-zo</a></span> is called).</p><p>While compiling <span class="RktVar">file</span>, the <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._error-display-handler%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">error-display-handler</a></span>
parameter is set to
<span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-context-error-display-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-context-error-display-handler</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._error-display-handler%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">error-display-handler</a></span><span class="RktPn">)</span><span class="RktPn">)</span>, so that errors from uncaught exceptions
will report the compilation context.</p><p class="SHistory">Changed in version 6.1.1.8 of package <span class="stt">base</span>: Added <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._error-display-handler%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">error-display-handler</a></span>
configuration.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>value</p></div></div><p class="RForeground"><a name="(def._((lib._compiler/cm..rkt)._managed-compiled-context-key))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compiled-context-key%29%29" class="RktValDef RktValLink" data-pltdoc="x">managed-compiled-context-key</a></span></span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">A key used as a continuation mark key by
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> for the
continuation of a module compilation. The associated value is a path
to the module&rsquo;s source.</div></p><p class="SHistory">Added in version 6.1.1.8 of package <span class="stt">base</span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._make-compilation-context-error-display-handler))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-context-error-display-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">make-compilation-context-error-display-handler</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">orig-handlers</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">orig-handlers</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Produces a handler suitable for use as a
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._error-display-handler%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">error-display-handler</a></span> value, given an existing such value.
The generated handler shows information about the compilation context
when the handler&rsquo;s second argument is an exception whose continuation
marks include <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compiled-context-key%29%29" class="RktValLink" data-pltdoc="x">managed-compiled-context-key</a></span> keys.</div></p><p class="SHistory">Added in version 6.1.1.8 of package <span class="stt">base</span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._trust-existing-zos))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._trust-existing-zos%29%29" class="RktValDef RktValLink" data-pltdoc="x">trust-existing-zos</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._trust-existing-zos%29%29" class="RktValDef RktValLink" data-pltdoc="x">trust-existing-zos</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">trust?</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">trust?</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter that is intended for use by <span class="stt">setup-plt</span> when
installing with pre-built <span class="stt">".zo"</span> files. It causes a
compilation-manager <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._load%252Fuse-compiled%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">load/use-compiled</a></span> handler to &ldquo;touch&rdquo;
out-of-date <span class="stt">".zo"</span> files instead of re-compiling from source.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top" colspan="3"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._make-caching-managed-compile-zo))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-caching-managed-compile-zo%29%29" class="RktValDef RktValLink" data-pltdoc="x">make-caching-managed-compile-zo</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktVar">read-src-syntax</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:security-guard</span><span class="hspace">&nbsp;</span><span class="RktVar">security-guard</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">read-src-syntax</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=port-ops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._input-port%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">input-port?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=stxops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._syntax%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">syntax?</a></span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Reading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read-syntax%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">read-syntax</a></span></td></tr></table></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">security-guard</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=securityguards.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._security-guard%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">security-guard?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a procedure that behaves like <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compile-zo%29%29" class="RktValLink" data-pltdoc="x">managed-compile-zo</a></span>
(providing the same <span class="RktVar">read-src-syntax</span> each time), but a cache
of timestamp information is preserved across calls to the procedure.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._manager-compile-notify-handler))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-compile-notify-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">manager-compile-notify-handler</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-compile-notify-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">manager-compile-notify-handler</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">notify</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">notify</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter for a procedure of one argument that is called whenever a
compilation starts. The argument to the procedure is the file&rsquo;s path.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._manager-trace-handler))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-trace-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">manager-trace-handler</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-trace-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">manager-trace-handler</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">notify</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">notify</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter for a procedure of one argument that is called to report
 compilation-manager actions, such as checking a file. The argument to
 the procedure is a string.</div></p><p>The default value of the parameter logs the argument, along with
 <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=time.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-inexact-milliseconds%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-inexact-milliseconds</a></span> to, a logger named <span class="RktVal">'</span><span class="RktVal">compiler/cm</span>
 at the <span class="RktVal">'</span><span class="RktVal">debug</span> level.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._manager-skip-file-handler))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-skip-file-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">manager-skip-file-handler</a></span></span><span class="RktPn"></span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Delayed_Evaluation.html%23%2528def._%2528%2528lib._racket%252Fpromise..rkt%2529._promise%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">promise?</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-skip-file-handler%29%29" class="RktValDef RktValLink" data-pltdoc="x">manager-skip-file-handler</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">proc</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">proc</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Delayed_Evaluation.html%23%2528def._%2528%2528lib._racket%252Fpromise..rkt%2529._promise%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">promise?</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">A parameter whose value is called for each file that is loaded and
 needs recompilation. If the procedure returns a pair, then the file
 is skipped (i.e., not compiled); the number in the pair is used as
 the timestamp for the file&rsquo;s bytecode, and the promise may be
 <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Delayed_Evaluation.html%23%2528def._%2528%2528lib._racket%252Fpromise..rkt%2529._force%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">force</a></span>d to obtain a string that is used as hash of the
 compiled file plus its dependencies. If the procedure returns
 <span class="RktVal">#f</span>, then the file is compiled as usual. The default is
 <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym">x</span><span class="RktPn">)</span><span class="stt"> </span><span class="RktVal">#f</span><span class="RktPn">)</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._file-stamp-in-collection))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._file-stamp-in-collection%29%29" class="RktValDef RktValLink" data-pltdoc="x">file-stamp-in-collection</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">p</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Delayed_Evaluation.html%23%2528def._%2528%2528lib._racket%252Fpromise..rkt%2529._promise%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">promise?</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Calls <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._file-stamp-in-paths%29%29" class="RktValLink" data-pltdoc="x">file-stamp-in-paths</a></span> with <span class="RktVar">p</span> and
<span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=collects.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-library-collection-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-library-collection-paths</a></span><span class="RktPn">)</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._file-stamp-in-paths))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._file-stamp-in-paths%29%29" class="RktValDef RktValLink" data-pltdoc="x">file-stamp-in-paths</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span><span class="RktVar">paths</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._number%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">number?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Delayed_Evaluation.html%23%2528def._%2528%2528lib._racket%252Fpromise..rkt%2529._promise%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">promise?</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">paths</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns the file-modification date and <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Delayed_Evaluation.html%23%2528form._%2528%2528lib._racket%252Fpromise..rkt%2529._delay%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">delay</a></span>ed hash of
 <span class="RktVar">p</span> or its bytecode form (i.e., <span class="stt">".zo"</span> file), whichever
 exists and is newer, if <span class="RktVar">p</span> is an extension of any path in
 <span class="RktVar">paths</span> (i.e., exists in the directory, a subdirectory,
 etc.). Otherwise, the result is <span class="RktVal">#f</span>.</div></p><p>This function is intended for use with <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._manager-skip-file-handler%29%29" class="RktValLink" data-pltdoc="x">manager-skip-file-handler</a></span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._get-file-sha1))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._get-file-sha1%29%29" class="RktValDef RktValLink" data-pltdoc="x">get-file-sha1</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">p</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Computes a SHA-1 hash for the file <span class="RktVar">p</span>; the result is
<span class="RktVal">#f</span> if <span class="RktVar">p</span> cannot be opened.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._get-compiled-file-sha1))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._get-compiled-file-sha1%29%29" class="RktValDef RktValLink" data-pltdoc="x">get-compiled-file-sha1</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">p</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Computes a SHA-1 hash for the bytecode file <span class="RktVar">p</span>, appending any
dependency-describing hash available from a <span class="stt">".dep"</span> file when
available (i.e., the suffix on <span class="RktVar">p</span> is replaced by
<span class="stt">".dep"</span> to locate dependency information). The result is
<span class="RktVal">#f</span> if <span class="RktVar">p</span> cannot be opened.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._with-compile-output))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._with-compile-output%29%29" class="RktValDef RktValLink" data-pltdoc="x">with-compile-output</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span><span class="RktVar">proc</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">p</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">proc</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym">port</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=port-ops.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._input-port%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">input-port?</a></span><span class="RktPn">]</span><span class="hspace">&nbsp;</span><span class="RktPn">[</span><span class="RktSym">tmp-path</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="RktPn">]</span><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">any</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">A wrapper on <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Filesystem.html%23%2528def._%2528%2528lib._racket%252Ffile..rkt%2529._call-with-atomic-output-file%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">call-with-atomic-output-file</a></span> that passes along
any security guard put in place by
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span>, etc.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>parameter</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._parallel-lock-client))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._parallel-lock-client%29%29" class="RktValDef RktValLink" data-pltdoc="x">parallel-lock-client</a></span></span><span class="RktPn"></span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="prototype"><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3ei%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span>i</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym">command</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">lock</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">unlock</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._file%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">file</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">res</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">command</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._if%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">if</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._eq%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">eq?</a></span><span class="hspace">&nbsp;</span><span class="RktSym">command</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">lock</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr><tr><td><span class="RktPn">(</span><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._parallel-lock-client%29%29" class="RktValDef RktValLink" data-pltdoc="x">parallel-lock-client</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">proc</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">proc</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3ei%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span>i</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym">command</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">lock</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">unlock</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._file%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">file</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">res</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">command</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._if%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">if</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._eq%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">eq?</a></span><span class="hspace">&nbsp;</span><span class="RktSym">command</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">lock</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Holds the parallel compilation lock client, which
is used by the result of <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> to
prevent compilation races between parallel builders.</div></p><p>When <span class="RktVar">proc</span> is <span class="RktVal">#f</span> (the default), no checking for parallel
compilation is done (and thus multiple threads or places running compilations
via <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span> will potentially
corrupt each other&rsquo;s <span class="stt">".zo"</span> files).</p><p>When <span class="RktVar">proc</span> is a function, its first argument is a command, indicating
if it wants to lock or unlock the path specified in the second argument.</p><p>When the <span class="RktVar">proc</span> <span class="RktVal">'</span><span class="RktVal">lock</span> command returns <span class="RktVal">#t</span>, the current
builder has obtained the lock for <span class="RktSym">zo-path</span>.
Once compilation of <span class="RktSym">zo-path</span> is complete, the builder process must
release the lock by calling <span class="RktVar">proc</span> <span class="RktVal">'</span><span class="RktVal">unlock</span> with the exact same
<span class="RktSym">zo-path</span>.</p><p>When the <span class="RktVar">proc</span> <span class="RktVal">'</span><span class="RktVal">lock</span> command returns <span class="RktVal">#f</span>, another
parallel builder obtained the lock first and has already compiled the zo.  The
parallel builder should continue without compiling <span class="RktSym">zo-path</span>.
(In this case, <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span>&rsquo;s
result will not call <span class="RktVar">proc</span> with <span class="RktVal">'</span><span class="RktVal">unlock</span>.)</p><p><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><p>Example:</p></td></tr><tr><td><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="stt">&gt; </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=let.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._let%252A%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">let*</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym">lc</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._parallel-lock-client%29%29" class="RktValLink" data-pltdoc="x">parallel-lock-client</a></span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">zo-name</span><span class="hspace">&nbsp;&nbsp;</span><span class="RktVal">#"collects/racket/compiled/draw_rkt.zo"</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">locked?</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._and%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">and</a></span><span class="hspace">&nbsp;</span><span class="RktSym">lc</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">lc</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">lock</span><span class="hspace">&nbsp;</span><span class="RktSym">zo-name</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">ok-to-compile?</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._or%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">or</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._not%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">not</a></span><span class="hspace">&nbsp;</span><span class="RktSym">lc</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktSym">locked?</span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=cont.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._dynamic-wind%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">dynamic-wind</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=when_unless.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._when%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">when</a></span><span class="hspace">&nbsp;</span><span class="RktSym">ok-to-compile?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">printf</a></span><span class="hspace">&nbsp;</span><span class="RktVal">"Do compile here ...\n"</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=when_unless.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._when%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">when</a></span><span class="hspace">&nbsp;</span><span class="RktSym">locked?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym">lc</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">unlock</span><span class="hspace">&nbsp;</span><span class="RktSym">zo-name</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><p><span class="RktOut">Do compile here ...</span></p></td></tr><tr><td><table cellspacing="0" cellpadding="0"><tr><td></td></tr></table></td></tr></table></blockquote></td></tr></table></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._compile-lock-~3eparallel-lock-client))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._compile-lock-~3eparallel-lock-client%29%29" class="RktValDef RktValLink" data-pltdoc="x">compile-lock-&gt;parallel-lock-client</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">pc</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktVar">cust</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">lock</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">unlock</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">bytes?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._boolean%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">boolean?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">pc</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">place-channel?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">cust</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=custodians.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._custodian%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">custodian?</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns a function that follows the <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._parallel-lock-client%29%29" class="RktValLink" data-pltdoc="x">parallel-lock-client</a></span>
by communicating over <span class="RktVar">pc</span>. The argument must have
be the result of <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compile-lock%29%29" class="RktValLink" data-pltdoc="x">make-compile-lock</a></span>.</div></p><p>This communication protocol implementation is not kill safe. To make it kill safe,
it needs a sufficiently powerful custodian, i.e., one that is not subject to
termination (unless all of the participants in the compilation are also terminated).
It uses this custodian to create a thread that monitors the threads that are
doing the compilation. If one of them is terminated, the presence of the
custodian lets another one continue. (The custodian is also used to create
a thread that manages a thread safe table.)</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._make-compile-lock))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compile-lock%29%29" class="RktValDef RktValLink" data-pltdoc="x">make-compile-lock</a></span></span><span class="RktPn"></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">place-channel?</span></p></blockquote></td></tr></table></blockquote></div><div class="SIntrapara">Creates a <span class="RktSym">place-channel?</span> that can be used with
          <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._compile-lock-~3eparallel-lock-client%29%29" class="RktValLink" data-pltdoc="x">compile-lock-&gt;parallel-lock-client</a></span> to avoid concurrent
          compilations of the same racket source files in multiple places.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm..rkt)._install-module-hashes!))"></a><span title="Provided from: compiler/cm | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._install-module-hashes%21%29%29" class="RktValDef RktValLink" data-pltdoc="x">install-module-hashes!</a></span></span><span class="hspace">&nbsp;</span><span class="RktVar">bstr</span><span class="hspace">&nbsp;</span>[<span class="RktVar">start</span><span class="hspace">&nbsp;</span><span class="RktVar">end</span>]<span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">bstr</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">btyes?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">start</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">exact-nonnegatve-integer?</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">0</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">end</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">exact-nonnegatve-integer?</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=bytestrings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._bytes-length%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">bytes-length</a></span><span class="hspace">&nbsp;</span><span class="RktVar">bstr</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Adjusts the bytecode representation in <span class="RktVar">bstr</span> (from bytes
<span class="RktVar">start</span> to <span class="RktVar">end</span>) to install a hash code, including any
submodules within the region. The existing representation should have
zero bytes in place of each hash string, which is what <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._write%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">write</a></span>
produces for a compiled form.</div></p><p class="SHistory">Added in version 6.3 of package <span class="stt">base</span>.</p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;api:parallel-build&quot;">1.4<tt>&nbsp;</tt><a name="(part._api~3aparallel-build)"></a><a name="(mod-path._setup/parallel-build)"></a>API for Parallel Builds</h4><p><div class="SIntrapara"><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._setup%2Fparallel-build%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">setup/parallel-build</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">base</span></span></td></tr></table></div><div class="SIntrapara">The <a href="#%28mod-path._setup%2Fparallel-build%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">setup/parallel-build</span></a> library provides the parallel-compilation
functionality of <span class="stt">raco setup</span> and <span class="stt">raco make</span>.</div></p><p>Both <span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile-files%29%29" class="RktValLink" data-pltdoc="x">parallel-compile-files</a></span> and <span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile%29%29" class="RktValLink" data-pltdoc="x">parallel-compile</a></span> log messages
to the topic <span class="RktVal">'</span><span class="RktVal">setup/parallel-build</span> at the level <span class="RktVal">'</span><span class="RktVal">info</span>. These
messages are instances of a <span class="RktSym">parallel-compile-event</span> prefab structure:</p><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define-struct.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._struct%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">struct</a></span><span class="hspace">&nbsp;</span><span class="RktSym">parallel-compile-event</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">worker</span><span class="hspace">&nbsp;</span><span class="RktSym">event</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">#:prefab</span><span class="RktPn">)</span></p></blockquote><p>The worker field is the index of the worker that the created the event. The event
field is a <span class="RktSym">compile-event</span> as document in
<span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._make-compilation-manager-load%2Fuse-compiled-handler%29%29" class="RktValLink" data-pltdoc="x">make-compilation-manager-load/use-compiled-handler</a></span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._setup/parallel-build..rkt)._parallel-compile-files))"></a><span title="Provided from: setup/parallel-build | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile-files%29%29" class="RktValDef RktValLink" data-pltdoc="x">parallel-compile-files</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">list-of-files</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktPn">#:worker-count</span><span class="hspace">&nbsp;</span><span class="RktVar">worker-count</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:handler</span><span class="hspace">&nbsp;</span><span class="RktVar">handler</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">list-of-files</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">worker-count</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._exact-positive-integer%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">exact-positive-integer?</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=futures.html%23%2528def._%2528%2528lib._racket%252Ffuture..rkt%2529._processor-count%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">processor-count</a></span><span class="RktPn">)</span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">handler</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3ei%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span>i</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktVar">worker-id</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=number-types.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._exact-integer%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">exact-integer?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">handler-type</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=symbols.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._symbol%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">symbol?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">path</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">msg</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">out</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">err</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span></td></tr></table></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void</a></span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The <span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile-files%29%29" class="RktValLink" data-pltdoc="x">parallel-compile-files</a></span> utility function is used by <span class="stt">raco make</span> to
compile a list of paths in parallel.  The optional
<span class="RktPn">#:worker-count</span> argument specifies the number of compile workers to spawn during
parallel compilation.  The callback, <span class="RktVar">handler</span>, is called with the symbol
<span class="RktVal">'</span><span class="RktVal">done</span> as the <span class="RktVar">handler-type</span> argument for each successfully compiled file,
<span class="RktVal">'</span><span class="RktVal">output</span> when a
successful compilation produces stdout/stderr output, <span class="RktVal">'</span><span class="RktVal">error</span> when a
compilation error has occured, or <span class="RktVal">'</span><span class="RktVal">fatal-error</span> when a unrecoverable
error occurs. The other arguments give more information for each status update.
The return value is <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void</a></span><span class="RktPn">)</span> if it was successful, or <span class="RktVal">#f</span> if there was an error.</div></p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile-files%29%29" class="RktValLink" data-pltdoc="x">parallel-compile-files</a></span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">source-files</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">#:worker-count</span><span class="hspace">&nbsp;</span><span class="RktVal">4</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">#:handler</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=lambda.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._lambda%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">lambda</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">type</span><span class="hspace">&nbsp;</span><span class="RktSym">work</span><span class="hspace">&nbsp;</span><span class="RktSym">msg</span><span class="hspace">&nbsp;</span><span class="RktSym">out</span><span class="hspace">&nbsp;</span><span class="RktSym">err</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym">match</span><span class="hspace">&nbsp;</span><span class="RktSym">type</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVal">'</span><span class="RktVal">done</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=when_unless.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._when%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">when</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">verbose</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">printf</a></span><span class="hspace">&nbsp;</span><span class="RktVal">" Made ~a\n"</span><span class="hspace">&nbsp;</span><span class="RktSym">work</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVal">'</span><span class="RktVal">output</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">printf</a></span><span class="hspace">&nbsp;</span><span class="RktVal">" Output from: ~a\n~a~a"</span><span class="hspace">&nbsp;</span><span class="RktSym">work</span><span class="hspace">&nbsp;</span><span class="RktSym">out</span><span class="hspace">&nbsp;</span><span class="RktSym">err</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._else%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">else</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">printf</a></span><span class="hspace">&nbsp;</span><span class="RktVal">" Error compiling ~a\n~a\n~a~a"</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym">work</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym">msg</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym">out</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym">err</span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._setup/parallel-build..rkt)._parallel-compile))"></a><span title="Provided from: setup/parallel-build | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile%29%29" class="RktValDef RktValLink" data-pltdoc="x">parallel-compile</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">worker-count</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">setup-fprintf</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">append-error</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">collects-tree</span><span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void</a></span><span class="RktPn">)</span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">worker-count</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">non-negative-integer?</span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">setup-fprintf</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3ei%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span>i</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktVar">stage</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span><span class="hspace">&nbsp;</span><span class="RktPn">[</span><span class="RktVar">format</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">#:rest</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void</a></span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">append-error</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3ei%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span>i</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktVar">cc</span><span class="hspace">&nbsp;</span><span class="RktSym">cc?</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">prefix</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">exn</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._exn%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">exn?</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._cons%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">cons/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktVal">#f</span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">out</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">err</span><span class="hspace">&nbsp;</span><span class="RktSym">srtring?</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktVar">message</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=strings.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">collects-tree</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">listof</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">The <span class="RktSym"><a href="#%28def._%28%28lib._setup%2Fparallel-build..rkt%29._parallel-compile%29%29" class="RktValLink" data-pltdoc="x">parallel-compile</a></span> function is used by <span class="stt">raco setup</span> to
compile collections in parallel. The <span class="RktVar">worker-count</span> argument
specifies the number of compilation workers to spawn during parallel
compilation. The <span class="RktVar">setup-fprintf</span> and <span class="RktVar">append-error</span>
functions communicate intermediate compilation results and errors. The
<span class="RktVar">collects-tree</span> argument is a compound datastructure containing
an in-memory tree representation of the collects directory.</div></p><p>When the <span class="RktVar">exn</span> argument to <span class="RktVar">append-error</span> is a part 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).</p><p class="SHistory">Changed in version 6.1.1.8 of package <span class="stt">base</span>: Changed <span class="RktVar">append-error</span> to allow
a pair of error strings.</p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;Compilation_Manager_Hook_for_Syntax_Transformers&quot;">1.5<tt>&nbsp;</tt><a name="(part._.Compilation_.Manager_.Hook_for_.Syntax_.Transformers)"></a><a name="(mod-path._compiler/cm-accomplice)"></a>Compilation Manager Hook for Syntax Transformers</h4><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._compiler%2Fcm-accomplice%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/cm-accomplice</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">base</span></span></td></tr></table></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm-accomplice..rkt)._register-external-file))"></a><span title="Provided from: compiler/cm-accomplice | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm-accomplice..rkt%29._register-external-file%29%29" class="RktValDef RktValLink" data-pltdoc="x">register-external-file</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">file</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktPn">#:indirect?</span><span class="hspace">&nbsp;</span><span class="RktVar">indirect?</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">file</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._and%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">and</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._complete-path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">complete-path?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">indirect?</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Logs a message (see <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=logging.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._log-message%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">log-message</a></span>) at level <span class="RktVal">'</span><span class="RktVal">info</span> to a
logger named <span class="RktVal">'</span><span class="RktVal">cm-accomplice</span>. The message data is a
<span class="RktSym">file-dependency</span> prefab structure type with two fields;
the first field&rsquo;s value is <span class="RktVar">file</span> and the second field&rsquo;s value
is <span class="RktVal">#f</span> (to indicate a non-module dependency). If the
<span class="RktVar">indirect?</span> argument is true, the data is more specifically an
instance of a <span class="RktSym">file-dependency/options</span> prefab structure
type that is a subtype of <span class="RktSym">file-dependency</span> with one extra
field: a hash table mapping <span class="RktVal">'</span><span class="RktVal">indirect</span> to <span class="RktVal">#t</span>.</div></p><p>A compilation manager implemented by <a href="#%28mod-path._compiler%2Fcm%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/cm</span></a> looks
for such messages to register an external dependency. In response, the
compilation manager records (in a <span class="stt">".dep"</span> file) the path as
contributing to the implementation of the module currently being
compiled. Afterward, if the registered file is modified, the
compilation manager will know to recompile the module. An indirect
dependency has no effect on recompilation, but it can signal to other
tools, such as a package-dependency checker, that the dependency is
indirect (and should not imply a direct package dependency).</p><p>The <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=include.html%23%2528form._%2528%2528lib._racket%252Finclude..rkt%2529._include%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">include</a></span> macro, for example, calls this procedure with the
path of an included file as it expands an <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=include.html%23%2528form._%2528%2528lib._racket%252Finclude..rkt%2529._include%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">include</a></span> form.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/cm-accomplice..rkt)._register-external-module))"></a><span title="Provided from: compiler/cm-accomplice | Package: base"><span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm-accomplice..rkt%29._register-external-module%29%29" class="RktValDef RktValLink" data-pltdoc="x">register-external-module</a></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">file</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktPn">#:indirect?</span><span class="hspace">&nbsp;</span><span class="RktVar">indirect?</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">file</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fletstx-scheme..rkt%2529._and%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">and</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._complete-path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">complete-path?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">indirect?</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktVal">#f</span></td></tr></table></blockquote></div><div class="SIntrapara">Like <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm-accomplice..rkt%29._register-external-file%29%29" class="RktValLink" data-pltdoc="x">register-external-file</a></span>, but logs a message with a
<span class="RktSym">file-dependency</span> prefab structure type whose second
field is <span class="RktVal">#t</span>.</div></p><p>A compilation manager implemented by <a href="#%28mod-path._compiler%2Fcm%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/cm</span></a>
recognizes the message to register a dependency on a
module (which implies a dependency on all of that module&rsquo;s
dependencies, etc.).</p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;API_for_Simple_Bytecode_Creation&quot;">1.6<tt>&nbsp;</tt><a name="(part._.A.P.I_for_.Simple_.Bytecode_.Creation)"></a><a name="(mod-path._compiler/compile-file)"></a>API for Simple Bytecode Creation</h4><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._compiler%2Fcompile-file%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/compile-file</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">base</span></span></td></tr></table></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._compiler/compile-file..rkt)._compile-file))"></a><span title="Provided from: compiler/compile-file | Package: base"><span class="RktSym"><span class="RktSymDef RktSym">compile-file</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">src</span><span class="hspace">&nbsp;</span>[<span class="RktVar">dest</span><span class="hspace">&nbsp;</span><span class="RktVar">filter</span>]<span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">src</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">dest</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=let.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._let-values%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">let-values</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktPn">(</span><span class="RktSym">base</span><span class="hspace">&nbsp;</span><span class="RktSym">name</span><span class="hspace">&nbsp;</span><span class="RktSym">dir?</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._split-path%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">split-path</a></span><span class="hspace">&nbsp;</span><span class="RktVar">src</span><span class="RktPn">)</span><span class="RktPn">]</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._build-path%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">build-path</a></span><span class="hspace">&nbsp;</span><span class="RktSym">base</span><span class="hspace">&nbsp;</span><span class="RktVal">"compiled"</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-add-suffix%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-add-suffix</a></span><span class="hspace">&nbsp;</span><span class="RktSym">name</span><span class="hspace">&nbsp;</span><span class="RktVal">#".zo"</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></td></tr></table></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">filter</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="hspace">&nbsp;</span><span class="RktPn">. </span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="RktPn"> .</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._any%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">any/c</a></span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>=<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=values.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._values%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">values</a></span></td></tr></table></blockquote></div><div class="SIntrapara">Compiles the Racket file <span class="RktVar">src</span> and saves the compiled code to
<span class="RktVar">dest</span>.  If <span class="RktVar">dest</span> is not provided and the
<span class="stt">"compiled"</span> subdirectory does not already exist, the
subdirectory is created. The result of <span class="RktSym">compile-file</span> is the
destination file&rsquo;s path.</div></p><p>If the <span class="RktVar">filter</span> procedure is provided, it is applied to each
source expression, and the result is compiled.</p><p>The <span class="RktSym">compile-file</span> procedure is designed for compiling modules
files, in that each expression in <span class="RktVar">src</span> is compiled
independently. If <span class="RktVar">src</span> does not contain a single
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=module.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._module%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">module</a></span> expression, then earlier expressions can affect the
compilation of later expressions when <span class="RktVar">src</span> is loaded
directly. An appropriate <span class="RktVar">filter</span> can make compilation behave
like evaluation, but the problem is also solved (as much as possible)
by the <span class="RktSym">compile-zos</span> procedure.</p><p>See also <span class="RktSym"><a href="#%28def._%28%28lib._compiler%2Fcm..rkt%29._managed-compile-zo%29%29" class="RktValLink" data-pltdoc="x">managed-compile-zo</a></span>.</p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;api:compile-path&quot;">1.7<tt>&nbsp;</tt><a name="(part._api~3acompile-path)"></a><a name="(mod-path._compiler/compilation-path)"></a>API for Bytecode Paths</h4><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="#%28mod-path._compiler%2Fcompilation-path%29" class="RktModLink" data-pltdoc="x"><span class="RktSym">compiler/compilation-path</span></a><span class="RktPn">)</span></td><td align="right"><span class="RpackageSpec"><span class="Smaller">&nbsp;package:</span> <span class="stt">base</span></span></td></tr></table></p><p class="SHistory">Added in version 6.0.1.10 of package <span class="stt">base</span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/compilation-path..rkt)._get-compilation-dir+name))"></a><span title="Provided from: compiler/compilation-path | Package: base"><span class="RktSym"><span class="RktSymDef RktSym">get-compilation-dir+name</span></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">path</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktPn">#:modes</span><span class="hspace">&nbsp;</span><span class="RktVar">modes</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:roots</span><span class="hspace">&nbsp;</span><span class="RktVar">roots</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><table cellspacing="0" cellpadding="0"><tr><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr></table></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">path</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">modes</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._non-empty-listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">non-empty-listof</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._and%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">and/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._relative-path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">relative-path?</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._use-compiled-file-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">use-compiled-file-paths</a></span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">roots</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._non-empty-listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">non-empty-listof</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">same</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-compiled-file-roots%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-compiled-file-roots</a></span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">Determines the directory that holds the bytecode form of <span class="RktVar">path</span>
plus base name of <span class="RktVar">path</span>.</div></p><p>The directory is determined by checking <span class="RktVar">roots</span> in order, and
for each element of <span class="RktVar">roots</span> checking <span class="RktVar">modes</span> in order.
The first such directory that contains a file whose name matches
<span class="RktVar">path</span> with <span class="stt">".zo"</span> added (in the sense of
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-add-suffix%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-add-suffix</a></span>) is reported as the return directory path.
If no such file is found, the result corresponds to the first elements
of <span class="RktVar">modes</span> and <span class="RktVar">roots</span>.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/compilation-path..rkt)._get-compilation-dir))"></a><span title="Provided from: compiler/compilation-path | Package: base"><span class="RktSym"><span class="RktSymDef RktSym">get-compilation-dir</span></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">path</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktPn">#:modes</span><span class="hspace">&nbsp;</span><span class="RktVar">modes</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:roots</span><span class="hspace">&nbsp;</span><span class="RktVar">roots</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">path</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">modes</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._non-empty-listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">non-empty-listof</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._and%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">and/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._relative-path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">relative-path?</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._use-compiled-file-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">use-compiled-file-paths</a></span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">roots</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._non-empty-listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">non-empty-listof</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">same</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-compiled-file-roots%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-compiled-file-roots</a></span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The same as <span class="RktSym">get-compilation-dir+home</span>, but returning only the first result.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><table cellspacing="0" cellpadding="0" class="prototype RForeground"><tr><td valign="top"><span class="RktPn">(</span><a name="(def._((lib._compiler/compilation-path..rkt)._get-compilation-bytecode-file))"></a><span title="Provided from: compiler/compilation-path | Package: base"><span class="RktSym"><span class="RktSymDef RktSym">get-compilation-bytecode-file</span></span></span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktVar">path</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span>[</td><td valign="top"><span class="RktPn">#:modes</span><span class="hspace">&nbsp;</span><span class="RktVar">modes</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">#:roots</span><span class="hspace">&nbsp;</span><span class="RktVar">roots</span>]<span class="RktPn">)</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">&rarr;</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path?</a></span></td></tr></table></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">path</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">modes</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._non-empty-listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">non-empty-listof</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._and%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">and/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._relative-path%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">relative-path?</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._use-compiled-file-paths%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">use-compiled-file-paths</a></span><span class="RktPn">)</span></td></tr></table></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td valign="top"><span class="hspace">&nbsp;&nbsp;</span></td><td valign="top"><span class="RktVar">roots</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">:</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fprivate%252Fmisc..rkt%2529._non-empty-listof%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">non-empty-listof</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=data-structure-contracts.html%23%2528def._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._or%252Fc%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">or/c</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Manipulating_Paths.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fmisc..rkt%2529._path-string%7E3f%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">same</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top">=</td><td valign="top"><span class="hspace">&nbsp;</span></td><td valign="top"><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._current-compiled-file-roots%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">current-compiled-file-roots</a></span><span class="RktPn">)</span></td></tr></table></td></tr></table></blockquote></div><div class="SIntrapara">The same as <span class="RktSym">get-compilation-dir+home</span>, but combines the
results and adds a <span class="stt">".zo"</span> suffix to arrive at a bytecode file
path.</div></p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" x-source-pkg="racket-doc" x-part-tag="&quot;zo&quot;">1.8<tt>&nbsp;</tt><a name="(part._zo)"></a>Compiling to Raw Bytecode</h4><p>The <span class="nobreak"><span class="stt">--no-deps</span></span> mode for <span class="stt">raco make</span> is an improverished
form of the compilation, because it does not track import
dependencies. It does, however, support compilation of non-module
source in an namespace that initially imports <a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=scheme&amp;rel=scheme.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">scheme</span></a>.</p><p>Outside of a module, top-level <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._define-syntaxes%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define-syntaxes</a></span>,
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=module.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._module%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">module</a></span>, <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._%7E23%7E25require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">#%require</a></span>,
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fdefine..rkt%2529._define-values-for-syntax%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define-values-for-syntax</a></span>, and <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=begin.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._begin%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">begin</a></span> expressions
are handled specially by <span class="stt">raco make --no-deps</span>: the compile-time
portion of the expression is evaluated, because it might affect later
expressions.</p><p>For example, when compiling the file containing</p><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span><span class="hspace">&nbsp;</span><span class="RktSym">racket/class</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._define%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define</a></span><span class="hspace">&nbsp;</span><span class="RktSym">f</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">class</span><span class="hspace">&nbsp;</span><span class="RktSym">object%</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">super-new</span><span class="RktPn">)</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr></table></blockquote><p>the <span class="RktSym">class</span> form from the <a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=mzlib_class.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">racket/class</span></a> library
must be bound in the compilation namespace at compile time. Thus, the
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span> expression is both compiled (to appear in the output
code) and evaluated (for further computation).</p><p>Many definition forms expand to <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._define-syntaxes%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define-syntaxes</a></span>. For example,
<span class="RktSym">define-signature</span> expands to <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._define-syntaxes%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define-syntaxes</a></span>. In
<span class="nobreak"><span class="stt">--no-deps</span></span> mode, <span class="stt">raco make --no-deps</span> detects
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=define.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._define-syntaxes%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">define-syntaxes</a></span> and other expressions after expansion, so
top-level <span class="RktSym">define-signature</span> expressions affect the compilation
of later expressions, as a programmer would expect.</p><p>In contrast, a <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._load%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">load</a></span> or <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._eval%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">eval</a></span> expression in a source
file is compiled&#8212;<wbr></wbr>but <span style="font-style: italic">not evaluated!</span>&#8212;<wbr></wbr>as the source file is
compiled.  Even if the <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._load%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">load</a></span> expression loads syntax or
signature definitions, these will not be loaded as the file is
compiled. The same is true of application expressions that affect the
reader, such as <span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Reading.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._read-case-sensitive%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">read-case-sensitive</a></span><span class="stt"> </span><span class="RktVal">#t</span><span class="RktPn">)</span>. The <span class="nobreak"><span class="stt">-p</span></span> or
<span class="nobreak"><span class="stt">--prefix</span></span> flag for <span class="stt">raco make</span> takes a file and loads it before
compiling the source files specified on the command line.</p><p>By default, the namespace for compilation is initialized by a
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=require.html%23%2528form._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._require%2529%2529&amp;version=6.3" class="RktStxLink Sq" data-pltdoc="x">require</a></span> of <a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=scheme&amp;rel=scheme.html&amp;version=6.3" class="RktModLink Sq" data-pltdoc="x"><span class="RktSym">scheme</span></a>. If the <span class="nobreak"><span class="stt">--no-prim</span></span>
flag is specified, the namespace is instead initialized with
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.3/html/local-redirect/index.html?doc=reference&amp;rel=Namespaces.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._namespace-require%252Fcopy%2529%2529&amp;version=6.3" class="RktValLink Sq" data-pltdoc="x">namespace-require/copy</a></span>, which allows mutation and
redefinition of all initial bindings (other than syntactic forms, in
the case of mutation).</p><p>In general, a better solution is to put all code to compile into a
module and use <span class="stt">raco make</span> in its default mode.</p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, &quot;6.3&quot;, &quot;../&quot;);" onfocus="this.style.color=&quot;black&quot;; this.style.textAlign=&quot;left&quot;; if (this.value == &quot;...search manuals...&quot;) this.value=&quot;&quot;;" onblur="if (this.value.match(/^ *$/)) { this.style.color=&quot;#888&quot;; this.style.textAlign=&quot;center&quot;; this.value=&quot;...search manuals...&quot;; }"/></form>&nbsp;&nbsp;<a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot(&quot;6.3&quot;);">top</a></span><span class="navright">&nbsp;&nbsp;<a href="index.html" title="backward to &quot;raco: Racket Command-Line Tools&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;raco: Racket Command-Line Tools&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="exe.html" title="forward to &quot;2 raco exe: Creating Stand-Alone Executables&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>