1. A method for performing a compilation process on a computer program, the method comprising: performing a programming language-independent portion of the compilation process; invoking through a first language interface a first language module to perform programming language-dependent analysis of the computer program; invoking through the first language interface the first language module to perform code generation for the computer program; providing feedback to one or more clients based on at least one of the analysis and the code generation; and wherein the first language interface is coupled to the first language module.