Опубликована четвертая версия патчей для поддержки драйверов Rust в Linux

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

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

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

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

Безопасность памяти обеспечивается в Rust во время компиляции путем проверки ссылок, отслеживания владения объектом и времени жизни объекта (область действия), а также путем оценки правильности доступа к памяти во время выполнения кода.

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

Какие изменения в четвертой части?

В этой новой версии патчей, которые представлены, упоминается, что комментарии, сделанные во время обсуждения первой, второй и третьей редакции патчей, продолжают устраняться.

Мы будем обновлять до тех пор, пока не перестанем зависеть от каких-либо нестабильных функций;
в этот момент мы можем захотеть объявить минимальную версию Rust
поддерживается, как это сделано, например, для GCC и Clang.

Точно так же мы перешли на версию языка Rust 2021 года.

Что касается других изменений, которые были внесены в эту новую версию, в объявлении упоминается следующее:

  • Перешел на использование стабильной версии Rust 1.58.0 в качестве эталонного компилятора.
  • Изменения, необходимые для проекта, еще не включенные в основной набор инструментов Rust, включают флаг «-Zsymbol-mangling-version=v0» (ожидается в Rust 1.59.0) и режим «maybe_uninit_extra» (ожидается в Rust 1.60.0). .
  • Добавлены автоматические проверки наличия инструментов Rust и их пригодности, а также расширена возможность тестирования поддержки Rust в системе.
  • Предлагаются новые абстракции для доступа к таблицам идентификаторов устройств («IdArray» и «IdTable») из кода Rust.
  • Добавлены слои для вызова функций, связанных с таймером (кадр часов).
  • Контроллеры платформы теперь определяются через реализации трейтов.
  • Добавлен новый макрос для упрощения регистрации драйвера платформы, а также предложен новый общий шаблон драйвера.
  • Добавлены новые макросы для структур "dev_*".
  • Добавлены новые методы "{read,write}*_relaxed" для типа IoMem. .
  • Удалено свойство FileOpener для упрощения операций с файлами.
  • В число аргументов, передаваемых при регистрации контроллера, добавлен параметр ThisModule.
  • Предлагается типовой шаблон для создания модулей ядра на языке Rust.

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


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

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

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

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