Before this change, the compiler provider looked up the arguments for a
given language, and passed those to the compiler, where the language was
guessed from the arguments.
Instead we now pass the language together with the arguments into the
function, and no more guessing is needed. Besides being cleaner, it may
not always be possible to guess the language from the given arguments