macOS Special-Casing to Keep Apps Working
What do Photoshop, Matlab, Panic Transmit, and Eclipse have in common? They are among the 299 apps for which macOS applies compatibility fixes.
Here’s the full list of bundle IDs, along with the functions that checks for them, and the first caller to those functions.
[…]
Compatibility fixes are applied by checking the
bool __CFAppVersionCheckLessThan(CFStringRef, CFSystemVersion)
function, which returns true if the current app matches the specified bundle ID and is linked on or prior to the macOS version. Thus, older versions of the app would have the fix applied, while newer versions built with a newer SDK would not.
First things first, not sure “so buggy” is the right note here. Might be that, or might be more a combination of “so important” and taking advantage of a feature or bit of code that has been put out to pasture or has been replaced.
Apple has been special-casing apps in system software updates for 30+ years. This is an instructional tech article but not a dramatic revelation, and shouldn’t reflect poorly on the apps or their authors. Often they were working around our bugs.
Yep. We were doing this at least as far back as the original 128K Mac.
Good example how Apple cares about backwards compatibility: A bug was fixed WebKit breaking the Box app (which fails to make any policy decision in its decidePolicyForMIMEType delegate) so the old behavior is now covered.
2 Comments RSS · Twitter
Spolsky on SimCity and Windows:
They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
He links to more stories in the post... and the post is from 2004. This has been going on a loooong time.
Yeah, perhaps buggy is the wrong wording, but I loved the post anyway. Thank you to Ruffin as well for sharing the Spolsky link. I've read it before, but never saved the url.