Разработчики под iOS хорошо знают: чем серьезнее проект, тем дольше он собирается. Добавил пару строк - жди. Запустил сборку на CI - опять жди. В Xcode 26 появился механизм, который пытается разорвать этот порочный круг - Compilation Cache.
В чем проблема:
Каждый день в команде происходит одно и то же. Несколько разработчиков работают в параллельных ветках. CI-сервер пересобирает каждый пул-реквест с нуля. Одни и те же зависимости и внутренние модули компилируются снова и снова. Большая часть этой работы - лишняя.
DerivedData не всегда решал эту задачу. Он был временным хранилищем, которое при проблемах советуют просто удалить. Это удобно для локальной отладки, но не дает никаких гарантий для переиспользования сборок.
Что предлагает Compilation Cache:
Начиная с Xcode 26, результаты компиляции можно сохранять в кэш осмысленно и с возможностью переиспользования. Ключевое изменение: Xcode теперь сам решает, можно ли переиспользовать результат компиляции, основываясь на том, что именно изменилось. Если исходные файлы, настройки компилятора или тулчейн не поменялись - работа не повторяется, а результат берется из кэша.
Особенно заметно это при переключении между ветками и при чистых сборках, когда кэш уже прогрет.
Как включить:
Достаточно добавить в настройки сборки:
COMPILATION_CACHE_ENABLE_CACHING = YES
После этого кэш будет накапливаться по мере компиляции.
Где разница будет заметна:
🔵Переключение веток. Если ветки затрагивают разные части проекта, кэш помогает избежать перекомпиляции модулей, которые не менялись.
🔵Чистые сборки. Раньше clean build означал полную перекомпиляцию. Теперь, если кэш сохранен на диске, можно переиспользовать уже собранные артефакты.
🔵CI с высоким потоком пул-реквестов. Если настроить сохранение кэша между запусками, повторная работа сокращается значительно.
Почему не всем станет сильно быстрее:
Компиляция - не единственная стадия сборки. Обработка ассетов, копирование файлов, скриптовые фазы (линтеры, генерация кода), линковка и встраивание - все это может оставаться узким местом. Если сборка тормозит из-за них, кэш компиляции не поможет.
🔗 Читать подробнее
💡 Вывод:
Compilation Cache - одно из самых практичных улучшений производительности в Xcode за последнее время. Он не исправит все медленные сборки и не заменит хорошую организацию проекта, но он решает конкретную и очень дорогую проблему - повторную компиляцию того, что уже было скомпилировано.
➡️ Подписаться на канал
Мобильный трудоголик