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] (美国英语).