Living with M1 Mac
These are my current account of roadblocks and workaround in using the tools I frequent within Apple Silicon Mac. Mostly I'll try my best to make native works before falling back to using rosetta.
I'll keep this page updated as things improves. I'll note the PR waiting on the fix if applicable
Brew
(Brew Mostly works now)
Java
Many things in this category.
SDKMan – The gateway to Java installation. To install the Azul native M1 JDK, change the flag sdkman_rosetta2_compatbile=true
in .sdkman/etc/config
. The JDK will then Shows up
IntelliJ - Just Works!
Gradle - Works, but the output fallback to legacy mode. Fixed in 7.0 nightly
Java Packages with Native Extensions - E.g. Netty using NIO. They provides an Arm binary, but you'd need to grab the latest versions
Python
PyEnv - Works. Preferred way to install Python anyway. Python 3.9.1, which is the official version supporting Apple Silicon compiles and works. 3.8.6 does not work though.
Data Science Libs - NumPy, a foundation package of anything data science, would not install via Pip. A fix is in the unreleased Numpy 1.20. The workaround is to install MiniForce (Miniconda) which provides a precompiled version of the libs. Then we can use conda install numpy
for now.
pyenv install miniforge3-4.9
conda install pandas
Docker
(Mostly works now)
Keep in mind that while most popular projects provides an arm64
images, many doesn't. Docker will run the x64
images under qemu
emulation and is much much slower. If you have a precompiled images you use and share with your team. You may need to build another one
It is possible to use buildx to cross build arm64 docker image from Intel machines. This is very useful for CI. I may do a separate blog for this.
Terraform
(Mostly works now)
Misc Things that Just Works
These can be install normally via brew
- XCode – Works very very well. Faster than any Macs you've run it on.
- Fish Shell
- GoLang – v1.16 beta for now
- iTerm2
- Visual Studio Code
- 1Password
- NodeJS - Works