Skip to content

Latest commit

 

History

History

Generics

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

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:

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