Type to search…
Skip to content

This page isn't translated yet — showing it in its original language.

Rosetta

Rosetta traduce el código compilado para Intel para que se ejecute en un Mac con chip Apple, y presta la misma traducción a los contenedores amd64.

Introducción

En 2020 Apple cambió el procesador de sus ordenadores.

Hasta entonces un Mac llevaba un chip Intel y entendía instrucciones x86_64.

Desde el chip M1 el Mac es arm64, la misma familia de instrucciones que un móvil.

El problema es que un programa ya compilado no cambia cuando tú cambias de ordenador.

Un ejecutable es una lista de instrucciones para un procesador concreto, y las de Intel no significan nada para un chip Apple.

Rosetta es el traductor que hay en medio.

La primera vez que abres un programa Intel, Rosetta lo traduce entero a instrucciones arm64 y guarda el resultado en el disco.

La segunda vez ya no traduce nada: ejecuta la traducción que tenía guardada.

Por eso va tan bien. No es un emulador que va interpretando instrucción por instrucción mientras el programa corre.

Entorno de trabajo

Necesitas un Mac con chip Apple, es decir un M1 o posterior.

Para la parte de contenedores necesitas también un motor de contenedores instalado en el Mac: Docker Desktop, OrbStack o Podman.

Qué arquitectura tienes

La orden uname -m te dice la arquitectura de la máquina:

shell
uname -m
arm64

Los programas que trae macOS están compilados para ambas arquitecturas:

shell
file /bin/ls
/bin/ls: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]

Un universal binary es literalmente esto: dos ejecutables dentro de un solo fichero.

Con lipo lo ves más resumido:

shell
lipo -archs /bin/ls
x86_64 arm64e

Keep reading — it's free.

The rest of this page is open to anyone with a free account. Nothing is sold here and nothing is charged for: the account exists so we know who agreed to the terms, and so we can send you the newsletter if you want it.

Create a free account

You will be asked to accept the Terms · Privacy Policy