urustc / built here

Source code. A browser. A new compiler.

A compiler.
Built right here.

Meet cppgm, a complete C++ compiler that runs locally in your browser. Watch it build itself twice, then use the result to build and play OpenLara.

See how it works ↓

Your browser does the compiling and linking in a worker. The server only supplies static files. The full rebuild takes several minutes; you can explore the code while it runs.

Ready to download the compiler and its inputs.

  1. 01 / LOAD

    Get the compiler and inputs

    Download and check the shipped compiler, its frozen source, and the SDK it needs.

    Ready
  2. 02 / REBUILD

    Build a new compiler

    The shipped compiler compiles its own source here. Each output must match the native-produced build.

    Waiting
  3. 03 / REPEAT

    Build it again

    The new compiler repeats the build. Every corresponding output must match again.

    Waiting
  4. 04 / CHECK

    Try the rebuilt compiler

    Run checks for accepted and rejected C++ and for x86 output.

    Waiting

Building, one file at a time

Completed—
Elapsed0:00
Peak guest memory—
Matching outputs0
Each square is a source file; the last is the link.○ Waiting   ◉ Running   ● Matched

Select a source file for its timing and output details.

Same source. Same settings. Same bytes.

What matching bytes tell us

Each corresponding object and final WebAssembly module is compared as actual bytes. Matching outputs show that this source, toolchain, and build profile reproduced the same result across these builds.

A match does not prove that the compiler is bug-free, secure, or correct for every program.

Technical details & downloads

The shipped WebAssembly compiler was built by cppgm on Linux. It rebuilds itself here; that rebuilt compiler then builds the next generation.

05 / PUT IT TO WORK

Build a game.
Then step inside it.

Use the rebuilt compiler to compile and link all OpenLara program sources in this browser. This build uses prebuilt SDK and runtime libraries and supplied game assets.

Available after the compiler rebuild and checks pass.

Game engineSound decoderDecompressorLink the game
Game build details & downloads

All game sources are compiled locally: main.cpp, stb_vorbis.c, and tinflate.c. The two .c files are compiled as C++.

OpenLara by XProger and contributors. Tomb Raider demo assets © their respective owners. Credits and build provenance.

LOOK UNDER THE HOODExplore the code Browse the compiler. Edit an example. Switch between WebAssembly and x86-64.

The same source passes through a shared LowIR representation before generating code for either target. WebAssembly can run here; x86-64 output is for inspection or download.

Open the explorer to load the compiler and source.

Source example.cpp

LowIR optimized view

Generated code

The editable example uses C++11 at -O3. Its object is produced directly from typed LowIR. A separate compiler invocation renders the LowIR view for inspection. Run calls int answer(int) with 10 in a disposable worker.