Next: Tiger 2003, Previous: Fair Criticism, Up: History [Contents][Index]
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 the std
name space unqualified etc.). In
addition, we were using hash_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.
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:
all
target as first running clean
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 2 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 (see Submission).
SemantVisitor
is a nightmare to maintainThe 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 the SemantVisitor
into
TypeVisitor
and TranslationVisitor
. The negative impact,
of course, is a performance loss.
Seeing every single group for each compiler stage is a nightmare. Sometimes Akim was not enough aware.
Next: Tiger 2003, Previous: Fair Criticism, Up: History [Contents][Index]