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

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

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

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

Драйверы ржавчины в Linux
Теме статьи:
Вторая версия патчей для поддержки драйвера 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.