It seems to me like semantic checking is hard to parallelize, and nothing can be done efficiently without a lock-free hash table.
The codegen once all symbols are resolved could be parallelized but I'm pretty sure this is already the fastest part of the Nim compiler with lexing.
