Вторая редакция патчей для ядра Linux с поддержкой языка Rust
Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. Предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру.
Некоторые изменения в новой версии патчей:
— Код для распределения памяти избавлен от возможных генераций состояния "panic" при возникновении ошибок, таких как нехватка памяти.
— Вместо ночных сборок для компиляции ядра с поддержкой Rust теперь можно использовать бета выпуски и стабильные релизы компилятора rustc.
— Добавлена поддержка написания тестов с использованием штатного для Rust атрибута "#test" и возможность применения doctests для использования кода примеров из документации в качестве тестов.
— Добавлена поддержка архитектур ARM32 и RISCV.
— Улучшены реализации GCC Rust (GCC-фронтэнда для Rust) и rustc
codegengcc (бэкенд rustc для GCC), который теперь проходит все базовые тесты.
И другие изменения.
Microsoft выразила интерес к участию в работе по интеграции поддержки Rust в ядро Linux и готова в ближайшие месяцы предоставить реализации драйверов для Hyper-V на Rust.
ARM работает над улучшением поддержи Rust для систем на базе процессоров ARM. Проекту Rust уже предложены изменения, переводящие 64-разрядные системы ARM в число платформ первого уровня поддержки (Tier-1).
Google напрямую обеспечивает поддержку проекта Rust for Linux, развивает новую реализацию механизма межпроцессного взаимодействия Binder на Rust и рассматривает возможность переработки на Rust различных драйверов. Через ISRG (Internet Security Research Group) компания Google обеспечила финансирование работы по интеграции в ядро Linux поддержки Rust.
IBM реализовала поддержку Rust в ядре для систем PowerPC.
Лаборатория LSE (Systems Research Laboratory) разработала SPI-драйвер на Rust.
ИсточникНовости Linux 🐧: @linux_gram