Skip to content

Commit 27bc171

Browse files
[docs] Add module build related definitions to Lexicon.
1 parent 50c0534 commit 27bc171

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

docs/Lexicon.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,25 @@ written "dupe". Pronounced the same way as the first syllable of
162162
A value whose type is a protocol composition (including a single protocol
163163
and *zero* protocols; the latter is the `Any` type).
164164

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+
165184
## fragile
166185

167186
Describes a type or function where making changes will break binary
@@ -193,6 +212,17 @@ compared directly.
193212

194213
["if and only if"](https://en.wikipedia.org/wiki/If_and_only_if). This term comes from mathematics.
195214

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+
196226
## interface type
197227

198228
The type of a value or declaration outside its generic context. These types

0 commit comments

Comments
 (0)