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