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] (美國英語).