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.
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.
- 01 / LOAD
Get the compiler and inputs
Download and check the shipped compiler, its frozen source, and the SDK it needs.
Ready - 02 / REBUILD
Build a new compiler
The shipped compiler compiles its own source here. Each output must match the native-produced build.
Waiting - 03 / REPEAT
Build it again
The new compiler repeats the build. Every corresponding output must match again.
Waiting - 04 / CHECK
Try the rebuilt compiler
Run checks for accepted and rejected C++ and for x86 output.
Waiting
Building, one file at a time
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.
Click the game to focus it. Arrow keys move, Ctrl performs an action, Alt jumps, and Esc opens the menu. Audio starts with Play.
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.