For someone who's not very knowledgeable about architecture shifts, what software changes would be require to make this happen? I'd assume that the Mac OSX itself might be able to make the shift easily, given that Swift and ObjC code seems to run on both iOS/ARM devices and MacOS/x386 machines. What else will have to change? Or is this purely a hardware choice?
The fact that iOS shares a lot of the same code as OS X will make this a much easier transition. Apple can take a lot of the low-level stuff from iOS, where they've had years to figure out how to get Darwin working smoothly on ARM.
Beyond that, all apps on the OS X app store will have to be recompiled and resubmitted. None of the binaries installed on current OS X machines will still work, unless Apple includes an x86 emulator like they did for the transition from PowerPC.
This will also open up the possibility of running iOS apps natively on OS X, but I doubt Apple will pursue that at all (for UX reasons).
The transition will be easy for applications that rely on Apple's APIs only, the fun will be for programs that use proprietary third party components all of which will need to be rebuilt, as well as all binary plugins to applications.
I can imagine this might be a huge job for some of the more heavyweight production programs for Mac , as well as AAA games.
It would basically spell doom for Parallels and other virtualization software which give Mac switchers an escape hatch back to any Windows programs they might use.
> Beyond that, all apps on the OS X app store will have to be recompiled and resubmitted.
This is one of Apple big benefits from having the App Store (and possible a strategic reason for establishing it) — they can simply tell developers: rebuild for ARM or you're out.
Do you have any idea if they could pull off X86 emulation on a theoretical but plausible ARM chip? It seems like a really hard thing to emulate an i7 or am I missing something?
I once managed to create a cross-build system "wrong way". (OBS made this error both possible and easy.) I tried to build some pretty heavy x86 software (QtWebKit) and ended up creating a config that used a cluster of panda boards to run qemus in x86 emulation mode.
To my chagrin, I didn't realise the error until I was wondering, after ~5h, why my build was still not finished.