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

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

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

В настоящее время, Комиссия по развитию Мигеля Охеды финансируется Google и ISRG. (Internet Security Research Group), которая является основателем проекта Let's Encrypt и продвигает HTTPS и разработку технологий для повышения безопасности в Интернете.

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

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

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

Основные нововведения в пятом предложении

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

В той части изменений и улучшений, которые были сделаны, мы можем обнаружить, что проверка компонента для совместимости с Rust добавлена ​​в систему непрерывной интеграции на основе Intel-совместимого бота 0DAY/LKP, и отчеты о тестировании начали выпускаться.

В дополнение к этому подчеркивается, что интеграция поддержки Rust готовится в автоматизированная система тестирования КернелЦИ, плюс тесты на основе GitHub CI были переведены на использование контейнеров.

Также подчеркивается, что добавлена ​​возможность определения дополнительных параметров при регистрации устройств, а также скрипт is_rust_module.sh был переработан добавлена ​​поддержка примитивов статической синхронизации (глобальные общие переменные) на основе реализации CONFIG_CONSTRUCTORS.

Из другие изменения, которые выделяются в этом новом предложении контроллеров:

  • Модули Rust Core избавлены от необходимости определять атрибуты: "#![no_std]" и "#![feature(...)]".
  • Добавлена ​​поддержка одиночных целей сборки (.o, .s, .ll и .i).
  • Руководство по коду теперь определяет правила разделения комментариев ("//") и документирования кода ("///").
  • Упрощенное управление блокировками: Guard и GuardMut объединены в один параметризованный тип.
  • Добавлена ​​абстракция «RwSemaphore», которая действует как оболочка над структурой C rw_semaphore.
  • Для использования mmap добавлен новый модуль mm и абстракция VMA (привязка к структуре vm_area_struct).
  • Контроллер GPIO PL061 был изменен для использования макроса «dev_*!».
  • Общая очистка кода.

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


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

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

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

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

*

*

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