Rosetta 2 operates on the process level -- on an Apple Silicon system, a process can run an ARM executable and run all ARM code, or can run an x86_64 executable and run all x86_64 code. ARM64EC allows processes to run a mixture of native and emulated code. Whether this is actually useful is debatable, but the option exists.
Comments
How is this different than what Apple did for the x86 -> ARM transition?
Rosetta 2 operates on the process level -- on an Apple Silicon system, a process can run an ARM executable and run all ARM code, or can run an x86_64 executable and run all x86_64 code. ARM64EC allows processes to run a mixture of native and emulated code. Whether this is actually useful is debatable, but the option exists.
Rosetta allows loading x86 plugins into arm apps.
Source? My understanding is that cross-architecture plugins are handled out of process over XPC.
That sounds right. I think I misread a source. Was just looking at this yesterday, but didn't look close enough.
ARM64EC is usually for stuff like plugins or really large apps - most people will simply compile an ARM64 and x64 version of their app
It requires you to recompile your application a third time if you want to load x64 plugins, and then it becomes incompatible with arm plugins.