diff --git a/docs/ABI.rst b/docs/ABI.rst index 30f570f91dd32..f2f474def6f89 100644 --- a/docs/ABI.rst +++ b/docs/ABI.rst @@ -11,7 +11,7 @@ The Swift ABI Hard Constraints on Resilience ------------------------------ -The root of a class hierarchy must remain stable, at pain of +The root of a class hierarchy must remain stable, at the inconvenience of invalidating the metaclass hierarchy. Note that a Swift class without an explicit base class is implicitly rooted in the SwiftObject Objective-C class. @@ -27,7 +27,7 @@ Structs and tuples currently share the same layout algorithm, noted as the is as follows: - Start with a **size** of **0** and an **alignment** of **1**. -- Iterate through the fields, in element order for tuples, or in ``var`` +- Iterate through the fields, in element order for tuples, or in ``var`` declaration order for structs. For each field: * Update **size** by rounding up to the **alignment of the field**, that is, @@ -39,7 +39,7 @@ is as follows: **alignment of the field**. - The final **size** and **alignment** are the size and alignment of the - aggregate. The **stride** of the type is the final **size** rounded up to + aggregate. The **stride** of the type is the final **size** rounded up to **alignment**. Note that this differs from C or LLVM's normal layout rules in that *size* @@ -261,7 +261,7 @@ Existential Container Layout Values of protocol type, protocol composition type, or "any" type (``protocol<>``) are laid out using **existential containers** (so-called -because these types are "existential types" in type theory). +because these types are "existential types" in type theory). Opaque Existential Containers ````````````````````````````` @@ -838,7 +838,7 @@ The first identifier in a ```` is a string that represents the file the original declaration came from. It should be considered unique within the enclosing module. The second identifier is the name of the entity. -Not all declarations marked ``private`` declarations will use the +Not all declarations marked ``private`` declarations will use the ```` mangling; if the entity's context is enough to uniquely identify the entity, the simple ``identifier`` form is preferred. @@ -915,7 +915,7 @@ Types type ::= 'b' type type // objc block function type type ::= 'c' type type // C function pointer type type ::= 'F' throws-annotation? type type // function type - type ::= 'f' throws-annotation? type type // uncurried function type + type ::= 'f' throws-annotation? type type // uncurried function type type ::= 'G' type + '_' // generic type application type ::= 'K' type type // @auto_closure function type type ::= 'M' type // metatype without representation diff --git a/docs/DriverInternals.rst b/docs/DriverInternals.rst index 24c6fd407aa3e..0d213388169b4 100644 --- a/docs/DriverInternals.rst +++ b/docs/DriverInternals.rst @@ -24,10 +24,10 @@ Driver Stages The compiler driver for Swift roughly follows the same design as Clang's compiler driver: -1. Parse: Command-line arguments are parsed into ``Arg``\ s. A ToolChain is +1. Parse: Command-line arguments are parsed into ``Arg``\ s. A ToolChain is selected based on the current platform. -2. Pipeline: Based on the arguments and inputs, a tree of ``Action``\ s is - generated. These are the high-level processing steps that need to occur, +2. Pipeline: Based on the arguments and inputs, a tree of ``Action``\ s is + generated. These are the high-level processing steps that need to occur, such as "compile this file" or "link the output of all compilation actions". 3. Bind: The ToolChain converts the ``Action``\ s into a set of ``Job``\ s. These are individual commands that need to be run, such as @@ -114,7 +114,7 @@ Analysis` for more information. The Compilation's TaskQueue controls the low-level aspects of managing subprocesses. Multiple Jobs may execute simultaneously, but communication with the parent process (the driver) is handled on a single thread. The level of -parellelism may be controlled by a compiler flag. +parallelism may be controlled by a compiler flag. If a Job does not finish successfully, the Compilation needs to record which jobs have failed, so that they get rebuilt next time the user tries to build