The C/C++ language family apparently has multithreaded compiler implementations that work on file level parallelism, but the Microsoft C# compiler (csc.exe) is single-threaded only.  MSBuild supports multithreaded building, but only at the project level, and obviously dependency projects have to be compiled before the projects that depend on them so there are practical limits to parallelism.Is there a multithreaded C# compiler that I'm not aware of?  If not, is there something about the C# language specification that prevents a multithreaded C# compiler, or is it just hard and therefore not worth it?  
Is there something that prevents a multithreaded C# compiler implementation?
c#;compiler
The correct answer is almost certainly because the current state of multi-threading is already adequate for the task.  Or, if you like, because the costs of providing additional multithreading exceed the benefits.As you already know, implementing multiple threads in a program doesn't guarantee a speed improvement.  Threads have overhead, so unless the performance improvement is greater than the overhead, it's not worth it.  Using too many threads can actually slow down a program.  If the program is I/O bound, the optimal number of simultaneously running threads is probably the number of processor cores (8 in my computer, if you count the hyper-threading as separate cores), but you still need a way to break the work into individual units first.Because the Roslyn compiler is written in C#, it can take advantage of the Task Parallel Library to parallelize some tasks:Both the native compilers and the Roslyn compilers are primarily single-threaded, but the higher-level pieces of Roslyn, such as the language services, take advantage of the Task Parallel Library (TPL) for multi-threading when calling the compiler APIs. For example, Visual Basic and C# methods are essentially standalone once parsed and can be compiled in parallel under Roslyn.