So, yesterday REALbasic 2007 Release 2 was released, and I can finally say what I’ve been wanting to say for 3 months now: REALbasic 2007 release 2 was developed in REALbasic 2007 release 1. Additionally, this past week and a half or so, I was using REALbasic 2007 release 2 to fix bugs in REALbasic 2007 release 2, ensuring that everything is working for us internally, as well as giving release 2 some good real-world usage.
And boy, I must say, incremental compilation is *nice*. I have two machines I use for development, my personal MacBook with 2 GB of ram, and a 24-inch iMac also with 2GB of ram. The IDE project is quite large, but with 2 gigs of ram, I didn’t really page-out much in release 1 when compiling. However, it was a huge speedup compared to running our internal mutant version of 5.5 in Rosetta. The IDE compile speeds clocked in at around 34 seconds for me.
Switching to Release 2, the compile speed is down to 31 seconds for the first run, but wow… when fixing bugs I often experience under 10 second compilation times because of the new incremental compiler.
What else is new? Aaron did an incredible job with adding tons of new features to the debugger. Most of them restore functionality that was lost in the 5.5->2005 transition, but some of the functionality added is stuff we’ve been wishing we could do for a very long time. Take for example string viewing. Now you can see the binary contents of the string, view the string in different encodings, and even set the encoding right in the debugger! Debugging encoding issues couldn’t be easier now.
What did I add? Well, I fixed a ton of bugs. Unfortunately, one of the biggest bug fixes came towards the end of the cycle when 10.4.9 was released. There was a bug with KeyDown events being fired twice if they were unhandled, and the proper fix was to update some really old code. How old? Old in terms that it was originally written back in the System 7.5 days. It’s always been working, so there hasn’t been a pressing need to update it. Until now, that is.
Of course, updating it caused a lot of ill effects, such as default buttons no longer working (turns out *that* code was ancient too). All said, the 10.4.9 update put a lot of stress on the final builds, but I think we only let one new bug out relating to these large changes.
And I also added Code Folding. But it’s not really that big of a deal — I wanted a break from my other projects on a Friday afternoon, and walah, a few hours later we had code folding. It works on the same system that indentation works, which is why it has a few “but I want it to work *that* way, not this way!” moments. The rule is very simple: any block start that has a match below can be folded, and the code between the block start and the match below will be hidden when folded. For example:
If True Then
// this comment will disappear
End If
In this situation, a little widget will appear next to “if true then” that can be clicked on. When folded, the “this comment will disappear” line will be hidden. While simple and elegant, it has a strangeness when dealing with Select Case blocks:
Select Case foo
Case bar
// This is a child of the "case bar" statement
Case baz
// This is a child of the "case baz" statement
End Select
A folding widget appears next to Select Case foo. Since there aren’t any lines between Select Case and the first Case statement (although it is legal to put comments there), it would seem intuitive that clicking the folding widget would fold something. However, because the rule is very simple and elegant in its implementation, it has no special cases at the moment. This isn’t necessarily how this feature will remain for years to come. We wanted to get some real world usage before rewriting it, only to rewrite it again, ad infinum. Unlike many other languages, REALbasic has a pretty complicated grammar defining what starts and ends a block.
All in all, I’m pleased with the result of Release 2. It’s bound to have a few new bugs due to some of the larger changes that took place. But for the most part, it’s working quite well for us internally, and so far it appears to be working pretty well externally as well. As usual, please file any bugs that you find are new to 2007 Release 2 as soon as you find them. We have a special fondness for new issues — we like to squash them as soon as possible.
Good luck, and enjoy!