Canonical профинансирует PhD-проект по автоматическому переводу C в Rust для Ubuntu

Canonical объявила о финансировании трёхлетнего PhD-проекта, целью которого является создание системы для автоматического перевода больших фрагментов кода C в Rust. Проект реализуется на базе исследовательской группы Programming Languages Research Group Бристольского университета. Финансирование также выделяет UK Research and Innovation.

Что именно планируется сделать

Проект нацелен на создание платформы, способной взять репозиторий на C объёмом в сотни тысяч строк и перевести его в Rust, который будет «безопасным, поведенчески корректным и поддерживаемым». Работу выполнит аспирант Алекс Вуд (Alex Wood) под руководством профессора Мэн Вана (Meng Wang); соруководителями выступят доктор Кристина Дэвид (Cristina David) и Джон Сигер (Jon Seager) из Canonical.

Как будет работать автоматический перевод

Система решает несколько задач последовательно. Сначала большой код разбивается на части, достаточно маленькие для работы, но при этом сохраняется понимание зависимостей между ними. Затем выполняется сам перевод с помощью языковых моделей, обученных на реальных примерах конвертации C в Rust. Цель — получить код, который выглядит так, будто его написал Rust-разработчик, а не C-код, переодетый в синтаксис Rust.

Самая сложная часть — доказать, что переведённый код ведёт себя так же, как оригинал. Для этого используются фаззинг и формальные проверки эквивалентности. Если расхождения обнаружены, отдельный этап исправления пытается найти точное место ошибки и устранить её методами символического восстановления программ (symbolic program-repair), не переписывая весь фрагмент заново.

Джон Сигер подчёркивает, что языковая модель — лишь часть работы. Сгенерированный код должен пройти валидацию, прежде чем ему можно будет доверять сохранение исходного поведения.

Полевые испытания: AppArmor и snap-confine

В качестве целевых тестовых примеров выбраны AppArmor и snap-confine. Оба компонента уже работают в продакшене на реальных системах Ubuntu, обеспечивая контроль доступа и песочницу, которые большинство пользователей не видят, но на которые постоянно полагаются. Выбор пал на них не потому, что они просты, а потому, что Canonical нужны промышленные тестовые примеры, позволяющие оценить, как подход работает в реальных производственных условиях. Тестирование живого компонента включает всё, что накопилось вокруг него за годы реального использования, что делает перевод без поломок гораздо более сложной задачей — и это как раз и есть цель.

Сигер также отметил важный нюанс: ничего из того, что будет создано в рамках этого проекта, в ближайшее время не попадёт в эти инструменты. Смысл в том, что Canonical «заинтересована в этом программном обеспечении и хочет увидеть результаты», а не в том, что переписывание уже началось.

Почему это важно для пользователей Ubuntu

Если подход выдержит испытание, Canonical получит реальный ответ на вопрос, можно ли доверять автоматическому переводу код, который защищает систему, а не только тот, который легко тестировать. В результате пользователи Ubuntu — от обычных десктопных установок до корпоративных развёртываний — могут со временем получить критически важные для безопасности компоненты с меньшим числом ошибок, не полагаясь на трудоёмкое ручное переписывание чувствительного кода. В то же время развитие экосистемы Ubuntu продолжается и в других направлениях: например, Linux 7.2 принёс планировщик с учётом кэша и новые драйверы, а Firefox 154 получил перевод страниц и ИИ-вкладки. Отдельно стоит следить за автоматической очисткой старых ядер в Linux Mint — это ещё один шаг к упрощению обслуживания системы.

Частые вопросы

Когда переведённый код появится в Ubuntu?

Никакой код из этого проекта в ближайшее время не попадёт в AppArmor или snap-confine. Проект исследовательский, и его цель — оценить саму возможность автоматического перевода, а не выпустить готовый продукт.

Какие компоненты будут переведены первыми?

В качестве тестовых примеров выбраны AppArmor и snap-confine. Это критически важные компоненты безопасности Ubuntu, работающие в продакшене.

Что такое symbolic program-repair?

Это техника автоматического исправления ошибок в коде, которая анализирует программу и находит точное место сбоя, а затем патчит его, не переписывая весь фрагмент заново.

Насколько безопасен перевод с помощью языковых моделей?

Языковая модель — лишь один из этапов. Сгенерированный код обязательно проходит проверку с помощью фаззинга и формальных проверок эквивалентности, чтобы убедиться, что поведение сохранено.

Зачем Canonical вкладываться в университетский проект?

Canonical заинтересована в этих компонентах и хочет понять, можно ли автоматизировать их перевод в Rust. Это потенциально снижает риски и затраты на переписывание кода вручную.

Кто ещё финансирует проект?

Помимо Canonical, финансирование выделяет UK Research and Innovation — британское агентство по исследованиям и инновациям.

Что такое AppArmor?

AppArmor — это система мандатного контроля доступа (MAC), которая ограничивает возможности программ. В Ubuntu она используется для изоляции приложений и повышения безопасности системы.

Это касается только Ubuntu или других дистрибутивов тоже?

Проект нацелен на компоненты Ubuntu. Однако AppArmor используется и в других дистрибутивах Linux, так что результаты исследования в перспективе могут быть полезны и им.

Источник: itsfoss.com