We need special handling for protocols whose requirement signature exists but is in a serialized state, as we cannot run the StructuralRequirementsRequest on such a protocol as there's no work to be done, effectively.
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:
Typesetting the PDF
It's written in TeX, so to typeset the PDF yourself, you need a TeX distribution:
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 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 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 IV:
- Completion
The following chapters are not yet written:
- Part III:
- Existential Types
- Part IV:
- The Property Map
- Minimization