About this site
Scope
This plan takes a C++ developer with no compiler background through the foundations needed to begin contributing to Clang, the C and C++ frontend in the LLVM project. The practical goal is a small, useful contribution that you understand and can test.
Clang parses and checks C++ and lowers it toward LLVM IR. LLVM provides optimization and machine-code infrastructure; libc++ is the standard-library implementation. This plan targets Clang frontend work. Advanced optimization passes, new CPU backends, full template semantics, modules, coroutines and ABI changes are later specializations.
- Days 1–7: compiler concepts and a small expression frontend written in C++.
- Days 8–12: basic LLVM IR and an end-to-end compiled toy program.
- Days 13–21: Clang source navigation, C++ diagnostics and regression tests.
- Days 22–30: select, investigate, test and submit a small contribution.
Sources and review date
Source review date: 2026-09-22. Curriculum version: 2026-09-22. Live documentation and policies may change; recheck contribution instructions and tool requirements when you use them.
The daily schedule, exercises, timing and website requirements are original recommendations. The linked references ground the technical workflow and reading assignments. Book readings map to Learn LLVM 17, Second Edition by Kai Nacke and Amy Kwan; this site links to the book and does not reproduce it. No page numbers are given on purpose.
Independent project
This is an independent personal study project. It is not affiliated with, sponsored by or endorsed by the LLVM project, the LLVM Foundation, Packt Publishing, the book’s authors or the author of Crafting Interpreters. Product names belong to their owners.
Nothing on this site records completed learning or contributions on anyone’s behalf. Progress you check off stays in your own browser. Contribution status should always be recorded as it actually stands: submitted, under review, merged or closed.
Privacy
The site is static. There are no accounts, analytics, cookies or server-side storage. Notes and progress use your browser’s local storage; see Notes for export, import and reset.