Разработчики: | DARPA |
Дата премьеры системы: | июль 2024 г |
Отрасли: | Информационные технологии |
Технологии: | Средства разработки приложений |
2024: Объявление инициативы
31 июля 2024 года Управление перспективных исследовательских проектов Министерства обороны США (DARPA) анонсировало инициативу TRACTOR (TRanslating All C TO Rust), предполагающую разработку программного транслятора для автоматического преобразования кода на языках C и C++ на Rust. Предполагается, что это позволит повысить безопасность продуктов.
В сообщении DARPA говорится, что одной из основных проблем, связанных с применением C/С++, являются сложности в управлении памятью. Языки программирования вроде C позволяют разработчикам напрямую манипулировать памятью, из-за чего могут возникать ошибки (такие как переполнение буфера) и появляться уязвимости. Еще одной проблемой названо неопределенное поведение. Перевод программ на Rust поможет улучшить качество софта, но для выполнения задачи необходим эффективный транслятор. Проект TRACTOR как раз и нацелен на создание такого инструмента.
Специалисты воспользуются средствами машинного обучения и большими языковыми моделями (LLM) для автоматического перевода программного кода с языка C на Rust. Ожидается, что итоговый результат будет сопоставим с тем, который демонстрируют высококвалифицированные Rust-разработчики. Таким образом, будет устранен целый класс уязвимостей, обусловленных управлением памятью. Это важно, поскольку многие системы Министерства обороны США написаны на C/С++, а следовательно, могут содержать ошибки.
![]() | Rust заставляет программиста все делать правильно. Может показаться, что правила, предусмотренные этим языком, ограничивают возможности, но когда к ним привыкаешь, они дают свободу. Как только вы понимаете, что эти меры обеспечивают защиту, вы становитесь свободнее и можете сосредоточиться на более важных вещах, — говорит доктор Дэн Уоллах (Dan Wallach), руководитель инициативы TRACTOR.[1] | ![]() |
Примечания
Подрядчики-лидеры по количеству проектов
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
Распределение систем по количеству проектов, не включая партнерские решения
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)