Компания Canonical представила проект по разработке транслятора с Си на Rust
Компания Canonical анонсировала проект, развиваемый совместной с Бристольским университетом и нацеленный на разработку инструментария для автоматической трансляции кода с языка Си на Rust. Проект ориентирован на перевод больших репозиториев, содержащих сотни тысяч строк кода на Си, в безопасное (без unsafe-операций) и легко сопровождаемое представление на языке Rust. Canonical профинансирует работу исследователей над проектом в течение 3 лет. Развиваемая технология будет опробована для перевода на Rust пакетов AppArmor и snap-confine, чтобы проверить применимость метода к реальным системным компонентам.
В инструментарии будет задействована гибридная модель, комбинирующая технологии на основе машинного обучения с классическими методами анализа, тестирования и формальной верификации. В процессе работы крупные кодовые базы будут разделяться на отдельные фрагменты, транслируемые независимо без потери общего контекста, необходимого для учёта типов, зависимостей и поведения. AI-инструментарий будет обучен на коде существующих проектов, уже переведённых с Си на Rust, для задействования в результирующем коде корректных Rust-абстракций вместо переписывания Си-конструкций на Rust.
Помимо этого будет предоставлен инструментарий для проверки результирующего кода, использующий fuzzing-тестирование и элементы формальной верификации, а также средства для отладки и анализа проблем, выявленных в результате проверки. Проект позиционируется как исследовательский и подразумевает не просто создание связки «AI-компиляция-тестирование», а разработку новых методов, обрабатывающих ситуации с неопределенным поведением в коде на Си, указателями и конкурирующими блокировками.
Создание нового проекта объясняется тем, что ручное переписывание с Си на Rust требует больших трудозатрат и приводит к потере накопленных исправлений и оптимизаций, традиционные трансляторы создают неидиоматичный и небезопасный Rust-код, а AI-модели плохо масштабируются на крупные репозитории и не гарантируют сохранение поведения программы.
Источник: http://www.opennet.ru/opennews/art.shtml? num=66099
© OpenNet
