Rosetta
Rosetta是苹果电脑公司发布的在Mac OS X上的一个二进制编译器软件,这个软件的名字起源于罗塞塔石碑(Rosetta Stone)。在考古学上,它的发现成为破译古埃及象形文字的关键。苹果利用这名字来形容编译器的重要性。
开发者 | 苹果公司 |
---|---|
操作系统 | Mac OS X 10.4.4–10.6.8(Intel) macOS Big Sur 11.0–(ARM) |
类型 | PowerPC 二进制翻译(Rosetta) Intel 二进制翻译(Rosetta 2) |
概要
编辑第一代
编辑Rosetta可以让在Power PC平台上开发的软件在英特尔平台的麦金塔电脑上顺利运行,是Mac向英特尔平台迁移的一个重要部分。它基于Transitive公司的QuickTransit技术,也是麦金塔电脑从PowerPC向英特尔转换的一个重要部分,确保原先的Mac OS X程序能在新的英特尔平台上运行。虽然和英特尔原生编译的软件比较起来会有速度上的差别,但是对大多数对CPU资源使用不是很多的软件来说,速度上的差别是非常小的。在Intel版本的Mac OS X上,用户可以在通用二进制程序的选项里选择是否使用Rosetta来运行程序。
因架构转换已完成数年,大多数Mac平台软件已更新为通用二进制甚至不再支持PowerPC架构,因此在2009年推出的Mac OS X Snow Leopard,Rosetta不再默认随附于系统安装中,但用户可从系统光碟或网络下载自行安装。而2011年夏天推出的Mac OS X Lion,则不再支持Rosetta。[1]
第二代
编辑2020年发行的macOS 11.0 Big Sur内建第二代的Rosetta,称为Rosetta 2,可以让在Intel平台上开发的软件在ARM架构平台的麦金塔电脑上顺利运行。是Mac向Apple晶片迁移的一个重要部分,确保原先的macOS程序能在新的ARM平台上运行。
性能
编辑第一代
编辑Rosetta预装在英特尔晶片麦金塔电脑的操作系统上。它可以将G3,G4和AltiVec指令进行翻译,但是不编译需要G5的软件——这些应用程式需要开发者自行修改。尽管如此,目前几乎没有软件必须需要G5处理器这样的高配置,所以对于绝大多数的应用程式来说,Rosetta都可以工作。
苹果公司声称,那些重视用户互动而较少计算量的应用程式(比如Word等文字处理器)是比较适合通过Rosetta编译的;而需要大计算量的程序,比如Photoshop等就并非如此了。原先苹果公司的"Pro"系列媒体产品应用软件的PowerPC版本(Final Cut Pro/Express, Motion, Soundtrack Pro, DVD Studio Pro, Aperture,和Logic Pro/Express)都不支持Rosetta,而这些软件需要另外的通用二进制版本才能运行在英特尔麦金塔电脑上。
总的来说,Rosetta不能在以下环境中运行:
- 基于Mac OS 9及其以下版本的应用程式。
- 需要将设置插入系统参数设置的代码
- 必须基于G5处理器的应用程式
- 屏幕保护程序
- 内核拓展程序,以及其他基于此的应用程式
- 捆绑Java平台的应用程式,和不能被编译的JNI(Java本地接口,Java Native Interface)库的应用程式
- Rosetta编译后应用程式中的Java插件。这意味着,仅PowerPC的网页浏览器(如微软的Internet Explorer for Mac)将无法读取Java插件。用户需要支持英特尔版本的浏览器,如Safari,Camino,Firefox或者新版本的Opera等等)。
- 其他读取运行时的二进制库。
第二代
编辑Rosetta 2预装在使用Apple Silicon晶片麦金塔电脑的操作系统上。它可以将AMD64指令进行翻译,对于绝大多数的程序来说,Rosetta 2都可以运作。
与Rosetta不同,苹果公司声称,由于Rosetta 2在安装软件时会把Intel版本程序转换为ARM程序,加上Apple的处理器性能很高,因此即使需要大计算量的程序,通过Rosetta 2编译也能流畅地执行。当然,前述所指是Intel版本Mac操作系统上的应用程式,因此,这并不包括在Windows操作系统上开发的应用程式。Windows版的应用程式需要虚拟机或类似功能的系统。
macOS Ventura之后,用户也可以在Linux虚拟机中使用Rosetta 2来运行基于x86-64编译的Linux软件[2][3]。Rosetta 2作为一个运行时软件,需要安装在虚拟机内。已经有很多开发者会把Rosetta 2安装在第三方硬件上,只要该硬件包含至少支持ARMv8.2-A指令集的CPU,使用Rosetta 2之后,内存顺序会和原来只使用x86的情况不同。有些开发者已经注意到这可能违反了macOS的协议,因为Rosetta 2作为运行时已经是Apple虚拟化框架的一部分[4]。
参考
编辑- ^ AppleInsider Staff. Mac OS X Lion drops Front Row, Java runtime, Rosetta. AppleInsider. AppleInsider, Inc. 26 February 2011 [27 February 2011]. (原始内容存档于2011-03-01).
- ^ Proven, Liam. Apple offers improved Linux support in macOS 13. www.theregister.com. [2024-06-04] (英语).
- ^ Cunningham, Andrew. Apple will allow Linux VMs to run Intel apps with Rosetta in macOS Ventura. Ars Technica. 2022-06-07 [2024-06-04] (美国英语).
- ^ Running Intel Binaries in Linux VMs with Rosetta. Apple Developer Documentation. [2024-06-04] (美国英语).