Steve Jobs, known for his suprises, dropped the Mother of All Surprises at the WWDC Keynote this morning: Macs will be running on Intel processors by WWDC 2007. In fact, he had a few running on Intel machines this morning for his demos, with more showing up in the Mac OS X State of the Union. What does it all mean? Has His Steveness lost his mind? Isn’t the PowerPC superior and isn’t that why we were using it in the first place? What about Altivec? The developers are going to all switch to Windows!
Relax. It’s not nearly that bad, and there were some good reasons for the switch that make sense. The first problem that the PowerPC roadmap was running into was power-per-watt, or how much computer power you get out of the processor for every watt of electrical power you put into it. Having the most energy-efficient processor is a good idea for desktops. It’s absolutely crucial for laptops, who are designed if needed to run off of internal battery power. The PowerPC roadmap was showing modest increases in this category while Intel’s roadmap was showing more sharply increasing efficiency. The other thing was Intel’s processor’s being able to run cooler than the G5. Remember when the G3s and G4s came out? One of the pluses for those processors was that they ran cooler than the Pentium II and III, to the point where Apple experimented with convection-only cooling with the Cube. The G5 desktop comes out and the mantra became “the more fans, the better”, to the point of introducing water cooling. You have blazing power with the G5, but the keyword is blazing. One big reason why we haven’t seen the G5 laptop is because nobody at Apple wants to get sued for charbroiling the laps of their laptop users.
With the new processor comes a new challenge though: How do I make my apps, the ones that I absolutely rely on, work? Will they not work? How can they work?
Here, Apple’s been laying some of the groundwork for a number of years as a private insurance policy. Every version of OS X, from 2000 onwards, has been written for both x86 and PowerPC. Not the applications, just the OS. With XCode 2.01, they’ve been working on XCode tools to allow Cocoa and Carbon application developers to tweak and recompile their existing applications into an Intel/PowerPC “universal” binary. For those that remember the 68k/PowerPC changeover, think of the FAT binaries. There, the application, on launch, checked to see what processor they were running on. If they were being launched on a 68k machine, they’d switch to the 68k-compatible code in the program. If they were launched on a PowerPC, they’d switch to the PowerPC-compatible code. The application appearance wouldn’t change, nor would the functionality. From what I can tell, the same philosophy is behind Apple’s new Universal programs.
Of course, not everything’s going to be recompiled and Apple’s committed to supporting PowerPC-compatible apps to support the huge PowerPC Mac user base they’ve already got. To take care of this, Apple’s introduced Rosetta. I’ve stolen the following description of what Rosetta does (and doesn’t do) from Appendix A of the porting guide:
Rosetta is a translation process that runs a PowerPC binary on an Macintosh using an Intel microprocessor—it allows applications to run as nonnative binaries. Many, but not all, applications can run translated. Applications that run translated will never run as fast as they run as a native binary because the translation process itself incurs a processing cost. How compatible your application is with Rosetta depends on the type of application it is. Applications that have a lot of user interaction and low computational needs, such as a word processor, are quite compatible. Those that have a moderate amount of user interaction and some high computational needs or that use OpenGL are, in most cases, also quite compatible. Those that have intense computing needs aren’t compatible. This includes applications that need to repeatedly compute fast Fourier transforms (FFTs), that compute complex models for 3-D modelling, or compute ray tracing.
Rosetta is designed to translate currently shipping applications that run on a PowerPC with a G3 processor and that are built for Mac OS X.
Rosetta does not run the following:
* Applications built for Mac OS 8 or 9
* Code written specifically for AltiVec
* Code that inserts preferences in the System Preferences pane
* Applications that require a G4 or G5 processor
* Applications that depend on one or more kernel extensions
* Kernel extensions
* Bundled Java applications or Java applications with JNI libraries that can’t be translated
In short, this will let PowerPC-native apps run their code through a translator that tells the Intel processor what it should be doing. As you’ve noticed, there are some limitations, but on the whole Rosetta should allow most PowerPC-native apps to run on Intel-native Macs without recompiling. Once again going back into Apple history, Rosetta is similar in function to the 68k emulator that Apple embedded onto its PowerPC chips to allow the users to continue to run 68k applications. The emulation imposed a speed hit, but the processor was faster overall so the perceived hit was pretty minimal. From what I’ve seen, Rosetta promises to perform similarly.
What’s this all mean? Will you be able to run OS X on a Dell? Is this the end of Apple? No, and no. In short, here’s what it all means: Apple wants faster processors for their Powerbooks that won’t blister people’s legs from the heat of the processor. It wants them to run cooler, so the desktops don’t need eight fans. It wants them to run with more computational power per watt of energy, so your laptop battery will last longer. PowerPC couldn’t take them where they wanted to go, so they’re switching to something which can.