Advanced 6 topic areas 85+ exercises

Compiler / Language Design Engineer

Compiler Engineers operate at the intersection of formal language theory and systems programming, and they must articulate highly abstract concepts — from grammar productions to register allocation — in English design documents, RFC proposals, and code reviews. This path builds vocabulary across the full compilation pipeline: front-end parsing, intermediate representations, optimisation passes, and code generation.

Topics covered

  • Front-End Pipeline Vocabulary
  • IR & SSA Form
  • Optimisation Passes
  • LLVM Vocabulary
  • Type System Language
  • Language Spec Writing

Vocabulary spotlight

4 terms every Compiler / Language Design Engineer should know in English:

abstract syntax tree n.

A tree representation of the syntactic structure of source code in which each node denotes a construct in the language

"After parsing, the front-end lowers the abstract syntax tree into HIR before type-checking begins."
canonicalise v.

To transform an expression or data structure into a standard, normalised form to simplify subsequent analysis

"The middle-end pass canonicalises all loop induction variables into a single normalised form before applying vectorisation."
static single assignment n.

An intermediate representation property where every variable is assigned exactly once, simplifying dataflow analysis

"Converting the control-flow graph to static single assignment form enables the compiler to perform more aggressive dead-code elimination."
emit v.

To produce or output machine code, assembly, or another target representation as the final stage of compilation

"The LLVM backend emits optimised ARM64 assembly after the instruction selection and register allocation passes complete."
Open full glossary →

📚 Vocabulary Reference

Key terms organised by category for Compiler / Language Design Engineers:

Front-End Pipeline

lexertokeniserparsergrammarproduction ruleASTHIRname resolution

Intermediate Representation

IRSSA formbasic blockcontrol-flow graphphi nodeuse-def chain

Optimisation

dead-code eliminationinliningloop unrollingvectorisationconstant foldingalias analysiscanonicalise

Back-End & Code Generation

instruction selectionregister allocationspillemittarget triplecalling convention
Study full vocabulary modules →

Recommended exercises

Real-world scenarios you'll practise

  • Presenting an RFC for a new language feature to a standards committee, defending your approach to type inference with formal precision.
  • Reviewing a pull request that introduces a new optimisation pass and writing detailed comments about potential soundness issues.
  • Writing the "Rationale" section of a language specification chapter explaining why a particular grammar production was chosen over alternatives.
  • Explaining the difference between SSA construction strategies to a junior engineer during an onboarding session.

Recommended reading

Explore another role

🧩 WebAssembly Runtime Engineer

Open path →