This is an interface wrapping around different compilers. It's usually not
used directly but by a portability layer.
