mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Drop "cascading" and "private" dependency from the lexicon
This is no longer a meaningful distinction.
This commit is contained in:
@@ -56,33 +56,6 @@ Note:
|
||||
> may change its members drastically.
|
||||
|
||||
|
||||
Cascading vs. Non-Cascading Dependencies
|
||||
========================================
|
||||
|
||||
If file A depends on file B, and file B depends on file C, does file A depend
|
||||
on file C? The answer is: maybe! It depends how file B is using file C. If all
|
||||
uses are inside function bodies, for example, then changing file C only
|
||||
requires rebuilding file B, not file A. The terminology here is that file B has
|
||||
a *non-cascading* dependency on file C.
|
||||
|
||||
By contrast, if changing file C affects the interface of file B, then the
|
||||
dependency is said to be *cascading,* and changing file C would require
|
||||
rebuilding both file B and file A.
|
||||
|
||||
The various dependency tracking throughout the compiler will look at the
|
||||
context in which information is being used and attempt to determine whether or
|
||||
not a particular dependency should be considered cascading. If there's not
|
||||
enough context to decide, the compiler has to go with the conservative choice
|
||||
and record it as cascading.
|
||||
|
||||
|
||||
Note:
|
||||
|
||||
> In the current on-disk representation of dependency information, cascading
|
||||
> dependencies are the default. Non-cascading dependencies are marked
|
||||
> `private` by analogy with the Swift `private` keyword.
|
||||
|
||||
|
||||
External Dependencies
|
||||
=====================
|
||||
|
||||
|
||||
@@ -100,18 +100,6 @@ These can usually be directly compared to test whether two types are the
|
||||
same; the exception is when generics get involved. In this case you'll need
|
||||
a [generic environment](#generic-environment). Contrast with [sugared type](#sugared-type).
|
||||
|
||||
## cascading dependency
|
||||
|
||||
A kind of dependency edge relevant to the incremental name tracking
|
||||
subsystem. A cascading dependency (as opposed to a
|
||||
[private dependency](#private-dependency) requires the Swift driver to
|
||||
transitively consider dependency edges in the file that defines the used
|
||||
name when incremental compilation is enabled. A cascading dependency is much
|
||||
safer to produce than its private counterpart, but it comes at the cost of
|
||||
increased usage of compilation resources - even if those resources are being
|
||||
wasted on rebuilding a file that didn't actually require rebuilding.
|
||||
See [DependencyAnalysis.md](DependencyAnalysis.md).
|
||||
|
||||
## Clang importer
|
||||
|
||||
The part of the compiler that reads C and Objective-C declarations and
|
||||
@@ -452,18 +440,6 @@ The file currently being compiled, as opposed to the other files that are
|
||||
only needed for context. See also
|
||||
[Whole-Module Optimization](#wmo-whole-module-optimization).
|
||||
|
||||
## private dependency
|
||||
|
||||
A kind of dependency edge relevant to the incremental name tracking
|
||||
subsystem. A private dependency (as opposed to a
|
||||
[cascading dependency](#cascading-dependency)) declares a dependency edge
|
||||
from one file to a name referenced in that file that does not
|
||||
require further transitive evaluation of dependency edges by the Swift
|
||||
driver. Private dependencies are therefore cheaper than cascading
|
||||
dependencies, but must be used with the utmost care or dependent files will
|
||||
fail to rebuild and the result will most certainly be a miscompile.
|
||||
See [DependencyAnalysis](DependencyAnalysis.md).
|
||||
|
||||
## QoI
|
||||
|
||||
"Quality of implementation." The term is meant to describe not how
|
||||
|
||||
Reference in New Issue
Block a user