MacTeX - TeX Users Group

MacTeX  |  Donate  |  FAQ  |  Help  |  TUG

About Arm

Arm machines contain software called "Rosetta" which allows them to run Intel code. The entire TeX infrastruction runs well under Rosetta -- we know of no problems. Thus the MacTeX-2020 and BasicTeX-2020 installers install TeX Live exactly as they do on Intel machines, and TeX Live Utility can update these systems with no problems. TeXShop, Ghostscript, and the entire TeX Live system work as usual. Although we have not tested other front ends, we expect that all software used to typeset will run fine.

Full native Arm support will arrive with MacTeX-2021 next spring. See the next section if you want to use native Arm code immediately.

TeX Live is rewritten once a year. The current version was released on April 4, 2020 and the next version should be released sometime in April, 2021. That version will fully support Arm processors on the Macintosh. This will require only a small change; the TeX binaries currently contain Intel code; from 2021 on they will contain both Intel and Arm code packaged together as a universal binary. Thus MacTeX will support Intel and Arm machines on an equal footing for many years to come.

Enjoy your new machine.

Running Natively

We know that some users want to run native code from day one.

The links below provide universal copies of TeXShop and the Ghostscript-9.53 install package. Both run as before on Intel machines, but also contain Arm code and run natively on the new machines. Ghostscript 9.53.3 was released on October 1, 2020 and fixes the transparency bug which affected TeX users. The installer installs universal code for Ghostscript. In case of trouble, just install an older version on top of this and you will automatically revert to using Intel code.

There is one caveat. We create two versions of Ghostscript, one with X11 support and one without. These binaries are called gs-X11 and gs-noX11 and are installed in /usr/local/bin. At install time we check to see if the user has installed X11. If so, we create a symbolic link named gs to gs-X11. Otherwise we create a symbolic link named gs to gs-noX11.

Originally X11 was supplied for the Macintosh by Apple. Later it was spun off as an open source project, and the last contributions are dated 2016. An Arm program can only link with a library also compiled for Arm (although an Arm program like TeXShop can call an independent program like pdftex even if that program has Intel code). The X11 libraries have not been ported to Arm, so we could not compile gs-X11 for Arm. Therefore gs-noX11 has universal code, but gs-X11 only has Intel code.

Users who installed X11 on Arm before installing Ghostscript-9.53 will run Intel Ghostscript Intel code rather than Ghostscript Arm code. This should be what most users want. If you are an exception, just rewrite the gs link to point to gs-noX11.

The Ghostscript install package can also install a Ghostscript Library if the custom install option is activated. This library is only used by one program in TeX Live, dvisvgm. The Ghostscript library requires X11, so the library we install only contains Intel code.

Native TeX Live Code

We provide small install packages below which add universal binaries to MacTeX-2020 and BasicTeX-2020. Both packages work the same way, so we will discuss the MacTeX-2020-Universal package. This package assumes that you have already installed TeXLive-2020, using either MacTeX or the TeX Live Unix install script. In the second case, we require that you installed in /usr/local/texlive/2020.

After installing MacTeX-2020-Universal, all front ends and the command line programs will automatically use Arm binaries on Arm machines and Intel binaries on Intel machines. You can switch to other TeX distributions like TeX Live 2019 with TeX Live Utility exactly as before. Of course these earlier distributions only contain Intel code and will run using Rosetta. But if you switch back to TeX Live 2020 on an Arm machine, you will run Arm code. Our packages require at least Catalina and will refuse to install on earlier systems. If you have a Macintosh using an Intel processor and running Catalina or later, you are free to install them. You will then use our Universal Binaries, but of course you will run the Intel code rather than the Arm code.

All of these comments apply without change to BasicTeX if you use the corresponding update package for an existing BasicTeX-2020 installation.

These universal binaries were constructed from the TeX Live source code as it existed last spring just before TeX Live 2020 was released. It is best to install MacTeX or BasicTeX on an Arm machine from scratch and immediately install our native packages before using TeX Live Utility to update anything. Then if a binary was later updated, you'll get it using TeX Live Utility. If you use TeX Live Utility first, our packages might revert a binary to an earlier version and TeX Live Utility won't notice that this happened. However, the actual binary files in TeX Live are rarely updated during the year.

Reverting Back To Intel Binaries

It is unlikely that the new universal binaries will cause trouble, but if they do we have installers which will remove them and reinstall the original x86_64-darwin, whose binaries only contain Intel Code.

How the Update Installer Actually Works

The TeX binary directory on a Macintosh is called x86_64-darwin; it is a large collection of over 450 scripts, links, and binary files. These binary files contain x86_64-darwin code, that is, Intel code. We recompiled the binaries for Arm, and used a script from Apple named lipo to combine the Intel and Arm code into universal binary files with code for both processors. Then we created a new folder containing exactly the same 450 or so scripts, links, and binary files. The only difference is that the binaries are universal in our new folder, with code for both Intel and Arm. These binaries have hardened runtimes and are signed, and thus pass Apple notarization tests.

There are a few exceptions. Three programs, pdfclose, pdfopen, and xdvi-xaw, link with an X11 library. So the three programs only contain Intel code (but of course run fine using Rosetta on an Arm machine). Another program, biber, is supplied already compiled by its author. This program currently has only Intel code. Finally, the programs asymptote and tex2xindy are compiled as a separate step when building TeX binaries. We were too lazy to do that step, so they only have Intel code.

The MacTeX-2020-Universal installer replaces the original 2020/bin/x86_64-darwin, which only contained binaries with Intel code, with the new x86_64-darwin which contains binaries with both Intel and Arm code. That's all it does.

Users may object that since the new folder contains Arm code, the name x86_64-darwin is not appropriate for it. This problem will undoubtedly be fixed in TeX Live 2021.

If you want to make sure that our binaries are universal, there is an an easy test provided you have Xcode. In Terminal, type
     cd /usr/local/texlive/2020/bin/x86_64-darwin
To test, say, pdftex, type
     lipo -archs pdftex
Terminal will type a list of processor types supported by the code. You want to see the message
       x86_64 arm64

Acknowledgments ...

Happy TeXing on Mac OS X !

MacTeX Installer Support