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)

Things to Try / Don't work yet