The “Best Compiler” title gives members of the winning team both bragging rights and an attractive plaque announcing their excellence in the compilation domain. PA7 submissions were treated as submissions to the contest; however, performance in the bakeoff did not affect course grades.
Compilers are compared using the following criteria, listed roughly in order of importance:
Compilers are evaluated using several Xi and oXi programs, testing both language features and performance. These benchmarks test the performance of objects, arrays, loops, recursion, redundant computations, and more.
We had a remarkable number of excellent compiler projects this year, so picking the best one was a real challenge. The winning compiler project was that of Drew Dunne, Jacob Glueck, Alex Libman, and Daniel Wisner. Across our set of benchmarks, their compiler compiled the most programs correctly and the code it generated was 19% faster, on average, than the next fastest compiler. They also implemented some tricky language extensions, including first-class functions and safe downcasting. Perhaps surprisingly, their compiler, written in Java, contained less code than those of several other groups.
Honorable mentions go to three other groups who did an outstanding job of writing compilers that worked well and generated good code: