This file is indexed.

/usr/share/doc/racket/raco/make.html is in racket-doc 6.1-4.

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
<!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="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">17&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">18&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._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><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.1&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.1&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-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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._load%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">load</a></span> instead of <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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-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.1/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.1" 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.1/html/local-redirect/index.html?doc=guide&amp;rel=Module_Syntax.html%23%2528part._hash-lang%2529&amp;version=6.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=guide&amp;rel=Module_Syntax.html%23%2528part._hash-lang%2529&amp;version=6.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=guide&amp;rel=Module_Syntax.html%23%2528part._hash-lang%2529&amp;version=6.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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-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.1/html/local-redirect/index.html?doc=reference&amp;rel=index.html&amp;version=6.1" 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-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.1/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.1" 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 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><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktVar">delete-zos-when-rkt-file-does-not-exist?</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:security-guard</span><span class="hspace">&nbsp;</span><span class="RktVar">security-guard</span>]<span class="RktPn">)</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=runtime.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._version%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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><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><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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">file</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktVar">read-src-syntax</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:security-guard</span><span class="hspace">&nbsp;</span><span class="RktVar">security-guard</span>]<span class="RktPn">)</span></td><td><span class="hspace">&nbsp;</span></td><td>&rarr;</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">read-src-syntax</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">syntax?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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 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><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktVar">read-src-syntax</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:security-guard</span><span class="hspace">&nbsp;</span><span class="RktVar">security-guard</span>]<span class="RktPn">)</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">read-src-syntax</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">syntax?</a></span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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><span class="hspace">&nbsp;</span></td><td>&rarr;</td><td><span class="hspace">&nbsp;</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._if%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">proc</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=if.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._if%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=booleans.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._not%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">pc</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktVar">cust</span>]<span class="RktPn">)</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" 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.1/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.1" 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><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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">list-of-files</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktPn">#:worker-count</span><span class="hspace">&nbsp;</span><span class="RktVar">worker-count</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:handler</span><span class="hspace">&nbsp;</span><span class="RktVar">handler</span>]<span class="RktPn">)</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">path?</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">non-negative-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.1/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.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">handler</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><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.1/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.1" 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">handler-type</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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="RktSym">path</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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="RktSym">msg</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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="RktSym">out</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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="RktSym">err</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span><span class="RktPn">)</span></td></tr></table></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.1" 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%29%29" class="RktValLink" data-pltdoc="x">parallel-compile</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.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._printf%2529%2529&amp;version=6.1" 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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">worker-count</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktVar">setup-fprintf</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktVar">append-error</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktVar">collects-tree</span><span class="RktPn">)</span></td><td><span class="hspace">&nbsp;</span></td><td>&rarr;</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">setup-fprintf</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><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.1/html/local-redirect/index.html?doc=reference&amp;rel=function-contracts.html%23%2528form._%2528%2528lib._racket%252Fcontract%252Fbase..rkt%2529._-%7E3e%252A%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span>*</a></span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktPn">[</span><span class="RktSym">stage</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" class="RktValLink Sq" data-pltdoc="x">string?</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.1/html/local-redirect/index.html?doc=reference&amp;rel=Writing.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._format%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">format</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=void.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._void%2529%2529&amp;version=6.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">append-error</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><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.1/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.1" class="RktStxLink Sq" data-pltdoc="x"><span class="nobreak">-&gt;</span></a></span><span class="hspace">&nbsp;</span><span class="RktSym">cc?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">prefix</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=exns.html%23%2528def._%2528%2528lib._racket%252Fprivate%252Fbase..rkt%2529._exn%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">exn?</a></span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=pairs.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._null%7E3f%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">null?</a></span><span class="RktPn">)</span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">out</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktPn">[</span><span class="RktSym">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;</span><span class="RktPn">[</span><span class="RktSym">message</span><span class="hspace">&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" class="RktValLink Sq" data-pltdoc="x">string?</a></span><span class="RktPn">]</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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> internal utility function is used by <span class="stt">rack
setup</span> to compile collects in parallel.  The <span class="RktVar">worker-count</span> argument
specifies the number of compile workers to spawn during parallel compilation.
The <span class="RktVar">setup-fprintf</span> and <span class="RktVar">append-error</span> functions are internal
callback mechanisms that <span class="stt">raco setup</span> uses to communicate intermediate
compilation results.  The <span class="RktVar">collects-tree</span> argument is a compound
datastructure containing an in-memory tree representation of the collects
directory.</div></p><h4 x-source-module="(lib &quot;scribblings/raco/raco.scrbl&quot;)" 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.1/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.1" 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><p class="RForeground"><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><span class="hspace">&nbsp;</span><span class="RktVar">file</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.1/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.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">complete-path?</a></span><span class="RktPn">)</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.1/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.1" 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).</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. 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.</p><p>The <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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><p class="RForeground"><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><span class="hspace">&nbsp;</span><span class="RktVar">file</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.1/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.1" class="RktValLink Sq" data-pltdoc="x">void?</a></span></p></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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">complete-path?</a></span><span class="RktPn">)</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-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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">dest</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=values.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._values%2529%2529&amp;version=6.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=module.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._module%2529%2529&amp;version=6.1" 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-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.1/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.1" 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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">path</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktPn">#:modes</span><span class="hspace">&nbsp;</span><span class="RktVar">modes</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:roots</span><span class="hspace">&nbsp;</span><span class="RktVar">roots</span>]<span class="RktPn">)</span></td><td><span class="hspace">&nbsp;</span></td><td>&rarr;</td><td><span class="hspace">&nbsp;</span></td><td><table cellspacing="0" cellpadding="0"><tr><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">modes</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">relative-path?</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">roots</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">path</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktPn">#:modes</span><span class="hspace">&nbsp;</span><span class="RktVar">modes</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:roots</span><span class="hspace">&nbsp;</span><span class="RktVar">roots</span>]<span class="RktPn">)</span></td><td><span class="hspace">&nbsp;</span></td><td>&rarr;</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">modes</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">relative-path?</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">roots</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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><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><span class="hspace">&nbsp;</span></td><td><span class="RktVar">path</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span>[</td><td><span class="RktPn">#:modes</span><span class="hspace">&nbsp;</span><span class="RktVar">modes</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">#:roots</span><span class="hspace">&nbsp;</span><span class="RktVar">roots</span>]<span class="RktPn">)</span></td><td><span class="hspace">&nbsp;</span></td><td>&rarr;</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">path-string?</a></span></td></tr><tr><td><table cellspacing="0" cellpadding="0" class="argcontract"><tr><td><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">modes</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" class="RktValLink Sq" data-pltdoc="x">relative-path?</a></span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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><span class="hspace">&nbsp;&nbsp;</span></td><td><span class="RktVar">roots</span></td><td><span class="hspace">&nbsp;</span></td><td>:</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/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.1" 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.1/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.1" 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><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td><span class="hspace">&nbsp;</span></td><td>=</td><td><span class="hspace">&nbsp;</span></td><td><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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-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.1/html/local-redirect/index.html?doc=scheme&amp;rel=scheme.html&amp;version=6.1" 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.1/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.1" class="RktStxLink Sq" data-pltdoc="x">define-syntaxes</a></span>,
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=module.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._module%2529%2529&amp;version=6.1" class="RktStxLink Sq" data-pltdoc="x">module</a></span>, <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" class="RktStxLink Sq" data-pltdoc="x">#%require</a></span>,
<span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=begin.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._begin%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=mzlib_class.html&amp;version=6.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/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.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._load%2529%2529&amp;version=6.1" class="RktValLink Sq" data-pltdoc="x">load</a></span> or <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._eval%2529%2529&amp;version=6.1" 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.1/html/local-redirect/index.html?doc=reference&amp;rel=eval.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._load%2529%2529&amp;version=6.1" 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.1/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.1" 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.1/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.1" class="RktStxLink Sq" data-pltdoc="x">require</a></span> of <a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=scheme&amp;rel=scheme.html&amp;version=6.1" 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.1/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.1" 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.1&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.1&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>