Яндекс открыл LLM-инструмент для ускоренной миграции iOS-кода с Objective-C на Swift

70 комментарии
Яндекс представил открытый инструмент на базе LLM, который помогает быстрее и аккуратнее переводить iOS-приложения с Objective-C на Swift. Решение учитывает особенности проекта, снижает объём ручной работы и ускоряет миграцию в среднем в 2,5 раза

Компания Яндекс опубликовала в открытом доступе инструмент на базе больших языковых моделей (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.

Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте