In significant hardware transitions, one of the biggest challenges is app support. Apps developed to run on a specific processor won't run on another without recoding and recompiling. Apple solved this problem with Rosetta 2 in macOS Big Sur.
With the Apple Silicon transition more or less complete in late 2022, Apple expects developers to build software that runs on M-series processors natively. Rosetta 2 still works, but users should expect Apple to remove it from macOS at some point.
What is Rosetta 2
This is a behind-the-scenes feature in macOS Big Sur as part of Apple's shift away from Intel-based Mac designs. It's used to translate Intel-based Mac apps so they can run on Apple Silicon Macs without having to modify the source code.
More specifically, it translates x86_64 processor instructions (aka 64-bit Intel) for ARM-based Apple Silicon, which debuted on Macs with the M1 chip. It's not meant to substitute native apps but to give developers time to create a "universal binary" for apps already offered on Mac.
Rosetta 2 works with Intel-based apps distributed through the Mac App Store and desktop applications downloaded and installed from external sources.
How Rosetta 2 works
The big difference with Rosetta 2 compared to the original version is that it automatically translates non-native apps when they're installed, not during runtime. This increases the app's overall performance because there is no additional processing overhead. However, it does translate code on the fly as needed, like just-in-time (JIT) JavaScript compilers for web browsers.
During the PowerPC transition, when the user launched an app, the operating system kernel (core) looked to see if the app had a native binary. If not, the kernel executed the binary using Rosetta. Both Rosetta and the app ran in the same processing thread, allowing the former to quickly translate a block of application code and execute that specific block. This method is referred to as just-in-time (JIT) compilation.
Apple's documentation states that when Rosetta encountered a call to a routine that it had not yet translated, it translated the needed routine and continued the execution. This process ensured "smooth and continual transitioning between translation and execution." Rosetta also optimized the translated code to provide a near-native experience on non-native hardware.
If the developer chose to compile an app using the Universal binary format, users had the option to run the non-native executable using Rosetta. This allowed them to use older PowerPC-based plugins that did not natively support Intel's CPU architecture.
Rosetta 2 in macOS Big Sur supports "the most complex Pro apps and their plugins."
The Apple Silicon transition
Apple made a significant hardware transition in 2006 when it switched from PowerPC processors to Intel. This is notable because Apple didn't merely swap out CPUs and move on. PowerPC and Intel use two different processor designs, carrying out processing instructions differently.
At the time, that meant Mac owners couldn't run software designed for a PowerPC machine natively on an Intel-based PC (aka x86) without real-time translation or rewriting the code to "speak" a different Intel-based language. Both methods had their advantages and disadvantages.
Apple currently faces the same issue with its transition away from Intel processors to those based on ARM's CPU architecture. Unlike the first transition, where Apple redesigned Macs around Intel's chips, Apple now creates in-house processors using a base design it licenses from Arm Holdings. The latter company doesn't fabricate chips – it designs the core technology and licenses it out so CPU makers can include unique features.
Apple uses ARM's designs in all in-house processors installed on the iPhone, iPad, iPod Touch, Apple TV, Apple Watch, and the HomePod. Most of those are mobile devices, and ARM hasn't gained a strong foothold in a PC market currently saturated by AMD and Intel. Prior to Apple's entrance, ARM-based PCs were notably slower than their AMD and Intel-based counterparts. However, Apple's M1 chip is proving to be faster than every Intel-based Mac and many Mac desktops.
Going Universal
One way to offer apps for two separate CPU designs is by compiling an app containing multiple executables using the Universal binary format. For instance, the app could contain executables for 32-bit and 64-bit Intel processors. The app's header includes information on the executables so the parent operating system knows which one to run.
Apple enforced this method during its transition from PowerPC to Intel chips so that new apps – not current ones – worked natively on both designs. Apps based on the Universal file format are larger than those compiled for one specific CPU architecture. The new format for combining x86_64 and arm64 executables is called Universal 2.
These two formats don't resolve the issue of running already published apps on a Mac with a completely different CPU design. For instance, an app designed for Macs with Intel processors can't natively run on macOS modified for an ARM-based chip. Something behind the scenes must "translate" the app. Enter cross-platform virtualization.
This technology "translates" binaries designed for one CPU architecture so they can run on a different operating system or processor. It remaps all operating-system calls given the code differences between one processor design and another. The technology behind Rosetta 2, Transitive Corporation's QuickTransit, uses this method.
Apple's Developer Transition Kit
The DTK is part of Apple's Universal App Quick Start Program for developers to bring their current apps to Apple Silicon Macs and macOS Big Sur. This program includes beta versions of Xcode and macOS, access to developer labs and hardware forums, dedicated technical support, resources, and a hardware kit – the DTK – to test their apps in real-time.
The kit is a Mac mini with these specifications:
- Processor: A12Z Bionic
- Memory: 16GB
- Storage: 512GB SSD
- I/O: 2x USB-C (10Gbps), 2x USB-A (5Gbps), 1x HDMI 2.0
- Connectivity: WiFi 5, Bluetooth 5.0, Ethernet (1gb)
The kit's A12Z Bionic chip is the same one found in the 2020 iPad Pro. The first Apple Silicon Macs run the M1 processor, which is faster than the A12Z.
Enrolling into Apple's Universal App Quick Start Program cost a non-refundable $500. The program will end one year after the developer accepts Apple's terms and pays the fee. The DTK must be returned within 30 days after the program expires or is terminated.
Early benchmarks surfaced, showing a possible drop in performance in apps using Rosetta 2. Based on the non-native Geekbench 4, Apple's A12Z Bionic chip in the DTK managed an average 828 in the single-core test and an average 2,931 in the multi-core test. Benchmarks only list the four "big" cores underclocked at 2.4GHz, meaning the translated app may not identify the hardware correctly.
By comparison, the A12Z Bionic chip in Apple's latest iPad Pro scores an average 1,123 in the single-core test and an average 4,701 in the multi-core test. Here Geekbench runs natively on ARM-based hardware, requiring no translation. The app also lists all eight cores.
Returns
In February 2021, Apple encouraged developers to return their Developer Transition Kits. The company initially offered $200 of Apple credit and a return-by date of May 31, 2021. However, after developers complained about the relatively low reimbursement compared to the PowerPC-to-Intel transition, Apple increased the offer to $500 store credit.
The idea was for developers to use the credit to buy a new M1 Mac for continued development. However, those who already bought an M1 machine can use the credit on other Apple purchases.
Apple's full email to developers reads:
Thanks again for participating in the Universal App Quick Start Program.
We heard your feedback regarding the 200 USD appreciation credit mentioned in our last email. Our intention was to recognize the tremendous effort that you have put into creating amazing universal apps. By partnering with us early, you showed your commitment to our platform and a willingness to be trailblazers.
So instead of the 200 USD credit that expires in May, we are giving you a 500 USD Apple credit and extending the time you can use it to get a new M1 Mac through the end of the year. If you already purchased a new M1 Mac, the Apple credit gives you the flexibility to purchase any Apple product to help with your app development work.
We'll share details soon about how to ship the Developer Transition Kit (DTK) back to Apple. Note that the DTK will no longer receive publicly available software updates after macOS Big Sur 11.2. We encourage you to return it as soon as possible so that your development work is not interrupted. And once you return the DTK, you'll receive your Apple credit.
Thank you again for making the Mac with M1 launch such a great success.
Best regards,
Apple Developer Relations
Removal
In March 2021, discovered code strings in macOS 11.3 beta 3 suggested that Rosetta 2 "will be removed upon installing this update." Another line of code advised that "Rosetta is no longer available in your region. Applications requiring Rosetta will no longer run."
Apple has not announced anything regarding Rosetta's removal, and it isn't clear why the company would do that any time soon. As of February 2021, nearly half of all popular macOS apps still needed the translation layer. It's possible the code was merely planning for removal in the distant future, as removing it at this stage would hamstring M1 Macs unnecessarily.
Rosetta
Rosetta was initially designed to translate "currently shipping" apps built for Mac OS X that ran on PowerPC's G3 and G4 processors. It did not support apps built for older operating systems, like Mac OS 9, Mac OS 8, and so on. It also did not support apps built for PowerPC's G5 processor, although developers could modify G5-specific app code so they could run on Intel-based Macs using Rosetta.
The first version arrived in 2006 in Mac OS X 10.4.4 "Tiger" that was installed on the first Mac with an Intel processor. Rosetta was not included in Mac OS X 10.6 "Snow Leopard" but could be manually downloaded and installed. It was not included or offered in Mac OS X 10.7 "Lion" and newer.
According to Apple, at the time, apps that required "intense computing needs" weren't compatible with Rosetta, such as apps that dealt with 3D modeling and ray tracing. Word processors and apps that required "a moderate amount of user interaction" and had "high computational needs" or used OpenGL were mostly compatible.
In August 2006, benchmarks showed that Mac apps optimized for the PowerMac G5 ran slower than an Intel-based Mac Pro using Rosetta. Native app performance was up to two times better than running the same app through Rosetta, depending on the compared machines. Rosetta was meant to be a temporary "fix" while developers worked on Universal binaries that ran natively on both CPU architectures.
For example, Photoshop CS2 ran poorly on Intel-based Macs via Rosetta. Adobe resolved the issue by shipping Photoshop CS3 in a Universal binary format, providing separate, native binaries for PowerPC and Intel chips.
Apple's SVP of Software Engineering Craig Federighi boasted during WWDC in 2020 that Rosetta 2 will be even faster, more powerful, and more compatible than the original version for PowerPC. Heavy applications like Maya and games like Shadow of the Tomb Raider will supposedly not experience a performance hit running on Apple Silicon Macs using Rosetta 2.