🤖 Как ИИ закрыл 5-летний iOS-техдолг за 2 месяца
🤯 Команда Яндекс Браузера за 2 месяца переписала на Swift то, что вручную тянули 5 лет. 97,5 тысяч строк, 2000+ файлов, 106 pull request'ов. Ускорение в 2.5 раза против ручной миграции (интересно как считали).
Тулкит выложили под Apache 2.0. 🐱 https://github.com/yandex/migration-toolkit-for-swift— это набор Jinja-шаблонов и Python-скрипта setup_migration_rules.py, который из заполненного http://rules.md/ генерирует 4 готовых промпта под конкретный проект.
В http://rules.md/ около десятка макросов под специфику любого репо: префиксы ObjC-классов для ренейминга, маппинг ObjC→Swift, code style, инструкции для билд-системы ( http://BUILD.gn/, Bazel, Xcode), типичные ошибки компиляции с решениями, правила удаления
https://t.me/objc. В репозитории сразу лежат два готовых конфига как примеры: yandex-browser и wikipedia.
Качество обеспечивается тремя слоями. После каждой конверсии гоняется компиляция и тесты, при ошибках LLM итерирует сама. Отдельный промпт http://integration-tests.md/ пишет интеграционные тесты на мигрированный модуль. И комментарии ревьюеров с PR подаются обратно в LLM, она сама правит мелочи вроде форматирования и нейминга. Финальная валидация остаётся за разработчиком, но рутину забирает на себя.
Очень крутой пример того, что нейросеть при правильном подходе реально способна разгрести большой техдолг, а не снести кодбейс к чертям, как принято стращать в твиттере. Чёткий пайплайн, жёсткие рамки и автоматическая валидация через компиляцию и тесты, и LLM становится инструментом, а не лотереей. Точно хочу попробовать такой же подход для Android-миграций.
🔗 https://habr.com/ru/companies/yandex/articles/1028494/
🐱 https://github.com/yandex/migration-toolkit-for-swift
#AI #iOS #Swift #Яндекс