Can AI compile 22‑year‑old code?
CompileBench measures whether today’s AI can ship a working binary when faced with dependency hell, legacy toolchains, cross‑compiling, and cryptic logs — not just pass coding puzzles. We report success, cost, and speed on end‑to‑end builds of real open‑source projects.
Read the announcement: Introducing CompileBench
Comic about dependency management
Based on XKCD 2347 ("Dependency").
Why this benchmark
When ChatGPT launched in 2022, it struggled with reliable code. Today’s best models can generate full apps and win contests — but real engineering is the messy middle: making old code run on new machines, picking the right flags, fixing brittle build scripts, and proving the binary works. CompileBench evaluates that reality.
How it works
  • We provide unmodified source code of an open‑source project and a clear build goal (e.g., “produce a working jq binary”).
  • The agent gets an interactive Linux terminal (Docker) and uses function‑calling to iterate: configure, patch, compile, install, and verify.
  • It must figure out the build system (Autotools/Make/CMake or custom), resolve missing headers and libraries, and choose flags (dynamic vs static, glibc vs musl, cross‑compile targets).
  • We record every command, log, error, token cost, and total time end‑to‑end; some long‑horizon tasks require 100+ commands or 15+ minutes.
What we measure
  • Accuracy: pass@1 (one try) and pass@N (within a few tries).
  • Cost: total model spend in USD across attempts; we show a Pareto frontier of best price for each accuracy.
  • Speed: total time = model inference time + terminal execution time.
  • Commands executed: a proxy for how much digging and fixing was needed.
See the ranking page for success, cost, and speed breakdowns.
Verification & anti‑cheating
Each task includes checks that validate the produced binaries (e.g., version matches sources, static vs dynamic linking, actual functionality). These guardrails catch shortcuts such as copying system utilities or swapping dynamic for static builds when a static build was requested.
Definition of “success”
A run counts as successful when the produced binary passes a task‑specific check (for example, sha1sum returns the expected value, or jq --help works). Each attempt’s full transcript and outputs are available on its page.
Scope and limitations
  • This benchmark focuses on end‑to‑end build outcomes, not code style or long‑term maintainability.
  • Tasks span small to large projects, modern and legacy setups; they are representative, not exhaustive.
  • We report absolute totals (cost/time/commands) so you can judge real‑world effort; per‑task pages include averages.
Open source

The benchmark, harness, and report generator are open‑source. Contributions and new task proposals are welcome.

View the project on GitHub

Read the announcement blog post: Introducing CompileBench