Фреймворк в Rust может быть реализован в ядре для улучшения драйверов.

Ядро Rust Linux

Джош Триплетт, компания Intel и член комитета по надзору за развитием Crates.io, уже представили рабочую группу несколько дней назад в своем выступлении на Саммите Open Source Technology Summit который нацелен на приведение Rust в один ряд с C в программировании ядра Linux.

В рабочей группе, которая находится в процессе создания, Разработчики Rust вместе с инженерами Intel подготовят спецификации это может подчеркнуть функциональность, которую Rust должен реализовать для программирования в ядре Linux. Системное программирование часто требует низкоуровневых манипуляций, таких как выполнение привилегированных инструкций процессора и получение подробной информации о состоянии процессора.

Из аналогичных возможностей, уже разрабатываемых для Rust, поддерживается поддержка безымянных структур, объединения (объединение), вставки ассемблера (макрос «asm!») и формат чисел с плавающей запятой BFLOAT16.

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

Во время обсуждения речи Джоша идея была высказана:

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

Грег Кроа-Хартман, отвечает за поддержание стабильной ветви ядра Linux, иx выразил готовность добавить в ядро ​​фреймворк драйверов Rust, если он имеет какие-либо реальные преимущества перед C, например, он обеспечит безопасные привязки к базовому API.Кроме того, Грег рассматривает этот фреймворк только как параметр, который не активен по умолчанию, чтобы не включать Rust в число зависимостей основной сборки.

Оказалось, что в этом направлении уже работают несколько команд. Например, разработчики Fish in a Barrel подготовили инструментарий для написания загружаемых модулей для ядра Linux на языке Rust, используя набор абстрактных слоев поверх интерфейсов и структур ядра для повышения безопасности.

Промежуточные уровни генерируются автоматически на основе файлов заголовков ядра, доступных с помощью утилиты bindgen. Clang используется для создания промежуточных слоев. Собранные модули, помимо слоев, используют пакет staticlib.

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

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

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

Не весь запланированный функционал реализован, но фреймворк уже вполне подходит для этой работы и используется для написания рабочего драйвера для поставляемого USB-контроллера LAN9512 Ethernet на плате Raspberry Pi 3.

Был написан существующий драйвер smsc95xx как эталонная реализация при написании драйвера Rust на языке C.

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

источник: https://hub.packtpub.com


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

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

*

*

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

  1.   Л1ч сказал

    Я не могу найти информацию о драйвере smsc95xx в исходниках или о том, что что-то будет реализовано в Rust для Linux.