Friday, December 6, 2019

Apple’s Technology Transitions

Martin Pilkington:

While this saving of disk space and RAM usage certainly benefits the Mac, there are arguably more important reasons to Apple for dropping 32 bit on the Mac. They don’t actually have much to do with 32 bit itself, but more with decisions that were made in 2007 when 64 bit was finalised.


When Apple introduced 64 bit with Mac OS X 10.5, they also introduced Objective-C 2.0. Part of this was a new and improved runtime, designed to fix problems with the old runtime. Unfortunately, these fixes were not compatible with existing apps, so they made the decision to only make this runtime available in 64 bit. However, this meant the (now) legacy runtime would have to stick around as long as 32 bit apps existed.


The behaviour of the legacy runtime effectively means that Apple can never update their existing objects with new ivars without breaking existing apps.

PDFKit accidentally did just that in Sierra, causing crashes in 32-bit apps that displayed PDFs, as the framework tried to access variables that didn’t exist.

ARC has been off-limits, too. Apple’s framework developers have been working with one hand tied behind their backs.


Update (2019-12-17): Pierre Lebeaupin:

Leopard (10.5) only ostensibly added support for 64-bit GUI apps. It was considered still rough and very few 64-bit GUI apps shipped until Snow Leopard (10.6), but the best indicator is iTunes, which ended up requiring Lion (10.7) to run as 64-bit.


the major reason why 68k ended up being supported as long as it was was that it supported mixed-mode. This meant no duplicate use of RAM, since all apps were using the same copy of all OS-supplied code, and no duplicate maintenance effort, for the same reason.

3 Comments RSS · Twitter

Weak references made it to the 32 bit runtime a few years ago (10.12 I think?). Not sure if any other ARC features were unavailable for 32 bit macOS apps at that point.

Still, the fragile base class issue was a PITA to deal with on its own and the source of much frustration, bugs and lack of ported features from iOS.

@El Yeah, I guess there was a brief window where ARC was available in 32-bit.

Article is a bit misleading on what’s meant by Carbon deprecation and removal. Some classic MacOS APIs brought across as Carbon were updated to 64-bit so are still active parts of Mac OS X (e.g. under CoreServices).

Leave a Comment