llvm/llvm-project
Lore
This page tells the story of how llvm/llvm-project evolved. It is built from git tags, commit dates, and the public release history. Where the precise reason for a change isn't recorded, the text uses hedging language ("appears to have been", "likely") rather than inventing detail.
Eras
The University of Illinois years (2001 – 2003)
The earliest commit in this repository is dated 2001-06-06: "New repository initialized by cvs2svn." LLVM started as a research project by Chris Lattner and Vikram Adve at the University of Illinois at Urbana-Champaign. The first tagged release, llvmorg-1.0.0, lands on 2003-10-24 — a little over two years from the first commit. In this era LLVM was a JIT-friendly intermediate representation with a small set of tools; there was no Clang yet. The early llvm/ tree, the IR/ and Support/ libraries, and the first SelectionDAG instruction selector trace their lineage to this period.
Apple, Clang, and the rise of an alternative C compiler (2004 – 2010)
Clang began as a separate Apple-led project in 2007 and merged into the LLVM umbrella shortly after. The 1.x → 3.x release cadence in this era is roughly annual. llvmorg-2.0 was released in 2007 (just before this repo's git history shows tagged releases for 2.x; the LLVM 2.x line spans 2007 – 2009). Apple's adoption was the inflection point: it took LLVM from "promising research compiler" to "shipping in iOS toolchains and Xcode" and seeded a long line of Apple-led contributions to the C++ front end, the Objective-C runtime, and Mach-O codegen.
In parallel, the SVN repo grew. The 2009 commit-volume jump in the by-the-numbers chart corresponds to large drops of LLDB, libc++, and compiler-rt into the LLVM family.
The major-version sprint (2011 – 2017)
LLVM moved to a roughly six-month release cadence and added subprojects rapidly. Key arrivals in this era:
- LLD — the LLVM linker — gradually replaced the older "ELF resolver" experiments. Active development through 2015 made it production-ready for ELF and COFF.
- MLIR preparation work — though MLIR formally lands later (see below), groundwork in CodeGen and TableGen during this period made the "multi-IR" approach feasible.
- Polly — the polyhedral optimizer — was added as an opt-in plugin.
- Sanitizers — AddressSanitizer (2011), ThreadSanitizer (2012), MemorySanitizer (2014), UndefinedBehaviorSanitizer (2014). The corresponding runtimes live in
compiler-rt/lib/.
Major releases in this era include 4.0.0 (2017-03-07) and 5.0.0 (2017-09-01), the first to follow the new "X.Y.Z" numbering.
The monorepo migration (2017 – 2019)
Until 2019 LLVM lived in a fleet of related-but-separate SVN repositories. The transition to a single git monorepo (llvm-project) — what this repository is — was multi-year, contentious, and one of the most consequential structural changes the project has made. Subproject directories like clang/, clang-tools-extra/, libcxx/, etc., became siblings of llvm/ rather than separate VCS roots. The benefit is the one this wiki relies on: an atomic commit can change Clang, an LLVM IR pass, and a libc++ test in one place.
Releases in this stretch:
6.0.0— 2018-03-027.0.0— 2018-09-138.0.0— 2019-03-159.0.0— 2019-09-17
MLIR, Flang, and the multi-IR turn (2019 – 2022)
MLIR was released by Google in 2019 and donated to LLVM, becoming the mlir/ subproject. This is arguably the second-biggest architectural shift in the project's history (after the monorepo move). MLIR's "dialect" model lets one IR framework span tensor algebra, polyhedral loops, GPU kernels, hardware design, and the existing LLVM IR — without forcing any of them into the LLVM IR mold.
Flang — the modern C++ rewrite of the original DARPA Fortran front end — moved into the monorepo around the same time and quickly took a hard dependency on MLIR for its lowering pipeline. Flang's runtime was carved out into flang-rt/ later.
Releases:
10.0.0— 2020-03-1111.0.0— late 202012.0.0— 2021-04-0614.0.0— 2022-03-14
The runtimes consolidation and accelerator era (2022 – present)
Several long-running threads converged in this era:
llvm-libcmatured from "experiment" to "shipping a usable libc" with hosted-Linux and embedded targets.- The
offload/subproject moved from openmp's offload directories into a top-level subproject targeting GPUs, FPGAs, and other accelerators broadly — seeoffload/README.md. Its first meeting was scheduled in early 2024. - GlobalISel continued to mature and overtook SelectionDAG as the default instruction selector for AArch64 and AMDGPU.
bolt/(Binary Optimization and Layout Tool) was upstreamed from Meta's internal fork in 2022 and now ships as a first-class LLVM tool.- CIR (Clang IR) — an MLIR dialect that Clang can emit between AST and LLVM IR — has been landing through 2024 – 2026. The latest commit at the time of this wiki snapshot is "[CIR] Fix unused variable warning (#195130)".
orc-rt/was carved out as a top-level subproject for the ORC JIT runtime.
Releases:
15.0.0–19.1.0— six-monthly through 2022 – 2024.19.1.0— 2024-09-1720.1.0— 2025-03-04
The project has shown no sign of slowing: 2025 set a record of 41,345 commits, and 2026 is on pace for similar volume.
Longest-standing features
| Feature | Approx. introduced | Status |
|---|---|---|
LLVM IR (Module, Function, Instruction, type system) |
2001 | Still the central abstraction. The textual IR has remained stable enough that 2003-era .ll files are largely still parseable. |
llvm::Support (StringRef, SmallVector, Twine, cl::opt) |
2001 – 2005 | Imported by virtually every C++ file in the repo. The single most-included header tree. |
| TableGen | 2003 | Originally for instruction patterns; now describes attributes, intrinsics, register info, scheduling, and Clang attribute lists. |
| SelectionDAG | early 2000s | Still the default instruction selector for most targets; coexists with GlobalISel. |
lit testing |
mid-2000s | Drives every check-* target. The DSL has been stable for a decade. |
Deprecated or replaced features
- The legacy pass manager (legacy PM). Replaced by the "new pass manager" through 2018 – 2021 for IR passes. Still alive in the codegen pipeline as of this snapshot.
- The original f18 / "old flang" Fortran front end. Replaced by the current Flang (a C++ rewrite that originated as
f18). Mentioned inflang/README.md: "It started off as the f18 project ... with an aim to replace the previous flang project ... and address its various deficiencies." - The MIPS, ARC, AVR, and SPARC backends are still present but quieter than the headline targets — Mips development has slowed dramatically as ARM and RISC-V displaced it in mobile and embedded markets.
SVN-basedtooling. After the monorepo migration in 2019 the SVN-era scripts and infrastructure were retired.PNaCl/ Native Client backends and tooling. Retired around 2017 – 2018 as Google deprecated NaCl.
Major rewrites
- Monorepo migration (2017 – 2019). Discussed above. The single largest structural change.
- The new pass manager (2017 – 2021). A wholesale replacement of how passes are composed and scheduled.
- GlobalISel (2017 onward). A second instruction-selection framework that runs in parallel with SelectionDAG; some targets have switched fully.
- CIR / Clang's MLIR pipeline (2024 – ongoing). Clang gains an MLIR-based intermediate stage between AST and LLVM IR.
- Flang's f18 rewrite (2018 – 2022). Replaced the older flang implementation entirely.
Growth trajectory
Annual commit volume tells most of the story:
- 2001 – 2008 — "research project" volume (1k – 13k commits/year)
- 2009 – 2014 — broad industry adoption (20k – 25k commits/year)
- 2015 – 2021 — sustained leveling off near 30k – 35k commits/year
- 2022 – present — sustained growth past 37k/year, peaking above 41k in 2025
The contributor base has scaled in lockstep: 2,578 unique authors in the last 12 months alone, against a lifetime total of 7,200. The bus factor on most subsystems is in the double digits, which is why a large project run by volunteers can keep moving forward without any single sponsor.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.
Previous
By the numbers
Next
Fun facts