

You can see that the binary contains code for both the x86_64 and arm64 architectures. Volumes/Discord/Discord.app/Contents/MacOS/Discord (for architecture arm64): Mach-O 64-bit executable arm64 Volumes/Discord/Discord.app/Contents/MacOS/Discord (for architecture x86_64): Mach-O 64-bit executable x86_64

Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64 Volumes/Discord/Discord.app/Contents/MacOS/Discord: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64 When you download the Discord app and just mount the disk image, here's what you get when you run file on the main executable: $ file /Volumes/Discord/Discord.app/Contents/MacOS/Discord The OS then picks the appropriate part for the current architecture at runtime. Basically, the compiler generates executables for multiple architecture and then combines them into a single file. Apple calls this a Universal Binary and it was already used in the PowerPC to Intel transition, and then again in the Intel to Arm transition. On NeXT-based system such as macOS (and all other Apple OS's), a binary can contain code for multiple architectures.
