It is clear that Apple has changed the CPU world with its new M1 processor, unprecedented performance for an ARM chip that surpasses x86 behemoths (read our technical review of Apple M1 here). But how will it impact the development ecosystem?
For starters Apple M1 runs only macOS
While x86 processors can run Windows, Linux, Solaris, FreeBSD, macOS (for some time) and many others Apple M1 can only run macOS. By running I mean baremetal, the OS that the machine boots into.
It is relevant that virtualization tools over M1 macOS are being adapted to run several flavours of Linux, some of the adaptations are very advanced like this one.
Windows has a few more problems and the worst part is losing BootCamp. That is logical, Microsoft themselves have an ARM version of Windows but unfortunately it seems it has low compatibility and low performance (64 bit compatibility was recently added)
It seems that Apple made processor transition twice with good results and Microsoft did not. Maybe Microsoft is focusing right now into Windows10X to compete with Chromebooks we may talk about that in another article.
What about homebrew?🤗
Homebrew is one of the pillars of Apple development. It is kind of packager manager that allows to install into your mac many libraries and components that are not included or easily installed into your mac.
Unfortunately Apple M1 was not supporting it albeit it has been announced. Hopefully it will, because on the key strategies for Apple is the App store, what means a lot of control of what can be installed in your mac and homebrew is a must for developers.
Mac – iPhone – iPad enhanced compatibility 📱💻📲
Yes, that has finally come you can run (with some restrictions) iPhone and iPad applications on your mac. The first version was open to any application, but the current version requires the iPhone/iPad application developer explicitly to allow macOS running.
In contrast to this Microsoft was unsuccessful with their Microsoft UWP but Google did it quite well with ChromeOs and Android applications.
It is very interesting to have a look to https://isapplesiliconready.com/es that tells you if your application is compatible or has been optimized to work with Apple M1.
Cross-compile for macOS but, for other platforms?
When you compile an application with Apple M1 the default architecture target is “arm64” different to “arm/v7” (i.e. Raspberry Pi) or “amd64” (typical x86 server). So it is not compatible.
From this point you have to find cross CPU architecture builds, should your development tool supports it (find here one example to do that with docker). And then comes the hell of testing.
That means that you have to be careful before purchasing an Apple M1 machine to build software binaries for other platforms.
What about low level macOS programming?
That is one interesting question. In our previous M1 article we explained how different is to x86 processors.
“One interesting thing is that now the specialized hardware is doing a lot of processing that previously was done by the general purpose CPU or a GPU”
The implications of this are positive on the performance side but negative on the compatibility side. On-die silicon is not upgradeable so, what happens when M1+5 years successor has a new capability X not compatible with M1? You won’t get it, hope that is not essential for the Operating System or you will not be able to upgrade.
Apple has been very bold here, they are controlling much more closely the obsolescence and the hardware replacement cycle.
M1 still has its problems 🛠
Apple’s M1 is suffering the problems the problems of a whole new product along with the compatibility needs of Big Sur operating system running both on x86 and M1.
There’s a nice article listing some of them but I’ll summarize them: developers will have a lot of problems with basic things as node.js, python and the above mentioned homebrew limitation.
Are the software companies adapting their software to Apple M1?
Absolutely! From Microsoft with their Office suite to nVidia with their Geforce Now platform all companies are making their software running natively to run on M1. Rosetta 2 is a helper but not the target for Apple platform plans. It seems that the 10% market share of macOS is a very powerful attractor.
And remember, a new platform with some bugs is a very good niche for new forms of malware.