Уже выпущена третья версия патчей для поддержки драйвера Rust в Linux.

Через полгода после публикации второй версии, Мигель Охеда, автор проекта Rust-for-Linux, обнародовал предложение третьего варианта для разработки драйверов устройств на языке Rust в ядре Linux.

Поддержка Rust считается экспериментальной, но ее включение в ветку linux-next уже согласовано. Разработка финансируется Google и организацией ISRG (Internet Security Research Group), которая является основателем проекта Let's Encrypt и способствует продвижению HTTPS и разработке технологий для повышения безопасности в Интернете.

Следует помнить, что предлагаемые изменения позволяют использовать Rust в качестве второго языка для разработки драйверов и модулей ядра.

Теме статьи:
Вторая версия патчей для поддержки драйвера Rust в Linux уже отправлена.

Поддержка Rust рекламируется как опция, которая по умолчанию не активна. и это не приводит к включению Rust в необходимые базовые зависимости сборки. Использование Rust для разработки драйверов позволит вам создавать более качественные и безопасные драйверы с минимальными усилиями, без хлопот, связанных с доступом к освобожденной области памяти, разыменованием нулевых указателей и превышением пределов буфера.

В новой версии исправлений по-прежнему отсутствуют комментарии, сделанные во время обсуждения первой и второй версии исправлений, а также самые заметные изменения, которые мы можем найти:

Перешел на стабильную версию Rust 1.57 в качестве эталонного компилятора и обеспечена привязка к стабилизированной версии языка Rust 2021. Переход на спецификацию Rust 2021 pразрешено начать работу, чтобы избежать использования таких нестабильных функций в таких патчах, как const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic и try_reserve.

Также стоит отметить, что разработка версии alloc продолжается из библиотеки Rust, в новой версии, параметры "no_rc" и "no_sync" реализованы для отключения функциональности который не используется в коде ядра Rust, что делает библиотеку более модульной. Мы продолжаем работать с разработчиками основного выделения для внесения необходимых изменений ядра в основную библиотеку. Параметр «no_fp_fmt_parse», необходимый для работы библиотеки на уровне ядра, был перемещен в базовую библиотеку (ядро) Rust.

Код очищен, чтобы удалить возможные предупреждения компилятора при компиляции ядра в режиме CONFIG_WERROR. Когда код создается в Rust, включаются дополнительные диагностические режимы компилятора и предупреждения Clippy linter.

Они предложили абстракции для использования секлоков (блокировка последовательности), обратные вызовы для управления питанием, ввод-вывод памяти (readX / writeX), обработчики прерываний и потоков, GPIO, доступ к устройствам, драйверы и учетные данные в коде ржавчины.

Расширены инструменты разработки драйверов. с использованием перемещаемых мьютексов, битовых итераторов, упрощенных привязок по указателям, улучшенной диагностики сбоев и инфраструктуры, не зависящей от шины данных.

Улучшена работа со ссылками с использованием типа Ref. упрощенный, на основе бэкэнда refcount_t, который использует центральный API с тем же именем для подсчета ссылок. Поддержка типов Arc и Rc, предоставляемая в стандартной библиотеке сопоставления, была удалена и недоступна в коде, выполняемом на уровне ядра (для самой библиотеки подготовлены параметры для отключения этих типов).

В патчи добавлена ​​версия драйвера PL061 GPIO, переписанная на Rust. Особенностью драйвера является то, что его реализация практически построчно повторяет существующий драйвер C GPIO. Для разработчиков, которые хотят познакомиться со сборками контроллеров в Rust, было подготовлено построчное сравнение, которое дает представление о том, какими сборками в Rust стал код C.

Основная кодовая база Rust использует rustc_codegen_gcc, бэкэнд rustc для GCC, который реализует компиляцию AOT с использованием библиотеки libgccjit. При правильной разработке бэкэнда это позволит вам собирать код Rust, задействованный в ядре, с помощью GCC.
Помимо ARM, Google и Microsoft, Red Hat выразила заинтересованность в использовании Rust в ядре Linux.

Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)