Rosetta (software)

Last updated

Rosetta
Developer(s) Apple Inc.
Operating system Mac OS X 10.4.4–10.6.8 (Intel)
macOS 11.0–present (ARM)
Linux guest [1]
Type Binary translation, emulation

Rosetta is a dynamic binary translator developed by Apple Inc. for macOS, an application compatibility layer between different instruction set architectures. It enables a transition to newer hardware, by automatically translating software. The name is a reference to the Rosetta Stone, the artifact which enabled translation of Egyptian hieroglyphs. [2]

Contents

The first version of Rosetta, introduced in 2006 in Mac OS X Tiger, was part of the Mac transition from PowerPC processors to Intel processors, allowing PowerPC applications to run on Intel-based Macs. Support for Rosetta was dropped with the release of Mac OS X Lion (10.7) in 2011.

Rosetta 2, introduced in 2020 as a component of macOS Big Sur, is part of the Mac transition from Intel processors to Apple silicon, allowing Intel applications to run on Apple silicon-based Macs. [3]

Background

Macintosh has used CPUs with several different instruction set architectures: the Motorola 68000 series, PowerPC, Intel x86, and ARM64 in Apple silicon. Each instruction set architecture is incompatible with its predecessor, necessitating a transition plan based on a software layer to emulate the previous instruction set on the succeeding one.

With the launch of Power Macintosh, the Mac 68K emulator is part of System 7.1.2 and later. This emulator uses PowerPC features and is embedded at the lowest levels of the operating system, integrated with 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 68k and PowerPC code to be interspersed within the same fat binary.

Rosetta

Apple launched Rosetta in 2006 upon the Mac transition to Intel processors from PowerPC. It was embedded in 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. [4] It has no graphical user interface, and launches as needed with no notification of the user, which led Apple to describe Rosetta as "the most amazing software you'll never see". [5] Rosetta is optionally installable in Mac OS X v10.6 "Snow Leopard". [6] Rosetta is neither included nor supported in Mac OS X Lion (10.7) or later, which therefore cannot run PowerPC applications. [6]

Because of the greater architectural differences between Intel and PowerPC processors, Rosetta operates at a higher level than the 68000 emulator does, 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, and applications with high computational needs (such as games, AutoCAD, or Photoshop) would not. [7] Pre-existing PowerPC versions of Apple "Pro" media-production applications (such as Final Cut Pro, Motion, Aperture, and Logic Pro) are not supported by Rosetta and require a "crossgrade" [8] to a universal binary version to work on Rosetta-supported Intel-based Macs.

Rosetta also does not support the following: [9]

Rosetta 2

In 2020, Apple announced Rosetta 2 would be bundled with macOS Big Sur, to aid in the Mac transition to Apple silicon. The software permits many applications compiled exclusively for execution on x86-64-based processors to be translated for execution on Apple silicon. [3] [10]

To install Rosetta 2 on an Apple silicon Mac there are two ways to do it: either by using the Terminal to install the program directly, or by trying to open an application compiled for x86-64, which will open an installation window.

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. [11]

Rosetta 2's performance has been praised greatly. [12] [13] 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 a high level of translation efficiency is the support of x86-64 memory ordering in the Apple M1 SOC. [14] The SOC also has dedicated instructions for computing x86 flags. [15]

Although Rosetta 2 works for most software, some software doesn't work at all [16] or is reported to be "sluggish". [17]

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. [18]

Since macOS Ventura, users running virtual machines with Linux as a guest operating system can make use of Rosetta 2 to run x86-64 code compiled for Linux, [19] within the virtual machine. Rosetta 2 works as a runtime binary, which is required to be installed on the guest operating system. There have been instances [20] of developers installing this runtime binary on third-party hardware, provided that it includes a CPU that supports at least the ARMv8.2-A instruction set; the memory ordering will be different from native x86. Some developers have noted that it might violate macOS's licensing agreements, since the runtime is bundled [21] within Apple's Virtualization framework.

See also

Related Research Articles

macOS Operating system for Apple computers

macOS (;), originally Mac OS X, previously shortened as OS X, is an operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and laptop computers, it is the second most widely used desktop OS, after Microsoft Windows and ahead of all Linux distributions, including ChromeOS.

Darwin is the core Unix operating system of macOS, iOS, watchOS, tvOS, iPadOS, visionOS, and bridgeOS. It previously existed as an independent open-source operating system, first released by Apple Inc. in 2000. It is composed of code derived from NeXTSTEP, BSD, Mach, and other free software projects' code, as well as code developed by Apple.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

In computer architecture, 64-bit integers, memory addresses, or other data units are those that are 64 bits wide. Also, 64-bit central processing units (CPU) and arithmetic logic units (ALU) are those that are based on processor registers, address buses, or data buses of that size. A computer that uses such a processor is a 64-bit computer.

In computer science, dynamic recompilation is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling during execution, the system can tailor the generated code to reflect the program's run-time environment, and potentially produce more efficient code by exploiting information that is not available to a traditional static compiler.

In computing, binary translation is a form of binary recompilation where sequences of instructions are translated from a source instruction set to the target instruction set. In some cases such as instruction set simulation, the target instruction set may be the same as the source instruction set, providing testing and debugging features such as instruction trace, conditional breakpoints and hot spot detection.

x86-64 64-bit version of x86 architecture

x86-64 is a 64-bit version of the x86 instruction set, first announced in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mode.

The Mac 68k emulator is a software emulator built into all versions of the classic Mac OS for PowerPC. This emulator enabled running applications and system code that were originally written for the 680x0-based Macintosh models. With a few exceptions, notably Connectix's RAM Doubler, the emulator ran all software with no noticeable impact other than lower performance relative to the same program when compiled for PowerPC.

In software engineering, a compatibility layer is an interface that allows binaries for a legacy or foreign system to run on a host system. This translates system calls for the foreign system into native system calls for the host system. With some libraries for the foreign system, this will often be sufficient to run foreign binaries on the host system. A hardware compatibility layer consists of tools that allow hardware emulation.

Star Trek is the code name that was given to a secret prototype project, running a port of Macintosh System 7 and its applications on Intel-compatible x86 personal computers. The project, starting in February 1992, was conceived in collaboration between Apple Computer, who provided the majority of engineers, and Novell, who at the time was one of the leaders of cross-platform file-servers. The plan was that Novell would market the resulting OS as a challenge to Microsoft Windows, but the project was discontinued in 1993 and never released, although components were reused in other projects. The project was named after the Star Trek science fiction franchise with the slogan "To boldly go where no Mac has gone before".

A fat binary is a computer executable program or library which has been expanded with code native to multiple instruction sets which can consequently be run on multiple processor types. This results in a file larger than a normal one-architecture binary file, thus the name.

<span class="mw-page-title-main">Mac OS X Tiger</span> Fifth major release of Mac OS X

Mac OS X Tiger is the 5th major release of macOS, Apple's desktop and server operating system for Mac computers. Tiger was released to the public on April 29, 2005 for US$129.95 as the successor to Mac OS X 10.3 Panther. Included features were a fast searching system called Spotlight, a new version of the Safari web browser, Dashboard, a new 'Unified' theme, and improved support for 64-bit addressing on Power Mac G5s. Mac OS X 10.4 Tiger also had a number of additional features that Microsoft had spent several years struggling to add to Windows with acceptable performance, such as fast file searching and improved graphics processing.

QuickTransit was a cross-platform virtualization program developed by Transitive Corporation. It allowed software compiled for one specific processor and operating system combination to be executed on a different processor and/or operating system architecture without source code or binary changes.

<span class="mw-page-title-main">Universal binary</span> Apple multi-architecture binary files

The universal binary format is a format for executable files that run natively on either PowerPC or Intel-manufactured IA-32 or Intel 64 or ARM64-based Macintosh computers. The format originated on NeXTStep as "Multi-Architecture Binaries", and the concept is more generally known as a fat binary, as seen on Power Macintosh.

<span class="mw-page-title-main">Mac transition to Intel processors</span> 2005–2006 transition of Apple Inc.s Mac computers from PowerPC to Intel x86 processors

The Mac transition to Intel processors was the process of switching the central processing units (CPUs) of Apple Inc.'s line of Mac and Xserve computers from PowerPC processors over to Intel's x86-64 processors. The change was announced at the 2005 Worldwide Developers Conference (WWDC) by then-Apple CEO Steve Jobs, who said Apple would gradually stop using PowerPC microprocessors supplied by Freescale and IBM.

<span class="mw-page-title-main">Hackintosh</span> Non-Apple computer running macOS

A Hackintosh is a computer that runs Apple's Macintosh operating system macOS on computer hardware that is not authorized for the purpose by Apple. This can also include running Macintosh software on hardware it is not originally authorized for. Benefits of "Hackintoshing" can include cost, ease of repair and piecemeal upgrade, and freedom to use customized choices of components that are not available in the branded Apple products. macOS can also be run on several non-Apple virtualization platforms, although such systems are not usually described as Hackintoshes. Hackintosh laptops are sometimes referred to as "Hackbooks".

PowerVM Lx86 was a binary translation layer for IBM's System p servers. It enabled 32-bit x86 Linux binaries to run unmodified on the Power ISA-based hardware. IBM used this feature to migrate x86 Linux servers to the PowerVM virtualized environment; it was supported on all POWER5 and POWER6 hardware as well as BladeCenter JS21 and JS22 systems.

The following outline of Apple Inc. is a topical guide to the products, history, retail stores, corporate acquisitions, and personnel under the purview of the American multinational corporation Apple Inc.

<span class="mw-page-title-main">Mac transition to Apple silicon</span> Transition of the Apple Macintosh platform from Intel x86 to ARM processors

The Mac transition to Apple silicon was the process of switching the central processing units (CPUs) of Apple Inc.'s line of Mac computers from Intel's x86-64 processors over to Apple-designed systems on a chip that use the ARM64 architecture.

References

  1. "Running Intel Binaries in Linux VMs with Rosetta". Apple Inc . Retrieved August 7, 2022.
  2. Norr, Henry (January 27, 2006). "Core Duo iMacs debut speedy new chips". Macworld .
  3. 1 2 Warren, Tom (June 22, 2020). "Apple is switching Macs to its own processors starting later this year". The Verge. Retrieved June 22, 2020.
  4. "The brains behind Apple's Rosetta: Transitive". CNET. June 8, 2005. Retrieved January 9, 2023.
  5. "Rosetta". Apple. Archived from the original on January 13, 2006. Retrieved September 5, 2011.
  6. 1 2 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.
  7. "Rosetta" (PDF). Universal Binary Programming Guidelines, Second Edition. Apple. Archived from the original (PDF) on August 3, 2012. Retrieved September 5, 2011.
  8. "Universal Applications". Apple. Archived from the original on March 3, 2016. Retrieved August 5, 2019.
  9. "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.
  10. 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.
  11. 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.
  12. Evans, Jonny (November 19, 2020). "Everything you need to know about Rosetta 2 on Apple Silicon Macs". Computerworld. Retrieved December 8, 2020.
  13. "Yeah, Apple's M1 MacBook Pro is powerful, but it's the battery life that will blow you away". TechCrunch. November 17, 2020. Retrieved December 8, 2020.
  14. @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.
  15. Dougall, J (November 9, 2022). "Why is Rosetta 2 fast?" . Retrieved August 15, 2023. ARM flag-manipulation extensions... Apple's secret extension...
  16. Carlton, Sam (December 8, 2020). "ThatGuySam/doesitarm". GitHub . Retrieved December 8, 2020.
  17. "r/mac - Apps on Rosetta 2". reddit. November 29, 2020. Retrieved December 8, 2020.
  18. "Use Office for Mac with Rosetta and Apple silicon". support.microsoft.com. Retrieved June 21, 2021.
  19. Proven, Liam (June 9, 2022). "Apple offers improved Linux support in macOS 13". The Register. Retrieved January 6, 2023.
  20. Cunningham, Andrew (June 7, 2022). "Apple will allow Linux VMs to run Intel apps with Rosetta in macOS Ventura". Ars Technica. Retrieved January 6, 2023.
  21. "Virtualization - Running Intel Binaries in Linux VMs with Rosetta". Apple Developer. Retrieved January 6, 2023.