Drop "cascading" and "private" dependency from the lexicon

This is no longer a meaningful distinction.
This commit is contained in:
Robert Widmann
2020-09-21 11:44:38 -06:00
parent 3cee2af345
commit 41b976f8f9
2 changed files with 0 additions and 51 deletions

View File

@@ -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
=====================

View File

@@ -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