A feature of most modern programming languages that allows each program module to be compiled on its own to produce an object file which the linker can later combine with other object files and libraries to produce the final executable. Separate compilation avoids processing all the source code every time the program is built, thus saving development time. The object files are designed to require minimal processing at link time. They can also be collected together into libraries and distributed commercially without giving away source code (though they can be disassembled).
Examples of the output of separate compilation are C object files (extension ".o") and Java ".class" files.