This repo contains the LaTeX source for a pretentiously-named, but hopefully concise, introduction to low-level concurrency.
The latest version should always be available at http://assets.bitbashing.io/papers/concurrency-primer.pdf. You can also find a rendered PDF for each tag with its release notes on Github and Gitlab.
Install a modern, Unicode-aware LaTeX, such as LuaLaTeX.
On Linux, this is usually as simple as installing your distro's TeX Live
package, e.g., texlive-base
or texlive-core
.
The same package should also provide the latexmk
script.
(See below)
Install pygments, a Python syntax highlighter. This is used by the LaTeX package minted to handle our syntax highlighting.
Change the fonts as-needed.
The official version is typeset with Matthew Butterick's
Equity,
Christian Schwartz's Neue Haas Grotesk,
and mononoki by Matthias Tellen.
In the likely case that you don't have all of these on your system,
you'll need to change the fontspec
declarations near the top of the .tex
file.
(You might want to tweak or remove the
colophon
while you're at it.)
You can also change the body font size by changing
\documentclass[fontsize=10pt, ...
to whatever you prefer.
Build the document using
latexmk -lualatex -latexoption=-halt-on-error -latexoption=-shell-escape concurrency-primer.tex
Note that latexmk
will run LuaLaTeX multiple times, since
TeX generates cross references in one pass, then links them in a second.
If you can't use latexmk
for some reason, you can manually invoke
lualatex -halt-on-error -shell-escape concurrency-primer.tex
until it no longer warns, "Label(s) may have changed. Rerun to get cross-references right."
Enjoy a beautifully typeset concurrency-primer.pdf.