I thought this was the most interesting paragraph.
> What Can't Be Translated?
> Rosetta can translate most Intel-based apps, including apps that contain just-in-time (JIT) compilers.
I guess translation of JIT compiled stuff implies this isn't a once of translation. I guess translating plugins implies that too.
It sounds like very clever stuff to me!
> However, Rosetta doesn’t translate the following executables:
>
> Kernel extensions
Fair enough
> Virtual Machine apps that virtualize x86_64 computer platforms
I guess most VMs rely on hardware virtualization which would be tricky to translate well.
> Rosetta translates all x86_64 instructions, but it doesn’t support the execution of some newer instruction sets and processor features, such as AVX, AVX2, and AVX512 vector instructions. If you include these newer instructions in your code, execute them only after verifying that they are available. For example, to determine if AVX512 vector instructions are available, use the sysctlbyname function to check the hw.optional.avx512f attribute.
These sound like they should be relatively straight forward to translate. I wonder why they didn't? Lack of time? Or perhaps because translating them means that they don't run fast enough to be useful and the fallback paths are likely to run quicker.