Compile time

minc compared with clang and MSVC building the box3d sample browser: a 3D physics engine, a sokol renderer, a Dear ImGui interface, and ~150 interactive sample scenes.

The C compilers build the upstream C/C++ tree: 112 translation units through CMake and Ninja, about 294,000 lines. minc builds the box3d-minc, generated from the same source by a C-minc-transpiler written in minc. All builds emit similar 128-bit SIMD code. minc code is 235,988 lines. Same machine as the runtime performance page.

Full build

Wall-clock seconds from clean to a runnable binary. Lower is better. (CMake configure time is not included, minc has no configure step.)

optimizedoptimization off
compiler24 threads1 thread24 threads1 thread
minc2.8 s2.8 s1.8 s1.8 s
clang14.7 s52.4 s4.6 s24.4 s
MSVC9.3 s36.6 s3.5 s19.9 s

minc is single-threaded and compiles the whole application in one process, so its 24-thread and 1-thread columns are the same measurement. Optimized, the C builds get Ninja's full parallelism and still finish 3.3× (MSVC) and 5.3× (clang) behind; compiler against compiler on one thread, the gap is 13× and 19×.

Incremental rebuild

The C builds recompile only what depends on the change, then relink. minc has no incremental mode: every build is the full 236,000 lines.

changemincclangMSVC
one engine .c file2.80.90.8
one sample .cpp file2.80.90.8
a public engine header2.84.74.5

C toolchains win during incremental builds: one translation unit plus a relink is under a second, against minc's flat 2.8 s full rebuild. Change a common header and minc wins: the C builds recompile nearly ninety translation units and now take longer than minc takes to rebuild the whole application.

What each build compiles

C/C++minc
compilation units1121
source lines~294,000235,988
build systemCMake + Ninjanone
linkerMSVC linknone (direct PE)
binary size3.36–3.54 MB3.57 MB

The C line count covers the engine (src/), the samples application, and the vendored dependencies it compiles: Dear ImGui, ImPlot, nativefiledialog and the sokol headers. System and Windows SDK headers are not counted, though the C compilers parse them in every translation unit. The minc line count is the compiler's own count of the single unit it compiled, which includes the box3d port, the sokol and ImGui bindings, and the application. All three binaries are statically linked.

Most of the line-count difference is shaders: upstream commits 54,000 lines of per-backend generated shader headers, while the minc browser writes each shader once as a minc function and the compiler cross-compiles it for the active backend during the build.

Test setup

MachineAMD Ryzen 9 5900X, 12 cores / 24 threads, 32 GB, Windows 11, stock power plan, idle
minc0.9.14, default flags (optimized build, bounds checking on)
MSVC19.44.35227 (Visual Studio 2022, 17.14.32), CMake Release config
clang-cl19.1.5, target x86_64-pc-windows-msvc (bundled with Visual Studio 2022), CMake Release config
Build systemCMake 4.1.2 + Ninja 1.13.2 for the C builds; minc invoked directly
box3dupstream 2386141. minc builds the published box3d-minc module; the C compilers build the upstream sources directly
Date2026-09-01

Notes

How fast the generated code runs: Performance.

Questions, or a project where minc compiles noticeably slower? Open an issue.