Компания Яндекс опубликовала в открытом доступе инструмент на базе больших языковых моделей (LLM), предназначенный для автоматизации миграции iOS-приложений с Objective-C на Swift. Новый подход позволяет значительно сократить сроки перехода на современный язык разработки от Apple и уменьшить нагрузку на команды, работающие с крупными и устаревшими кодовыми базами.
Решение доступно в open source: исходный код, шаблоны и инструкции опубликованы на GitHub и SourceCraft.
Проблема миграции особенно актуальна для проектов, созданных до 2018 года, когда Swift ещё не стал доминирующим языком в экосистеме iOS. Такие приложения зачастую содержат сотни тысяч строк Objective-C-кода, и его переписывание вручную требует значительных временных и человеческих ресурсов. Кроме того, команды вынуждены параллельно поддерживать развитие продукта, что ещё больше усложняет процесс.
Решение было разработано в рамках миграции кодовой базы Яндекс Браузера. За пять лет команда смогла сократить технический долг лишь наполовину, однако внедрение LLM-подхода позволило радикально ускорить процесс. В течение двух месяцев разработчики интегрировали 106 pull request’ов, переписали около 97,5 тысяч строк кода и обновили более двух тысяч файлов — объём работы, который при ручной миграции занял бы свыше года.
Ключевое отличие решения от классических конвертеров заключается в способности учитывать контекст проекта. Вместо простого синтаксического преобразования система использует LLM, которая анализирует архитектуру, зависимости и соглашения конкретного репозитория.
В основе инструмента лежит набор из четырёх специализированных промптов:
- Первый этап — определение порядка миграции файлов, преобразование кода и базовая проверка через компиляцию и тесты.
- Второй этап — приведение кода к лучшим практикам Swift и улучшение читаемости.
- Третий этап — автоматическая проверка по чек-листу: корректность типов, структура файлов, соответствие стандартам.
- Четвёртый этап — очистка кода от устаревших аннотаций и временных решений.
Такой пайплайн позволяет не только ускорить миграцию, но и повысить качество итогового кода. Разработчики могут сосредоточиться на валидации и сложных архитектурных изменениях, вместо рутинного переписывания.
Для проверки универсальности подхода команда протестировала инструмент на стороннем проекте — приложении Wikipedia для iOS. Один из модулей, отвечающий за обработку wiki-разметки, был успешно мигрирован, а соответствующий pull request опубликован в репозитории проекта. Это подтвердило, что решение не привязано к внутренней инфраструктуре Яндекса и может применяться в сторонних командах.
Чтобы внедрить инструмент в собственный проект, разработчикам необходимо заполнить конфигурационный шаблон. В него входят описание архитектуры, системы сборки, стандартов кодирования, структуры тестов, а также словарь типов и паттернов замены. Важным этапом является определение правильного порядка миграции: начинать рекомендуется с компонентов, не зависящих от устаревшего кода — так называемых «листьев» графа зависимостей. Это позволяет минимизировать использование промежуточных слоёв совместимости и писать чистый Swift.
Дополнительно для поддержания качества можно использовать отдельные промпты для генерации интеграционных тестов. Это помогает быстрее выявлять ошибки и снижает риски при массовом рефакторинге.
Решение уже совместимо с современными агентскими IDE: готовые промпты автоматически подгружаются в контекст разработки, что упрощает интеграцию в существующие процессы.
Подробнее об архитектуре и применении инструмента можно узнать в статье на Habr.
Обновления программ, что нового
• Яндекс открыл LLM-инструмент для ускоренной миграции iOS-кода с Objective-C на Swift
• Galaxy S26 в Европе получил второе апрельское обновление 2026 года
• Утечка раскрыла характеристики Xiaomi Smart Band 10 Pro: AMOLED 1,74
• Apple выпустила релиз-кандидаты iOS 26.5, iPadOS 26.5 и macOS Tahoe 26.5 для разработчиков
• Функция «Объединить фото» в Алисе AI получила новые ИИ-шаблоны ко Дню «Звёздных войн»
• Утечка раскрыла Pixel 11: чип Tensor G6 на 7 ядрах ARM C1 и подсветка Pixel Glow