Rosetta er en dynamisk binær oversætter udviklet af Apple Inc til dets operativsystemer ( macOS ) til applikationskompatibilitet mellem forskellige instruktionssætarkitekturer . Dette giver udviklere og forbrugere en overgangsperiode, hvor de kan opgradere deres applikationssoftware til at køre på nyere hardware ved at "migrere" den til en anden arkitektur. Navnet "Rosetta" er en reference til Rosetta-stenen , en artefakt, der tillod oversættelse af egyptiske hieroglyffer. [en]
Den første version af Rosetta, der blev introduceret i 2006 som en komponent i Mac OS X Tiger , tillader PowerPC -programmer at køre på Intel-baserede Mac'er . Den anden version, der blev introduceret i 2020 som en komponent af macOS Big Sur , er en del af Mac'ens overgang fra Intel-processorer til dens ARM - baserede Apple-siliciumprocessorer . [2]
Apple har brugt fire serier af processorarkitekturer i sin serie af Macintosh-computere , nemlig Motorola 68000-serien , PowerPC-serien , Intel Core-serien og dens egen ARM - type processorserie . Hver overgang gjorde software bygget til den tidligere arkitektur inkompatibel med den nye, hvilket skabte et behov for software, der ville gøre det muligt for den nye platform at efterligne den forrige.
Da virksomheden introducerede sine første PowerPC-systemer, inkluderede Apple software i OS-version 7.1.2 og senere til at emulere systemet i 68000-serien. Denne emulator udnytter de indbyggede funktioner i PowerPC-processorer og får adgang til de laveste niveauer af operativsystemet, der kører på den samme niveau som Mac OS nanokernel og tæt relateret til det. Dette betyder, at nanokernen er i stand til at fange PowerPC- afbrydelser , konvertere dem til 68k interrupts (så skifte til blandet tilstand, hvis det er nødvendigt), og derefter udføre 68k-kode for at håndtere afbrydelserne. Dette giver dig mulighed for at interleave linjer med 68k og PowerPC-kode i samme fede binære .
Apple udgav den første version af Rosetta i 2006, da det begyndte at skifte sin Macintosh -linje fra PowerPC til en Intel-processor. Det var oprindeligt inkluderet i Mac OS X v10. 4.4 "Tiger", den version, der blev udgivet med de første Intel-baserede Mac'er og tillader mange PowerPC-applikationer at køre uændret på Intel-baserede Mac'er. Rosetta er baseret på QuickTransit-teknologi [3] den har ingen brugergrænseflade og kører efter behov uden at give brugeren besked, hvilket får Apple til at beskrive det som "den mest fantastiske software, du nogensinde vil se". Rosetta er ikke installeret som standard i Mac OS X v10. 6 " Snow Leopard ", men tilgængelig som en installerbar mulighed. Rosetta er ikke inkluderet eller understøttet på Mac OS X v10. 7 "Lion" eller nyere, som derfor ikke kan køre PowerPC-applikationer. [fire]
På grund af de store arkitektoniske forskelle mellem Intel- og PowerPC-processorer, kører Rosetta på et højere niveau end 68000-emulatoren som et program på brugerniveau, der kun kan opsnappe og emulere kode på brugerniveau. Det oversætter G3, G4 og AltiVec instruktioner , men ikke G5 instruktioner. Selvom de fleste kommercielle programmer til PowerPC-baserede computere var kompatible med disse krav (G4-systemer blev stadig meget brugt på det tidspunkt), skulle alle applikationer, der var afhængige af specifikke G5-instruktioner, ændres af deres udviklere til at køre på Rosetta-understøttede computere baseret på Intel. Apple har sagt, at applikationer med tung brugerinteraktion, men lave beregningsbehov (såsom tekstbehandlingsprogrammer ) er bedst egnede til brug med Rosetta, mens applikationer med høje beregningsbehov (såsom spil, AutoCAD eller Photoshop) ikke er det.
Rosetta understøtter heller ikke følgende:
Skrivebordsmiljøet og derfor ethvert program bygget til Mac OS 9 eller tidligere Kode, der indsætter indstillinger i ruden Systempræferencer Programmer, der kræver finmasket undtagelseshåndtering Pauseskærm Kerneudvidelser og programmer, der afhænger af dem Relaterede Java-applikationer eller Java-applikationer med JNI biblioteker, der ikke kan oversættes Java-applets i programmer, der er oversat til Rosetta-sproget betyder, at du skal bruge den oprindelige Intel-webbrowserapplikation til at indlæse Java-applets, ikke den ældre PowerPC-version
I 2020 annoncerede Apple Rosetta 2, som vil blive inkluderet i macOS Big Sur og hjælpe med Mac'ens overgang til Apple silicium fra Intel-processorer . Ud over den just-in-time oversættelse (JIT) support, der er tilgængelig i Rosetta, inkluderer Rosetta 2 forudgående kompilering (AOT) oversættelsesstøtte [5] , når applikationen er installeret.
Præstationen af Rosetta 2 blev meget rost. I nogle benchmarks klarede Rosetta 2 sig bedre end Intels gamle proprietære hardware-Mac'er. Rosetta 2 virker til mange programmer, men ikke alle, nogle virker slet ikke eller rapporterer "træghed". Mange programmer kan gøres kompatible med nye Mac'er ved at genkompilere af softwareleverandøren, hvilket ofte er en simpel opgave, mens ændringer ikke er lette eller automatiserede for nogle programmer (såsom dem, der inkluderer monteringskode eller genererer maskinkode ).
Som med den første version kræver Rosetta 2 normalt ikke brugerindgreb. Første gang en bruger forsøger at køre et Intel-only-program, beder macOS dem om at installere Rosetta 2, hvis komponenten ikke er tilgængelig. Efterfølgende lanceringer af x86- programmer vil blive udført automatisk gennem oversættelsen. Der er også mulighed for at få den generiske binære til at fungere som Intel -kode via Rosetta 2, selv på en ARM -baseret maskine .