Quite naturally, whereas ordinary compilers make a so-called clean build, that is, (re)build all program modules, an incremental compiler recompiles only modified portions of a program.
By effectively building upon previously compiled output files, an incremental compiler avoids the wasteful recompiling of entire source files, where most of the code remains unchanged.
The compiler can be invoked at runtime on some source code or data structure managed by the program, which then produces a new compiled program fragment containing machine code that is then immediately available for use by the runtime system.
This scheme allows for a degree of self-modifying code and requires metaprogramming language features.
The ability to add, remove and delete code while running is known as hot swapping.