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
Works, but if you install without Rosetta it will install to /opt/homebrew
. That path won't get added to $PATH
automatically so you'll need to add this line to .zshrc
eval $(/opt/homebrew/bin/brew shellenv)
Running natively, brew will try to install the native version of packages if it can, which means many are in beta or preview (e.g. GoLang 1.16 beta).
Pay attention to the downloading links to see hints if the binary is in Arm or x64
==> Downloading https://az764295.vo.msecnd.net/insider/7b0cfdd04ad530a9c8d782c618afd79290be3d64/VSCode-darwin-arm64.zip
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
Install the technical preview. Works for me so far, but many has report plenty of segfaults.
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
Only works with Rosetta. Needs to use GoLang cross compile to x64. After that it works pretty good. Just run the binary from
curl -OL https://github.com/hashicorp/terraform/archive/v0.13.6.tar.gz
cd terraform-0.13.6/
GOARCH=amd64 go build -o terraform
sudo mv terraform /usr/local/bin
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 Insider
homebrew/cask-versions/visual-studio-code-insiders
. The released version also works under rosetta but much slower. - 1Password - Under Rosetta, but native support in Beta
- NodeJS - Works – But I haven't tested anything requiring native libs (e.g. anything using node-gyp)