ИИНовость

Microsoft описала ИИ-миграции кода: Windows переводят на Clang/LLVM, C/C++ — на Rust

Компания применяет агентов к кодовым базам Windows и Azure, но оставляет людям утверждение правил и разбор спорных случаев. Формальная проверка пока не снимает вопрос, можно ли доверять спецификациям, созданным самим ИИ.

Редакция life2 мин чтения
Обсудить
Иллюстрация к материалу «Microsoft описала ИИ-миграции кода: Windows переводят на Clang/LLVM, C/C++ — на Rust»
Редакционная иллюстрация life

Microsoft 26 октября описала, как использует ИИ-агентов для крупных изменений в кодовых базах Windows и Azure. Один из проектов охватывает миграцию 400-миллионной кодовой базы на инструменты Clang/LLVM, а отдельное направление переводит унаследованный C и C++ на Rust. Компания не утверждает, что эти работы завершены или полностью автоматизированы.

Как развивался перевод C/C++ на Rust
  • Январь 2025 года: сгенерированный Rust-код не компилировался
  • Июнь 2025 года: код компилировался, но работал неправильно или не проходил тесты
  • Сентябрь 2025 года: рабочие переводы примерно 30 тысяч строк с ручным сопровождением
  • С февраля 2026 года: значительная автоматизация на более крупных кодовых базах

Источник: Microsoft, 26 октября 2026 года. Это внутренние результаты компании, а не независимое сравнение.

Вместо проверки каждой правки Microsoft формирует с помощью агентов базу правил на выборке типовых задач. Отдельный агент-рецензент оценивает исправления по корректности, минимальности, соответствию принятым соглашениям и удобству сопровождения. Эксперты утверждают общие правила, после чего агенты применяют их по всей кодовой базе; люди подключаются к новым и неоднозначным случаям.

Компания приводит и другие сценарии: добавление поддержки Clang/LLVM для Windows, исправление замечаний анализаторов CodeQL, PREfast и Roslyn, а также перенос сервисов с x86 на Arm. Microsoft считает более надёжной миграцию по пользовательским функциям, а не построчный перевод компонентов. Для каждого сценария создаётся отдельный набор проверок, поведение исходной и новой версий сравнивается, а часть тестов скрывают от агента, чтобы снизить риск подгонки результата.

Для перевода на Rust команда начала извлекать формальные спецификации из исходного кода и проверять получившуюся реализацию инструментом Verus. В других экспериментах агенты составляют спецификации TLA+, после чего трассы выполнения сверяются с моделью; свойства также пытаются доказывать средствами F* и Lean.

У подхода остаётся принципиальное ограничение. Если ИИ выводит спецификацию из того же кода, который нужно проверить, модель может точно описать существующее поведение, но не замысел разработчиков. Авторы Microsoft называют доверие к таким спецификациям открытым вопросом, наряду с проверкой безопасности, производительности и надёжности.

Verus действительно предназначен для статической проверки того, что Rust-код соответствует заданным спецификациям, но проект поддерживает лишь часть языка и остаётся в активной разработке. Поэтому описанный Microsoft процесс следует считать инженерским направлением и внутренним опытом, а не готовым продуктом или гарантией безошибочной автоматической миграции.

Обсудить

Давайте обсудим

Пока никто не ответил. Начните обсуждение.