Компания Яндекс опубликовала в открытом доступе инструмент на базе больших языковых моделей (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.
Обновления программ, что нового
• Huawei nova 15 Max: глобальная версия Enjoy 90 Pro Max на EMUI
• Firefox 150.0.2: исправления работы веб-камер, PDF-просмотрщика и патчи безопасности
• Qualcomm представила Snapdragon 6 Gen 5 и 4 Gen 5 на 4 нм
• OnePlus представила Nord CE 6 и Nord CE 6 Lite
• PCIe 8.0 выйдет в 2028 году и ускорит SSD и GPU в 8 раз
• Google выпустила Android 17 QPR1 Beta 2 для смартфонов Pixel