Золотой закат: почему Apple заставляет разработчиков забыть о старых macOS
Золотой закат: почему Apple заставляет разработчиков забыть о старых macOS Разработчики внезапно обнаружили, что бета-версия Xcode 27 наотрез отказывается собирать приложения для macOS старше версии 12 aka Monterey. Если Apple потребует использовать именно эту версию инструмента для загрузки в Mac App Store — а компания обычно именно так и делает — разработчикам придётся выбирать между двумя неприятными вариантами. Первый: просто бросить пользователей на Big Sur и более ранних системах. Второй: поддерживать отдельные сборки вне официального магазина, что означает головную боль с обновлениями, лицензированием и вообще всем, что делает жизнь разработчика сложнее. В отличие от предыдущей версии Xcode 26, которая просто ворчала предупреждениями при попытке собрать код для старых систем, новая версия категорически блокирует сборку. Ошибка недвусмысленна: «Минимальная версия macOS установлена на 10.9, но диапазон поддерживаемых версий — от 12.0 до 27.0». Под раздачу попадают все релизы до macOS 12, включая Big Sur, Catalina, Mojave — системы, на которых многие пользователи застряли не по своей воле, а из-за аппаратных ограничений их Маков или софта. На форуме Reddit отмечают, что использование Objective-C и AppKit позволяло без особых усилий поддерживать macOS за последние 13 лет — достаточно было добавить несколько проверок версии. Теперь это в прошлом. Есть временное решение через параметр __DIAGNOSE_INVALID_DEPLOYMENT_TARGET_AS_ERROR, но неясно, останется ли оно в финальной версии. Для распространения вне Mac App Store разработчики теоретически смогут использовать старые версии Xcode, но мало кто захочет поддерживать параллельные конвейеры сборки и системы обновлений. Похоже, золотая эра обратно совместимых приложений в Mac App Store действительно подходит к концу — и название macOS 27 Golden Gate звучит в этом контексте почти иронично. Остаётся надеяться, что компания одумается до финального релиза и вернёт старые целевые платформы хотя бы в статус предупреждений, а не жёстких ошибок.