mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Overhaul the "Conformance Paths" chapter to use the new notation for derived requirements.
77 lines
2.0 KiB
Markdown
77 lines
2.0 KiB
Markdown
# Compiling Swift Generics
|
|
|
|
This is a book about the *implementation* of generic programming--also known as parametric polymorphism--in the Swift compiler. The first four chapters also give an overview of the Swift compiler architecture in general.
|
|
|
|
## Downloading the PDF
|
|
|
|
A periodically-updated PDF is available here:
|
|
|
|
> https://download.swift.org/docs/assets/generics.pdf
|
|
|
|
## Typesetting the PDF
|
|
|
|
It's written in TeX, so to typeset the PDF yourself, you need a TeX distribution:
|
|
|
|
- [MacTeX](https://www.tug.org/mactex/mactex-download.html): macOS
|
|
- [TeX Live](https://www.tug.org/texlive/): Linux, Windows
|
|
- [MikTeX](https://miktex.org): another alternative for macOS, Linux, Windows
|
|
|
|
### Using `make`
|
|
|
|
Running `make` in `docs/Generics/` will run `pdflatex` and `bibtex` in the right order to generate the final document with bibliography, index and cross-references:
|
|
|
|
```
|
|
cd docs/Generics/
|
|
make
|
|
```
|
|
|
|
### Using `latexmk`
|
|
|
|
A more modern alternative is to use `latexmk`, which runs `pdflatex` and `bibtex` until fixed point:
|
|
|
|
```
|
|
cd docs/Generics/
|
|
latexmk -pdf generics.tex
|
|
```
|
|
|
|
### Manually
|
|
|
|
You can also just do this:
|
|
|
|
```
|
|
cd docs/Generics/
|
|
pdflatex generics
|
|
bibtex generics
|
|
pdflatex generics
|
|
pdflatex generics
|
|
```
|
|
|
|
## Reading the PDF
|
|
|
|
The book makes use of internal hyperlinks so it is is best to use PDF reader with support for PDF bookmarks and back/forward history:
|
|
|
|
- Preview.app on macOS fits the bill; you can add Back/Forward buttons to the toolbar with **View** > **Customize Toolbar**.
|
|
- [Skim.app](https://skim-app.sourceforge.io) is a BSD-licensed open source PDF reader for macOS.
|
|
|
|
The font size and link targets are probably too small for a smartphone display, so I recommend using something bigger.
|
|
|
|
## Current Status
|
|
|
|
This is a work in progress.
|
|
|
|
The following chapters need some editing:
|
|
|
|
- Part II:
|
|
- Substitution Maps
|
|
- Part IV:
|
|
- Completion
|
|
|
|
The following chapters are not yet written:
|
|
|
|
- Part III:
|
|
- Opaque Return Types
|
|
- Existential Types
|
|
- Part IV:
|
|
- The Property Map
|
|
- Rule Minimization
|