Skip to content

macOS Compatibility Advice

p0nce edited this page Dec 11, 2024 · 31 revisions

This page gathers all you need to know to properly support the widest array of macOS customer setup.

General Advice

  • DO Support both x86_64 and arm64 architecture. You can use different --compiler and --compiler-x86_64 for both.
  • DO support the Audio Unit v2 format (Logic is very popular).
  • DO create a macOS installer.
  • DO use notarization.
  • DON'T target macOS with DMD. Use LDC!

Aggregated Advice for maximum coverage

  • Currently recommended: Last Update: 5th Dec 2023
    • LDC 1.28 to 1.40 for arm64 for macOS 12.0+ support.
    • LDC 1.28/1.29 for x86_64 for macOS 10.15 or earlier.
    • Using the dplug-build --compiler-x86_64 flag to use two different compilers and stitch them in an Universal Binary.
    • Build with Xcode 13 to Xcode 14. Xcode 15 is untested yet.
    • Use Dplug v14.3 or later to have the --compiler-x86_64 flag and various macOS fixes. Else, build all with LDC 1.28/1.29.
    • Use Monterey to Sonoma as build platform.
    • Do not enable AVX instructions or later instructions. Going above SSE3 is dangerous.

Target requirements

These are the individual constraints per macOS version. The intersection of which gives the above recommendations. This only lists the known constraints, and some of them were forgotten along the years.

  • macOS 15 Sequoia (released 16 September 2024)

    • As a target: Xcode >= 13.
    • As a target: LDC >= 1.28.
    • As a build platform: WARNING Running a D compiler got harder. First try to run them, them unblock them from System Settings > Privacy and Security and click "run anyway".
  • macOS 14 Sonoma (released 26 September 2023)

    • As a target: Xcode >= 13.
    • As a target: LDC >= 1.28.
  • macOS 13 Ventura (released October 24, 2022)

    • As a target: Xcode >= 13.
    • As a target: LDC >= 1.28.
  • macOS 12 Monterey (released October 25, 2021)

    • As a target: Xcode >= 13.
    • As a target: LDC >= 1.28.
    • As a build platform: First OS that can run Xcode >= 13.
  • macOS 11 Big Sur (released November 12, 2020)

    • As a target: Xcode >= 13.
    • As a target: LDC >= 1.28.
  • macOS 10.15 Catalina (released October 7, 2019)

    • As a target: Xcode >= 13, Xcode <= 14.
    • As a target: LDC >= 1.28, LDC <= 1.29.
    • As a target: Starting with Catalina, software should be notarized to avoid a warning. And since Nov 2023, notarization with notarytool requires Xcode 13.0+ (Monterey).
    • As a build platform: This is the lowest macOS that can target arm64 (Catalina can run XCode 12), but cannot notarize anymore other than copying the notarytool executable.
  • macOS 10.14 Mojave (released September 24, 2018)

    • As a target: LDC >= 1.28, LDC <= 1.29.
    • As a target: Xcode <= 14.
    • As a target: Starting with Mojave, software should be codesigned to avoid a warning.
    • As a build platform: Don't use anything <= 10.14 to release macOS software, else you can't have arm64 support.
  • macOS 10.13 High Sierra (released September 25, 2017)

    • As a target: LDC >= 1.28, LDC <= 1.29.
    • As a target: Xcode <= 14.
  • macOS 10.12 Sierra (released September 20, 2016)

    • As a target: LDC >= 1.28, LDC <= 1.29.
    • As a target: Xcode <= 14.
  • macOS 10.11 El Capitan (released September 30, 2015)

    • As a target: LDC >= 1.28, LDC <= 1.29.
    • Unknown Xcode requirement.
    • Unknown status, some customer report it works, others don't.
  • macOS 10.10 Yosemite (released July 24, 2014)

    • As a target: Unknown, this is forgotten knowledge.
    • Unknown status.