In Apple’s latest release of Logic 9.1, Apple have turned on 64 bit support. Now, I’m not privvy to the internal workings of the Logic code – I don’t even own a copy as I’m not a musician or post-audio guy – it is my understanding that 64 bit support requires the App to be written in Cocoa, the more modern of the underlying coding languages for OS X.
Logic was originally released on OS 9 and Windows by eMagic, long before the advent of OS X. (Apple purchased eMagic in mid 2002, less than a year after the first release of OS X 10.0, and Logic was well established before that.) Logic was therefore almost certainly written in the older language and used Carbon (the older language) for OS X compatibility.
As I’ve written before Apple initially announced that Carbon APIs (Programming interfaces) were going to be released in 64 bit; and then at WWDC 2007 announced that the Carbon APIs were NOT going to 64 bit after all. Basically meaning that, if you want 64 bit support (and you do with RAM hungry applications) then you have to rewrite to Cocoa.
This release of Logic would suggest that work has been completed on making Logic a Cocoa application supporting 64 bit.
That is good news because Apple have another piece of Carbon-heavy “legacy” code that they need to rewrite to Cocoa if it’s to go to 64 bit. That application is Final Cut Pro. The action on Logic is another data point that Apple is very keen to get its applications to 64 bit as soon as possible. Of course, the Final Cut Pro team are also dependent on QuickTime to also support a 64 bit Cocoa API through the QTkit framework.
Right now, the QTKit Framework lacks support for QuickTime features that Final Cut Pro needs: like the ability to read and write QuickTime Metadata through QTKit. (This is currently handled by the older “deprecated” C API from the Carbon days. A deprecated Framework can still be used but Apple are giving notice that you shouldn’t use it. Unfortunately, there’s no current alternative to the C API for that functionality.) So, it’s not as easy for the FCP engineers as it might have been for Logic because this example is only one place where the more modern API does not yet support essential functionality FCP needs.
Still, I’m encouraged by the Logic announcement.