We are very excited about the release of BitWise 1.7.1 Beta 1 yesterday, mostly because the Mac OS X 10.4 version is now a Universal Binary that runs natively on both PPC and Intel Macs. I must say, Apple has done a really nice job with their build tools to make this fairly straightforward. On the other hand, a really nasty surprise with Quicktime 7 for Mac OS X 10.3 caused the release to be delayed a day while I engaged in a bitter war with the compiler.
When I went to build BitWise 1.7.1 Beta 1 for Mac OS X 10.3, I was getting hundreds of nonsense link errors. I eventually uncovered that Quicktime 7 (which I had recently installed) brings with it some libraries that are compiled with GCC 4.0 (that's the theory, anyway), and linking has effectively been broken for C++ applications. Not good, Apple! The only way that I made it work was to use 10.4 for compiling and build for a 10.3 target. This is pretty cool, too, if you really think about it.
One choice that I made when making this switch was to compile the 10.3 version with GCC 4 rather than 3.3. Normally, the user wouldn't care, except in this case applications compiled with GCC 4 will only run on 10.3.9, and not any previous version of 10.3. This is because the libraries needed to run applications compiled with GCC 4 were not included until 10.3.9. While we could still use 3.3 and allow BitWise to run on versions less than 10.3.9, the advantage to the user is that GCC 4.0 is able to better optimize the cryptography library, thus making BitWise faster on slower machines (especially noticable during voice chat). We think that this is a worthwhile tradeoff, and for various reasons, I expect many Universal applications will require 10.3.9 or higher for very similar reasons. 10.3.9 is a free upgrade to any 10.3 user, and while it may be a big download on dialup, you only have to do it once.
I hope you have enjoyed this behind the scenes look at the building of 1.7.1 Beta 1 for Mac OS X. To any developer out there still developing using 10.3, heed my advice: do not upgrade to QuickTime 7 if you build C++ applications! It will save you many hours of scratching your head going, "Huh?" and then realizing your only option is to reformat and not install QuickTime 7, or upgrade to Tiger. Ouch.
And this is why I couldn't handle maintaining a C++ product. The first weird compiler malfunction and I'd be out!