Tuesday, June 24, 2008

whence Carbon?

I think I must be looking forward to Daniel's vacation nearly as much as he is himself, so I can get off this bus, but that time isn't here yet.

In the 5th installment in his series on myths about Snow Leopard Mr. Dilger addresses the notion that Snow Leopard abandons Carbon.

Carbon is the component of Mac OS X which derives from what the Mac OS was before it was combined with NEXTSTEP cum OpenStep. Loosely speaking, it was what was left after the 10% of Mac OS APIs that were incompatible with protected memory and preemptive multitasking were combed out, the remaining 90% were tuned up, and some of them were woven into lower level components that also served Cocoa, which derived from OpenStep. Carbon first appeared in Mac OS 8.6, allowing developers to get an early start on converting their applications so they would run on Mac OS X, when it was eventually released, and conversely apps written for Mac OS X using Carbon would also run on the final version of the classic Mac OS (9.2.2).

It was a good plan for a smooth transition, but it left Mac OS X with what were initially two distinct native GUIs, Carbon, derived from Mac OS, and Cocoa, derived from OpenStep, which complicated further development.

This state of affairs continued until Apple's WWDC 2007, during which it became evident that the Carbon GUI would not be making the jump from 32-bit to 64-bit computing, despite that some developers had already received advanced distributions of the developer tools including 64-bit Carbon, meaning it was a strategic decision rather than one driven by technical difficulties. Once the smoke cleared, it was also plain that 32-bit Carbon wasn't going away, certainly not in Leopard, and probably not for years to come.

(What follows is technically supposition or second-hand summation, since I'm not personally familiar with the APIs in question.)

By this time much of what had originally been Carbon had already been moved into or replaced by lower level components of Mac OS X, and were as much part of Cocoa as part of Carbon. Cocoa had also collected references to many or most of the remaining pieces of Carbon, so it had become relatively simple to use them from within a Cocoa application. What was left that was still identifiably Carbon, the part that wouldn't be making the 64-bit transition, was mainly GUI objects and drawing routines. These remain for compatibility with older software, as Cocoa's GUI support is considerably more sophisticated.

The future is Cocoa, but that doesn't mean your Carbon apps won't run on Snow Leopard, or even on Mac OS X 10.7, whenever it comes along.

No comments: