PowerPC application (Microsoft Word for Mac 2004) running on OS X for Intel in Rosetta
|Operating system||Mac OS X 10.4.4–10.6.8 (Intel)|
macOS Big Sur 11.0–present (ARM)
|Type||PowerPC binary translation (original version)|
Intel binary translation (Rosetta 2)
Rosetta is a dynamic binary translator developed by Apple Inc. for macOS, an application compatibility layer between different instruction set architectures. It gives developers and consumers a transition period in which to update their application software to run on newer hardware, by "translating" it to run on the different architecture. The name "Rosetta" is a reference to the Rosetta Stone, the artifact which enabled translation of Egyptian hieroglyphs.
The first version of Rosetta, introduced in 2006 as a component of Mac OS X Tiger, allows PowerPC applications to run on Intel-based Macs. The second version, introduced in 2020 as a component of macOS Big Sur, is part of the Mac transition from Intel processors to Apple silicon.
Apple has used four series of CPU architectures in its Macintosh line of computers: the Motorola 68000 series, the PowerPC series, the Intel Core series, and its own series of ARM-type processors. Each transition has rendered software produced for the earlier architecture incompatible with the new one, creating a need for software allowing the newer platform to emulate the previous one.
When it introduced its first PowerPC systems, Apple included software in System 7.1.2 and later versions of the operating system to emulate a 68000-series system. This emulator takes advantage of features built into the PowerPC processors, and accesses the very lowest levels of the OS, running at the same level as – and tightly connected to – the Mac OS nanokernel. This means that the nanokernel is able to intercept PowerPC interrupts, translate them to 68k interrupts (then doing a mixed mode switch, if necessary), and then execute 68k code to handle the interrupts. This allows lines of 68k and PowerPC code to be interspersed within the same fat binary.
|Mac transition to|
Apple released the first version of Rosetta in 2006 when it began switching the Macintosh line from the PowerPC to the Intel processor. It was initially included with Mac OS X v10.4.4 "Tiger", the version that was released with the first Intel-based Macs, and allows many PowerPC applications to run on Intel-based Mac computers without modification. Rosetta is based on QuickTransit technology. It has no user interface, and launches as needed with no notification of the user, which led Apple to describe it as "the most amazing software you'll never see". Rosetta is not installed by default in Mac OS X v10.6 "Snow Leopard", but is available as an installable option. Rosetta is neither included nor supported in Mac OS X v10.7 "Lion" or later, which therefore cannot run PowerPC applications.
Because of the greater architectural differences between Intel and PowerPC processors, Rosetta operates at a higher level than the 68000 emulator did, as a user-level program that can only intercept and emulate user-level code. It translates G3, G4, and AltiVec instructions, but not G5 instructions. Although most commercial software for PowerPC-based Macs was compatible with these requirements (G4 systems were still widely used at the time), any applications that relied on G5-specific instructions had to be modified by their developers to work on Rosetta-supported Intel-based Macs. Apple advised that applications with heavy user interaction but low computational needs (such as word processors) would be best suited to use with Rosetta, while applications with high computational needs (such as games, AutoCAD, or Photoshop) would not.
Rosetta also does not support the following:
- The Classic environment, and thus any non-Carbon application built for Mac OS 9 or earlier
- Code that inserts preferences into the System Preferences pane
- Applications that require precise exception handling
- Screen savers
- Kernel extensions and applications that depend on them
- Bundled Java applications or Java applications with JNI libraries that cannot be translated
- Java applets in Rosetta-translated applications, meaning that a native Intel web browser application, rather than a legacy PowerPC version, must be used to load Java applets
|Mac transition to|
This section needs expansion. You can help by adding to it. (November 2020)
In 2020, Apple announced Rosetta 2 would be bundled with macOS Big Sur, to aid in the Mac transition to Apple Silicon. The service permits many applications compiled exclusively for execution on x86-64-based processors to be translated for execution on Apple silicon.
In addition to the just-in-time (JIT) translation support, Rosetta 2 offers ahead-of-time compilation (AOT), with the x86-64 code fully translated, just once, when an application without a universal binary is installed on an Apple Silicon Mac.
Rosetta 2's performance has been praised greatly. In some benchmarks, x86-64-only programs performed better under Rosetta 2 on a Mac with an Apple M1 SOC than natively on a Mac with an Intel x86-64 processor. One of the key reasons why Rosetta 2 provides such high level of translation efficiency is the support of x86-64 memory ordering in Apple M1 SOC.
Rosetta 2 works for a lot of software, but not all; some don't work at all or are reported to be "sluggish". A lot of software can be made compatible with the new Macs by the vendor recompiling the software, often a simple task, while for some software (such as software that includes assembly language code, or that generates machine code), the changes to make them work aren't simple or automated.
Similar to the first version, Rosetta 2 does not normally require user intervention. When a user attempts to launch an x86-64-only application for the first time, macOS prompts them to install Rosetta 2 if it is not already available. Subsequent launches of x86-64 programs will execute via translation automatically. An option also exists to force a universal binary to run as x86-64 code through Rosetta 2, even on an ARM-based machine.
- Fat binary § Apple's fat binary – combined 68k/PPC applications that run natively on both processors
- Universal binary – combined PPC/Intel applications that run natively on both processors
- Universal 2 binary – combined Intel/ARM applications that run natively on both processors
- Core Duo iMacs debut speedy new chips Archived March 3, 2012, at the Wayback Machine
- Warren, Tom (June 22, 2020). "Apple is switching Macs to its own processors starting later this year". The Verge. Retrieved June 22, 2020.
- "The brains behind Apple's Rosetta: Transitive". CNET News.com. June 8, 2005. Archived from the original on July 14, 2014. Retrieved July 4, 2007.
- "Rosetta". Apple. Archived from the original on November 16, 2010. Retrieved September 5, 2011.
- AppleInsider Staff (February 26, 2011). "Mac OS X Lion drops Front Row, Java runtime, Rosetta". AppleInsider. AppleInsider, Inc. Archived from the original on April 29, 2014. Retrieved February 27, 2011.
- "Rosetta" (PDF). Universal Binary Programming Guidelines, Second Edition. Apple. Archived from the original (PDF) on August 3, 2012. Retrieved September 5, 2011.
- "What Can Be Translated?" (PDF). Universal Binary Programming Guidelines, Second Edition. Apple. Archived from the original (PDF) on August 3, 2012. Retrieved September 5, 2011.
- Mayo, Benjamin (June 22, 2020). "Apple announces Mac architecture transition from Intel to its own ARM chips, offers emulation path". 9to5Mac. Retrieved June 23, 2020.
- WWDC2020 Keynote. Apple Inc. June 22, 2020. Event occurs at 1h39m37s.
It translates the apps when you install them, so they can launch immediately and can be instantly responsive. Rosetta 2 can also translate code on the fly when needed.
- Evans, Jonny (November 19, 2020). "Everything you need to know about Rosetta 2 on Apple Silicon Macs". Computerworld. Retrieved December 8, 2020.
- "Yeah, Apple's M1 MacBook Pro is powerful, but it's the battery life that will blow you away". TechCrunch. Retrieved December 8, 2020.
- @ErrataRob (November 25, 2020). "4/ So Apple simply cheated. They added Intel's memory-ordering to their CPU. When running translated x86 code, they switch the mode of the CPU to conform to Intel's memory ordering" (Tweet) – via Twitter.
- Carlton, Sam (December 8, 2020). "ThatGuySam/doesitarm". Retrieved December 8, 2020.
- "r/mac - Apps on Rosetta 2". reddit. Retrieved December 8, 2020.