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-программе.
Именно поэтому после генерации включается вторая половина системы - автоматическая проверка.
Как предполагается устроить систему
Архитектура пока исследовательская, но уже описаны четыре крупных этапа.
- Scheduling / decomposition. Огромный C-репозиторий необходимо разделить на части таким образом, чтобы LLM не потеряла информацию о типах, зависимостях и поведении остальных компонентов.
- Translation. Модель преобразует C в идиоматичный Rust.
- Validation. Поведение Rust-версии сравнивается с C-оригиналом. Предполагается использовать fuzzing и более формальные методы проверки эквивалентности.
- 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.
Опубликовано:
Категории материала:

