Разработка & Кодинг Aug 24, 2026В закладки

Ubuntu за проектом по автоматическому преобразованию C→Rust с помощью ИИ. Цель: действительно безопасный Rust, а не просто код, который компилируется без повсюду unsafe.
Возьмём классический баг: переполнение буфера в системном демоне, написанном на C. Он исправим, но через полгода может появиться в другой форме, потому что C не может механически гарантировать отсутствие таких ошибок. Представьте, что этот же код переписан на Rust — где компилятор делает такую ошибку структурно невозможной. Именно такую амбицию поддерживает финансово Canonical (разработчик Ubuntu): автоматически перевести миллионы строк C в безопасный Rust с помощью ИИ.
Автоматический перевод C→Rust уже существует — инструмент c2rust делает это годами. Проблема: он генерирует синтаксически корректный, но полностью unsafe Rust. То есть мы поменяли синтаксис, но не получили нужных гарантий безопасности.
Проект, который поддерживает Canonical, нацелен на идиоматический и безопасный Rust: код, который использует систему типов Rust (владение, заимствование, время жизни) для выражения и проверки инвариантов безопасности на этапе компиляции. Это принципиально сложно, потому что C и Rust основаны на разных ментальных моделях:
// C - корректно или use-after-free в зависимости от контекста использования
char* get_value(struct Map* m, const char* key) {
return hashmap_get(m, key); // потенциально невалидный указатель, если m изменяется
} // Rust - компилятор запрещает изменение m во время заимствования
fn get_value<'a>(m: &'a HashMap<&str, String>, key: &str) -> Option<&'a String> {
m.get(key) // валидность времени жизни гарантируется компилятором
} ИИ должен понимать, что эти две функции не эквивалентны механически — и что наивный перевод породит unsafe block, а не полноценную миграцию.
Здесь мы видим прямую отсылку к дебатам, будоражащим свободное ПО. Линус Торвальдс принял решение для ядра Linux: помощь ИИ приветствуется, противники могут форкать. Canonical придерживается той же прагматичной логики — ИИ как инструмент массовой модернизации, а не как угроза целостности.
Настоящий вопрос — человеческая валидация: кто проверяет сгенерированный Rust? Кто гарантирует, что семантика оригинального C сохранена, включая поведение на границах? Инструмент, который генерирует 95% правильного Rust и 5% тонко ошибочного кода, опаснее, чем инструмент, который производит 100% unsafe — потому что он даёт ложную гарантию.
Если проект оправдает ожидания, это станет значительным ускорением перехода системных слоёв на Rust — движение, которое уже набирает обороты (Android, Windows, ядро Linux, OpenSSL). Нацелившись на Ubuntu, Canonical напрямую затрагивает низкоуровневые слои миллионов серверов в продакшене.
Canonical поддерживает массовую ИИ-перевод C в Rust, стремясь к идиоматическому и безопасному коду — а не просто синтаксически корректному, как у c2rust. Задача: доказать, что ИИ способен понимать семантику управления памятью, а не только синтаксис. Следите за проектом, если поддерживаете критически важный системный код на C.
Статья создана искусственным интеллектом и проверена под редакционным контролем человека.
IA vs libristes : la fracture s'installe dans l'open source