Cabal semantics for multiple compilers