1. A method for compiling source code in parallel, comprising: accessing the source code; identifying types contained within the source code, the types comprising at least one type; parsing the types identified in the source code to generate a plurality of Abstract Syntax Trees (ASTs), the plurality of ASTs being generated in parallel; adding semantic information to each of the plurality of ASTs to form a plurality of enriched ASTs; splitting, based on a name of the at least one type, the enriched ASTs to different modules that form an assembly, wherein the different modules are determined by classes in the source code; performing compilation for each of the different modules that is performed in parallel; and generating executable code for each of the modules.