# mrkline/concurrency-primer

The basics of low-level concurrency in a sub-30 minute read
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.

# What every systems programmer should know about concurrency

This repo contains the LaTeX source for a pretentiously-named, but hopefully concise, introduction to low-level concurrency.

## Where do I get a copy?

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.

## How do I build it?

1. 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)

2. Install pygments, a Python syntax highlighter. This is used by the LaTeX package minted to handle our syntax highlighting.

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

4. 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."

5. Enjoy a beautifully typeset concurrency-primer.pdf.