Hacker News new | ask | show | jobs
by digb 1377 days ago
What does 5-arch mean? Single Google yielded nothing (which may be more of a comment on Google's quality as of late)
5 comments

It's not a common term. They're saying the exact same code will run successfully on 5 different CPU types (architectures).

I'm reminded of the Feynman "why" video. The other answers are technically more accurate than mine, and even mine assumes you understand the concept of CPU types. It's difficult to pitch answers at the right level.

Imagine you translate a book into 5 different languages. Then bind the five translations into a single volume. At the front, you put a brief table of contents listing the page number at which each translation begins. Each reader opens the book, checks the table of contents, then jumps to the page containing the translation in their language. All readers are reading the same book, but each reads the translation in their language. Unless you don’t know any of those five languages, in which case the book is unreadable for you.

Technically more accurate and complete than your answer, but an analogy I expect most non-technical people could understand.

AKA any instruction manual in Europe? (French/English/German/Spanish/Italian and so on).
It's a very impressive accomplishment. I support retro mac ppc/32/64, Windows 32 and 64, Linux on Intel and on Raspberry Pi, and signed mac Intel and Apple Silicon, for every (audio DSP, generic interface, mac AU and VST2.4) plugin I make. https://www.airwindows.com/

But I do it with lots of different available downloads, not as a single binary. That's what I find impressive about this. Somebody's running that XCode mod where you can bring in all the libraries from all the previous versions back to the dawn of time. I'm not even going to pretend to try to keep something like that working: I do my retro builds (and original design) on an antique machine dedicated to the purpose, and the modern stuff on a modern laptop dedicated to staying current.

Mach-O[1], the executable file format used by macOS and iOS (and other NeXTSTEP descendants) supports stuffing code segments for multiple architectures in the same file, aka "fat binaries"[2]. This is a fat binary that supports 5 architectures.

[1]https://en.wikipedia.org/wiki/Mach-O

[2]https://en.wikipedia.org/wiki/Fat_binary

32/64 bit, PowerPC/x86/AppleSilicon
Specifically, I'm guessing PPC-32, PPC-64, x86-32, x86-64 and ASi-64.
*AArch64
This binary is so universal that `file` utility gets confused about it.

    $ file /Volumes/TinyClock/TinyClock.app/Contents/MacOS/TinyClock 
    /Volumes/TinyClock/TinyClock.app/Contents/MacOS/TinyClock: Mach-O universal binary with 3 architectures: [i386:Mach-O executable i386
    - Mach-O executable i386] [ppc:Mach-O executable ppc
    - Mach-O executable ppc] [arm64:Mach-O 64-bit executable arm64Mach-O 64-bit executable arm64]
    /Volumes/TinyClock/TinyClock.app/Contents/MacOS/TinyClock (for architecture i386): Mach-O executable i386
    /Volumes/TinyClock/TinyClock.app/Contents/MacOS/TinyClock (for architecture ppc): Mach-O executable ppc
    /Volumes/TinyClock/TinyClock.app/Contents/MacOS/TinyClock (for architecture arm64): Mach-O 64-bit executable arm64
It's not confused; as noted in Known Bugs:

> Unlike done in previous project, netop Tiger SDKs (used to build several intermediate binaries) don’t contain 64-bit AppKit versions, and thus ppc64 and x86_64 binaries are excluded from the binary release.

The binary release is only three-architecture; it does not run on current Intel MacOS since it's missing an x86_64 segment. (You get a "this app needs to be updated" dialog if you try.)