@@ -162,6 +162,25 @@ written "dupe". Pronounced the same way as the first syllable of
162
162
A value whose type is a protocol composition (including a single protocol
163
163
and * zero* protocols; the latter is the ` Any ` type).
164
164
165
+ ## explicit module build
166
+
167
+ A module build where all dependency modules (including Clang modules) are
168
+ passed to the compiler explicitly by an external build system, including
169
+ any modules in caches. See also: [ implicit module build] ( #implicit-module-build )
170
+ and [ fast dependency scanner] ( #fast-dependency-scanner ) .
171
+
172
+ ## fast dependency scanner
173
+
174
+ A Swift compiler mode that scans a Swift module for import declarations and
175
+ resolves which modules will be loaded. It is based on the
176
+ [ clang-scan-deps] ( https://llvm.org/devmtg/2019-04/slides/TechTalk-Lorenz-clang-scan-deps_Fast_dependency_scanning_for_explicit_modules.pdf )
177
+ library within Clang, for (Objective-)C modules, but is extended to also
178
+ understand textual Swift modules (.swiftinterface files).
179
+
180
+ The fast dependency scanner outputs a graph of compilation steps which can be
181
+ used by a build system to schedule
182
+ [ explicit module builds] ( #explicit-module-builds ) .
183
+
165
184
## fragile
166
185
167
186
Describes a type or function where making changes will break binary
@@ -193,6 +212,17 @@ compared directly.
193
212
194
213
[ "if and only if"] ( https://en.wikipedia.org/wiki/If_and_only_if ) . This term comes from mathematics.
195
214
215
+ ## implicit module build
216
+
217
+ A module build where the compiler is free to transparently build dependent
218
+ modules (including Clang modules), and access modules in different caches as
219
+ necessary. For example, if a textual Swift module (.swiftinterface file) for
220
+ a dependency does not have a corresponding binary Swift module (.swiftmodulea
221
+ file), the compiler may transparently build a binary Swift module from the
222
+ textual one as a cache for future compiler jobs, without involving any external
223
+ build system that invoked the compiler. See also:
224
+ [ explicit module build] ( #explicit-module-build ) .
225
+
196
226
## interface type
197
227
198
228
The type of a value or declaration outside its generic context. These types
0 commit comments