Article Preview
Buy Now
FEATURE
The REALbasic Compiler
New & Improved
Issue: 1.5 (April/May 2003)
Author: Joe Strout
Author Bio: Joe Strout is a software engineer at REAL Software, and has also been known to play a passable game of Boggle now and then.
Article Description: No description available.
Article Length (in bytes): 14,342
Starting Page Number: 25
Article Number: 1512
Related Link(s): None
Excerpt of article text...
As most REALbasic users know by now, RB 5.0 uses a brand new compiler. But few people know the story behind this simple fact -- why it was done, what problems it was expected to solve, and what new problems it might cause. In this article I'll cover a bit of the history, and then explain what you need to know to use the new compiler most effectively.
Yesterday
From the dawn of REALbasic up through version 4.5, your code was compiled with what we affectionately call "the old compiler." Actually it was two compilers, one for MacOS and one for Windows. The two compilers shared very little code, but worked in basically the same way: the source code was parsed and compiled directly to machine language for the appropriate platform (see Figure 1).
This approach is known as "one-pass" compiling. It has two main advantages: it compiles code very quickly, and it is relatively expedient to write -- that is, if you wanted to write a compiler in a hurry, this is probably the method to use.
However, this quick development and quick compiling comes at a cost, especially in a cross-platform product like RB. Because we had a separate compiler for each platform, it would have been very expensive to add another platform (for example, Palm) -- we would have had to write a new compiler from scratch. For the same reason, there were also a number of subtle differences between the platforms. For example, I recently learned that parameters in a function call are evaluated left-to-right on MacOS (as you would expect), but with the old Windows compiler, they're evaluated right-to-left -- this sort of thing can introduce hard-to-find bugs into your code. Also, the two compilers had different bugs of their own. ByRef parameters, for instance, worked correctly on MacOS but never did work quite right on Win32. Finally, forget about doing any serious optimizing of the compiled code -- a one-pass compiler just isn't set up for that.
There were other issues with the old compilers as well, and to understand these requires a bit of historical perspective. REALbasic was originally the project of a single person, Andrew Barry -- and in fact it was a part-time, evenings-and-weekends project. He had precious little time to work on it, and had no reason to believe that someone else would ever have to maintain his code. Yet he managed to do what very few people in the world could have done: he wrote a complete development environment including not one, but two, compilers.
...End of Excerpt. Please purchase the magazine to read the full article.