I'm not sure if there are already good names for this, but I can't find anything useful when I look online.

Obviously, when compiling programs, parallelizing the work is crucial. There seem to be two main approaches:

  • Compiler is single-threaded, build system spawns N compilers (C, C++, others I'm sure)
  • Compiler is multi-threaded (Rust, Zig)

I'm looking into this because I'm looking at designing a programming language, and I have fast compilation as an explicit goal. Zig and Rust obviously have some of the same ideas but wildly different compilation speeds. C is known to be quite fast to compile, while C++ templates are slow(?).

In terms of parallelization, why is it that a parallel compiler seems to be the choice for newer languages? Is this a coincidence or explicitly required because of e.g. circular imports?