Hacker News new | ask | show | jobs
by msbarnett 2802 days ago
There was a big kernel change from Rhapsody and OS X Server 1 to Mac OS X Public Beta. Rhapsody/OSXS1 and NeXTSTEP had used Mach 2.5 with the BSD 4.3 personality (Rhapsody/OSXS1 was, essentially, just re-skinned NeXTSTEP without any compatibility with the classic OS X API ("blue box", later "carbon")). With OS X Public Beta, the kernel was replaced with a new one based on Mach 3 with a new Unix personality based on porting FreeBSD's upper layers onto the Mach microkernel.

It's not inconceivable that a lot of the previous x86 compatibility was lost or broken at that time. Certainly anecdotes from the Marklar x86 skunkworks team indicated that they spent about 2 years porting and fixing a lot of bugs, which had to be submitted to the normal kernel team via patches that were very carefully written to seem as though they were requesting changes related to niche PPC behaviours (for instance, the PPC was bi-endian, so you could plausibly start submitting changes related to various endian brokenness as if you had tried to use that).

And of course, other layers -- Quartz, Carbon, I/O Kit, and a bunch of others, had never existed in NeXTSTEP and may have needed their own porting work from scratch. NeXTSTEP ran on x86, but a lot had changed since then.

2 comments

But more important than a lot of the actual porting work was that the overall portability work had been done. Gone were most of the inline assembly / platform-specific hacks and optimizations that earlier iterations of Mac OS and 68k NeXT code likely had.
Right, if it was unmaintained (which I could easily believe it was!) I wouldn't be at all unsurprised by it being a multi-year effort to get it working again with all the big changes made to OS X in the time period.

And things that were rewritten from scratch for Aqua (in 10.0, like the entire graphics stack) will have never run on a little-endian system, and those alone would be a major porting effort.