I've just skimmed through the paper, it seems they share lots of high-level concepts with Firadrake/FEniCS, although it's weird they don't systematically compare to these approaches (OK, fine for Firedrake that is a new system, but FEniCS...)
As for the code optimizations: the loop fission thing is interesting, although it's exactly the work the Carlo and OP2 people did in OP2. And they don't say the most important aspects: *when* they have to apply that and what "semi-automatically" means. As for the "explicit" vectorization, I'm really surprised a compiler can't do what they claim, perhaps that's why they don't even mention how they compiled the code, as far as I saw (btw, they also contradict themselves, since they also say "Since Kranc generates out- put in a high-level language (e.g. C++), it does not have to deal with very low-level architecture details such as register allocation or instruction selection." It would be interesting to know more.
-- Fabio