Спецпроекты

Открытое ПО Искусственный интеллект

«Яндекс» представил открытое решение на базе большой языковой модели для ускорения миграции iOS-кода на Swift

Разработчики «Яндекса» выложили в открытый доступ первое решение на базе большой языковой модели (LLM) для автоматизации миграции iOS-проектов с Objective-C на Swift — современный язык программирования Apple. Оно решает проблему длительной миграции в крупных проектах, накопивших сотни тысяч строк устаревшего кода, ускоряя процесс в 2,5 раза и позволяя разработчикам переключиться с монотонной рутины на проверку качества. Подход будет полезен любым iOS-проектам с такой же задачей. Об этом CNews сообщил представитель «Яндекса».

Решение разработано при миграции кодовой базы «Яндекс Браузера». Как и тысячи компаний, чьи приложения появились до 2018 г., команда столкнулась с проблемой переписывания кода: огромные затраты времени и ресурсов, неизбежные при ручной работе ошибки, а также необходимость параллельно развивать проект. В результате за пять лет удалось сократить технический долг только наполовину.

Внедрение нового подхода на базе LLM не только ускорило миграцию, но и позволило сместить фокус разработчиков с монотонного переписывания кода на валидацию корректности миграции и выполнение сложного рефакторинга. За два месяца команда интегрировала 106 пул-реквестов, переписав около 97,5 тыс. строк устаревшего кода и более двух тысяч файлов — объем, который при ручной работе занял бы больше года.

В отличие от существующих инструментов-конвертеров, не учитывающих контекст проекта, разработанная система использует LLM, способную понимать не только грамматику языка, но и архитектуру конкретного проекта. В основе подхода — система из четырех специализированных промптов, каждый из которых отвечает за определенный этап. Первый определяет оптимальный порядок миграции файлов, переписывает код и проверяет результат через компиляцию и тесты. Второй адаптирует полученный код под лучшие практики Swift. Третий проводит автоматическую проверку по чек-листу: заголовки файлов, корректность замены типов, соответствие стандартам. Четвертый очищает код от устаревших аннотаций, когда необходимость в них отпадает.

Для проверки универсальности подхода команда применила его к стороннему проекту — приложению Wikipedia для iOS. Был успешно мигрирован один из пакетов, отвечающий за форматирование wiki-разметки, и открыт пул-реквест в репозиторий проекта. Эксперимент продемонстрировал, что подход не привязан к специфике монорепозитория «Яндекса». Чтобы внедрить подобное решение в своём проекте, достаточно заполнить конфигурационный шаблон, который также выложен в открытый доступ. В него нужно внести архитектуру проекта, систему сборки, стандарты кода, структуру тестов, а также словарь типов и паттернов для замены. Далее важно определить правильный порядок миграции: начинать с компонентов, которые не зависят от старого кода — так называемых листьев графа зависимостей. Это позволит писать чистый Swift без промежуточных слоёв совместимости.

Российский разработчик анонсировал национальную СУБД с открытым кодом
Российский разработчик анонсировал национальную СУБД с открытым кодом Импортонезависимость

Для сохранения качества кода в процессе миграции можно использовать дополнительный промпт для генерации интеграционных тестов.

Готовые промпты автоматически подгружаются в контекст диалога в большинстве современных агентских IDE, поэтому решение совместимо с популярными инструментами для работы с кодом.

Все промпты, скрипты и шаблоны уже доступны на GitHub и SoucreCraft.

Короткая ссылка