Tiger 2002
- This is not standard C++
We used to run the standard compiler from NetBSD: egcs 1.1.2. This was not standard C++ (e.g., we used to include
<iostream.h>
}, we could use members of thestd
name space unqualified etc.). In addition, we were usinghash_map
which is an SGI extension that is not available in standard C++. It was therefore decided to upgrade the compiler in 2003, and to upgrade the programming style.- Wrapping a tarball is impossible
During the first edition of the Tiger Compiler project, students had to write their own Makefiles—after all, knowing Make is considered mandatory for an Epitean. This had the most dramatic effects, with a wide range of creative and imaginative ways to have your project fail; for instance:
Forget to ship some files
Ship object files, or even the executable itself. Needless to say that NetBSD executables did not run properly on Akim’s gnu/Linux box.
Ship temporary files (*~, #*#, etc.).
Ship core dumps (“Wow! This is the heck of an heavy tarball…’’).
Ship tarballs in the tarball.
Ship tarballs of other groups in the tarball. It was then hard to demonstrate they were not cheating :)
Have incorrect dependencies that cause magic failures.
Have completely lost confidence in dependencies and Make, and therefore define the
all
target as first runningclean
and then the actual build.As a result Akim grew tired of fixing the tarballs, and in order to have a robust, efficient (albeit some piece of pain in the neck sometimes) distribution [1] we moved to using Automake, and hence Autoconf.
There are reasons not to be happy with it, agreed. But there are many more reasons to be sad without it. So Autoconf and Automake are here to stay.
Note, however, that you are free to use another system if you wish. Just obey the standard package interface (Submission).
- The
SemantVisitor
is a nightmare to maintain The
SemantVisitor
, which performs both the type checking and the translation to intermediate code, was near to impossible to deliver in pieces to the students: because type checking and translation were so much intertwined, it was not possible to deliver as a first step the type checking machinery template, and then the translation pieces. Students had to fight with non applicable patches. This was fixed in Tiger 2003 by splitting theSemantVisitor
intoTypeVisitor
andTranslationVisitor
. The negative impact, of course, is a performance loss.- Akim is tired during the student defenses
Seeing every single group for each compiler stage is a nightmare. Sometimes Akim was not enough aware.
Footnotes