Under-the-Hood Mac OS X Mozilla Firefox 3 Improvements Detailed
Monday June 16th, 2008
Mozilla Mac developer Josh Aas has written a weblog post discussing some of the under-the-hood improvements specific to the Mac OS X version of Mozilla Firefox 3.
Josh describes how Firefox 3 has largely switched from Apple's legacy Carbon API (initially created to make it easier for developers to migrate OS 9 applications to OS X) to the more modern Cocoa. He also details how Firefox 3 delivers native-looking Aqua-style form controls in Web pages and explains how this actually has very little to do with the change to Cocoa.
Finally, Josh covers how graphics in Firefox 3 are drawn using Core Graphics (which encompasses the Quartz technologies) and ATSUI instead of the deprecated QuickDraw (which has been around in some form or another since the original Macintosh was launched in 1984). This change was achieved by replacing the Mac-specific graphics code with the cross-platform cairo library, which uses Core Graphics and ATSUI on OS X. Core Graphics can take advantage of hardware acceleration to improve performance.
All the changes Josh discusses were implemented in version 1.9 of the core Gecko rendering engine (rather than being specific to Firefox 3), so they will also find their way into other Mozilla-based applications, such as Mozilla Thunderbird (version 3.0 will be based on Gecko 1.9) and Camino (though Camino has used modern OS X technologies since its inception, it will benefit further from the upgrade to Gecko 1.9 in Camino 2.0).
Josh has also written a post outlining plans for more OS X improvements in Gecko 1.9.1, which is scheduled for completion around the end of this year. Much of the work will focus on continuing to remove Carbon code in favour of Cocoa, which will pave the way towards enabling 64-bit versions of Firefox and other Mozilla applications (64-bit OS X programs cannot use Carbon), though this work is unlikely to be finished in the 1.9.1 timeframe. Other improvements may include support for HTML data on the clipboard and reading proxy settings from the system-wide Network preferences.