Rosetta är en dynamisk binär översättare utvecklad av Apple Inc för sina operativsystem ( macOS ) för programkompatibilitet mellan olika instruktionsuppsättningsarkitekturer . Detta ger utvecklare och konsumenter en övergångsperiod under vilken de kan uppgradera sin applikationsprogramvara för att köras på nyare hårdvara genom att "migrera" den till en annan arkitektur. Namnet "Rosetta" är en hänvisning till Rosettastenen , en artefakt som tillät översättning av egyptiska hieroglyfer. [ett]
Den första versionen av Rosetta, som introducerades 2006 som en komponent i Mac OS X Tiger , låter PowerPC -program köras på Intel-baserade Mac -datorer . Den andra versionen, som introducerades 2020 som en komponent i macOS Big Sur , är en del av Mac:s övergång från Intel-processorer till dess ARM - baserade Apple-kiselprocessorer . [2]
Apple har använt fyra serier av processorarkitekturer i sin serie av Macintosh-datorer , nämligen Motorola 68000-serien , PowerPC-serien , Intel Core-serien och sin egen processorserie av ARM -typ . Varje övergång gjorde programvara byggd för den tidigare arkitekturen inkompatibel med den nya, vilket skapade ett behov av programvara som skulle göra det möjligt för den nya plattformen att efterlikna den tidigare.
När företaget introducerade sina första PowerPC-system inkluderade Apple programvara i OS-version 7.1.2 och senare för att emulera systemet i 68000-serien. Denna emulator drar fördel av funktionerna inbyggda i PowerPC-processorer och får åtkomst till de lägsta nivåerna av operativsystemet som körs på den samma nivå som Mac OS nanokärnan och nära besläktad med den. Detta betyder att nanokärnan kan fånga PowerPC- avbrott , konvertera dem till 68k-avbrott (och sedan byta till blandat läge om det behövs) och sedan exekvera 68k-kod för att hantera avbrotten. Detta gör att du kan interfoliera rader med 68k och PowerPC-kod i samma feta binär .
Apple släppte den första versionen av Rosetta 2006 när man började byta Macintosh -linje från PowerPC till en Intel-processor. Det ingick ursprungligen i Mac OS X v10. 4.4 "Tiger", versionen som släpptes med de första Intel-baserade Mac-datorerna och låter många PowerPC-program köras omodifierade på Intel-baserade Mac-datorer. Rosetta är baserad på QuickTransit-teknologi [3] den har inget användargränssnitt och körs vid behov utan att meddela användaren, vilket leder till att Apple beskriver det som "den mest fantastiska programvaran du någonsin kommer att se". Rosetta är inte installerat som standard i Mac OS X v10. 6 " Snow Leopard ", men tillgänglig som ett installerbart alternativ. Rosetta ingår inte eller stöds inte på Mac OS X v10. 7 "Lion" eller senare, som därför inte kan köra PowerPC-applikationer. [fyra]
På grund av de stora arkitektoniska skillnaderna mellan Intel- och PowerPC-processorer, kör Rosetta på en högre nivå än 68000-emulatorn som ett program på användarnivå som bara kan fånga upp och emulera kod på användarnivå. Den översätter G3, G4 och AltiVec instruktioner , men inte G5 instruktioner. Även om de flesta kommersiella program för PowerPC-baserade datorer var kompatibla med dessa krav (G4-system användes fortfarande i stor utsträckning vid den tiden), måste alla program som förlitade sig på specifika G5-instruktioner modifieras av deras utvecklare för att köras på Rosetta-stödda datorer baserat på Intel. Apple har sagt att applikationer med tung användarinteraktion men låga beräkningsbehov (som ordbehandlare ) är bäst lämpade för användning med Rosetta, medan applikationer med höga beräkningsbehov (som spel, AutoCAD eller Photoshop) inte är det.
Rosetta stöder inte heller följande:
Skrivbordsmiljön och därför alla program byggda för Mac OS 9 eller tidigare Kod som infogar inställningar i rutan Systeminställningar Program som kräver finkornig undantagshantering Skärmsläckare Kärntillägg och program som är beroende av dem Relaterade Java-program eller Java-program med JNI bibliotek som inte kan översättas Java-applets i applikationer översatta till Rosetta-språket innebär att du måste använda Intels inbyggda webbläsarapplikation för att ladda Java-appletar, inte den äldre PowerPC-versionen
2020 tillkännagav Apple Rosetta 2, som kommer att inkluderas i macOS Big Sur och hjälpa till med Mac:s övergång till Apple-kisel från Intel-processorer . Förutom just-in-time översättningsstödet (JIT) som finns tillgängligt i Rosetta, inkluderar Rosetta 2 stöd för översättning av förhandskompilering (AOT ) [5] när applikationen är installerad.
Prestandan för Rosetta 2 fick mycket beröm. I vissa benchmarks presterade Rosetta 2 bättre än Intels gamla proprietära hårdvaru-Mac. Rosetta 2 fungerar för många program men inte alla, vissa fungerar inte alls eller rapporterar "tröghet". Många program kan göras kompatibla med nya Mac-datorer genom att kompilera om av mjukvaruleverantören, vilket ofta är en enkel uppgift, medan ändringar inte är lätta eller automatiserade för vissa program (som de som inkluderar monteringskod eller genererar maskinkod ).
Som med den första versionen kräver Rosetta 2 vanligtvis inte användaringripande. Första gången en användare försöker köra ett program som endast är avsett för Intel, uppmanar macOS dem att installera Rosetta 2 om komponenten inte är tillgänglig. Efterföljande lanseringar av x86- program kommer att utföras automatiskt genom översättningen. Det finns också möjligheten att få det generiska binära systemet att fungera som Intel -kod via Rosetta 2, även på en ARM -baserad maskin .