This repo contains the LaTeX source for a pretentiously-named, but hopefully concise, introduction to lockless concurrency.
The latest version should always be available at http://assets.bitbashing.io/papers/lockless.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
ortexlive-core
. The same package should also provide thelatexmk
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 Robertson's Roboto, and mononoki by "madmalik". 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 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 lockless.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 invokelualatex -halt-on-error -shell-escape lockless.tex
until it no longer warns, "Label(s) may have changed. Rerun to get cross-references right."
-
Enjoy a beautifully typeset lockless.pdf.