Canonical: Транслятор кода с C на Rust

Canonical профинансирует трёхлетний исследовательский PhD-проект Университета Бристоля, целью которого является создание системы автоматизированной миграции крупных C-кодовых баз в безопасный, поддерживаемый и поведенчески эквивалентный Rust.

Категории: Технологии   Наука   Образование  

Совсем свежая новость: заявление Canonical опубликовано 19-20 августа 2026 года, и его уже подхватили российские, британские, европейские и американские IT-издания. Источник

Что именно делает Canonical

Первичный источник: публикация в Ubuntu Discourse от Jon Seager, VP Engineering в Canonical: Investing in automated C to Rust translation Ubuntu Discourse

Canonical совместно с University of Bristol и британской организацией UK Research and Innovation (UKRI) финансирует трёхлетний PhD-проект. Непосредственным исследователем станет Alex Wood, научную работу возглавит профессор Meng Wang, а со-руководителями выступят Dr. Cristina David и Jon Seager от Canonical.

Цель сформулирована довольно амбициозно: создать платформу, способную брать целые репозитории на C размером в сотни тысяч строк и автоматически превращать их в Rust-код, который одновременно:

  • безопасен с точки зрения памяти;
  • функционально эквивалентен исходному C;
  • написан в нормальном, идиоматичном Rust, а не представляет собой механически переложенный C;
  • пригоден для дальнейшего сопровождения разработчиками.

Именно последний момент отличает проект от обычного транспилятора.

Это будет не обычный C → Rust transpiler

Canonical прямо объясняет, почему существующих решений недостаточно.

Уже существует, например, C2Rust - достаточно известный автоматический транспилятор: https://c2rust.com/manual/print.html

Проблема таких систем заключается в том, что они стараются максимально буквально сохранить структуру C-программы.

Получается Rust, который компилируется, но часто содержит большое количество unsafe, сырых указателей и характерных для C конструкций. То есть одно из главных преимуществ Rust - memory safety - используется далеко не полностью.

Canonical хочет пойти существенно дальше.

В проекте будет использоваться ИИ

Это, пожалуй, самая интересная часть новости.

Предлагаемая система будет гибридной, или нейросимволической. Она должна сочетать:

LLM / машинное обучение → статический анализ → fuzzing → формальные методы → автоматическое исправление ошибок.

Языковые модели будут обучаться или дообучаться на корпусе известных преобразований C → Rust. Их задача --- не буквально переписывать синтаксис C, а попытаться восстановить смысл программы и выразить его средствами, естественными для Rust.

Но Canonical отдельно подчёркивает важную вещь: красивый Rust-код, созданный LLM, ещё ничего не доказывает.

Сгенерированный код предлагается считать недоверенным, пока система не получит доказательства того, что его поведение соответствует оригинальной C-программе.

Именно поэтому после генерации включается вторая половина системы - автоматическая проверка.

Как предполагается устроить систему

Архитектура пока исследовательская, но уже описаны четыре крупных этапа.

  1. Scheduling / decomposition. Огромный C-репозиторий необходимо разделить на части таким образом, чтобы LLM не потеряла информацию о типах, зависимостях и поведении остальных компонентов.
  2. Translation. Модель преобразует C в идиоматичный Rust.
  3. Validation. Поведение Rust-версии сравнивается с C-оригиналом. Предполагается использовать fuzzing и более формальные методы проверки эквивалентности.
  4. Debugging and repair. Если обнаруживается расхождение, система должна локализовать его причину и попытаться автоматически исправить Rust-код.

Таким образом, правильнее говорить даже не о «переводчике языка C в Rust», а об автоматизированной системе миграции программных систем с C на Rust.

Canonical даст системе серьёзные тестовые проекты

В качестве промышленных полигонов выбраны:

  • AppArmor --- один из важнейших механизмов безопасности Linux/Ubuntu;
  • snap-confine --- security-critical компонент инфраструктуры Snap.

Оба написаны преимущественно на C и непосредственно связаны с безопасностью Ubuntu.

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

Однако здесь есть существенная оговорка Canonical:

Использование AppArmor и snap-confine в исследовании не означает, что Canonical уже решила заменить их Rust-версиями.

Пока они выступают именно industrial case studies --- сложными реальными объектами для проверки технологии.

Что пишут британские источники

Британская составляющая здесь сама по себе значительна: Canonical базируется в Великобритании, а академическим партнёром является University of Bristol.

InfoWorld подробно описывает исследовательскую часть. Издание обращает внимание на фундаментальную проблему: переписывание старого системного ПО вручную чрезвычайно дорого и рискованно.

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

Именно поэтому автоматический semantics-preserving translation потенциально настолько интересен индустрии.

Что пишут американские источники

The New Stack сделал акцент на безопасности:

AI-generated Rust compiles perfectly. That's the scary part - The New Stackhttps://thenewstack.io/canonical-c-rust-apparmor/

Сам заголовок хорошо передаёт проблему.

Компиляция Rust-программы не означает эквивалентность C-оригиналу.

LLM вполне способна создать великолепно выглядящий Rust, который:

  • успешно компилируется;
  • проходит часть тестов;
  • выглядит идиоматично;
  • не содержит очевидных ошибок;

но при каком-нибудь редком входном наборе данных ведёт себя иначе, чем исходная C-программа.

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

Поэтому в этом проекте верификация важнее самой генерации кода.

Что пишут европейские Linux-издания

Linuxiac также подробно разобрал инициативу:

Canonical Backs New Project to Translate Large C Codebases Into Safe Rusthttps://linuxiac.com/canonical-backs-new-project-to-translate-large-c-codebases-into-safe-rust/

Издание подчёркивает масштаб: речь идёт не о переводе отдельных функций или библиотек, а потенциально о hundreds of thousands of lines of C.

It's FOSS также опубликовал материал:

Canonical is Funding a PhD to Automate C to Rust Translation for Ubuntuhttps://itsfoss.com/news/canonical-c-to-rust-automation/

Там дополнительно подчёркивается финансовая схема: проект поддерживает не только Canonical --- UK Research and Innovation предоставляет соответствующее финансирование, а исследовательская работа проходит в Programming Languages Research Group Университета Бристоля.

Почему эта история значительно шире Ubuntu

Проблема автоматического C → Rust сейчас превратилась в самостоятельное направление computer science.

Например, в апреле 2026 года была опубликована работа &inator: Correct, Precise C-to-Rust Interface Translation, где исследуется корректное автоматическое преобразование интерфейсов C-программ в Rust. Авторы отмечают, что масштабирование такого подхода на большие программы остаётся нерешённой задачей.

https://arxiv.org/abs/2604.17261

В июне появилась система Reboot, позволяющая преимущественно автоматически переводить интерпретаторы с C на safe Rust. Исследователи перевели шесть реальных программ размером примерно 6--23 тыс. строк C, причём потребовалось от 1 до 11 вмешательств человека.

https://arxiv.org/abs/2606.27122

Исследование качества существующих C → Rust translators, опубликованное в 2026 году, сравнивает C2Rust, C2SaferRust и TranslationGym и приходит к важному выводу: ни одна из автоматических технологий пока не превосходит стабильно человеческий перевод по всем параметрам качества.

https://arxiv.org/abs/2602.00840

То есть Canonical входит в область, где уже имеется серьёзная научная база, но задача промышленного автоматического перевода огромных C-проектов в safe Rust ещё не решена.

Как точнее сформулировать новость

Canonical инвестирует в технологию автоматической миграции крупных C-проектов на безопасный Rust с помощью ИИ и формальной верификации

Последний вариант наиболее точно отражает суть. Здесь ИИ только генератор, а ключевой научной задачей становится доказательство того, что результат сохранил поведение исходной программы.

Это потенциально крупная тема: Ubuntu фактически становится одним из промышленных полигонов перехода системного ПО от C к memory-safe языкам, причём инициатива Canonical хорошо ложится в гораздо более широкий тренд миграции критического системного ПО на Rust.

Опубликовано:

Категории материала: