Hacker News new | past | comments | ask | show | jobs | submit login

Can you share any story on Mac OS 9.x vs Mac OSX transition? How big of a leap was it under the hood? Why?



OSX has absolutely nothing in common with what’s now called Classic.

I’m sure you’re aware that OSX and, indeed, the current macOS is a UNIX like operating system. Hence, it’s more BSD and Linux like.

To aid legacy Macintosh applications, such as Photoshop and MS Office to run on OSX, an emulator was provided in early OSX releases that would detect old apps and run them in the emulator.

These apps were later modified to use a Classic (mostly) compatible set of libraries known as “Carbon”. This allowed them to run native but still have their older codebases.

The Carbon UIs were often written with a framework called “PowerPlant”, part of the Metrowerks C++ IDE.

Essentially, it gave large old codebases time to rework their code to the NeXTStep frameworks called “AppKit” and “FoundationKit” (rebadged as “Cocoa” by Apple).

Carbon APIs have now mostly been deprecated or removed as nowadays applications are written in Objective-C, the preferred NeXT language, and mixed with C++. Or, if they’re trivial Mac only apps, they might be written in “Swift”.

I do recall at Agfa in Belgium we had an effort to get the existing Mac products out of CodeWarrior’s compiler and into the g++ tool chain. It was non-trivial as the compiler Apple had provided for C++ wasn’t up to date. We had an Apple tech guy on site and he relayed the issue back to Apple and fixes to the compiler we’re made. Still, the code was PowerPlant based so looked old fashioned.

At another gig, Macromedia ported Flash from “CFM” to “mach-o” format (Classic Carbon to g++) and it failed to run. It turned out the g++ linker couldn’t handle code segments more than 32mb. Flash was a single blob of a binary. Apple released a new linker.

I think much if the reason why Apple moved off g++ to clang was due to the difficulty in maintaining g++ on their fork.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: