Вышла восьмая версия патчей для поддержки драйверов Rust в Linux

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

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

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

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

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

Что нового в этом восьмом релизе?

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

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

В реализация макроса "concat_idents!", Переписан как процедурный макрос, не привязанный к функциональности concat_idents и позволяющий использовать ссылки на локальные переменные.

Кроме того, упоминается, что макрос "static_assert!" был переписан, чтобы разрешить "core::assert!()" используется в любом контексте вместо констант, а макрос "construction_error!" адаптирован для работы при установке режима "RUST_BUILD_ASSERT_{WARN,ALLOW}" для модулей.

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

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

  • Добавлен отдельный конфигурационный файл "kernel/configs/rust.config".
  • Файлы "*.i", обрабатываемые в макроподстановках, были переименованы в "*.rsi".
  • Удалена поддержка сборки компонентов Rust с уровнями оптимизации, отличными от тех, которые используются для кода C.
  • Развитие модуля kasync продолжилось внедрением методов асинхронного программирования (async).
  • Добавлен пример TCP-сервера уровня ядра, написанного на Rust, и добавлена ​​возможность обработки прерываний на Rust.
  • Добавлен макрос процедуры, упрощающий работу с таблицами указателей функций, такими как структура file_operations.
  • Добавлена ​​реализация двунаправленного связанного списка "unsafe_list::List".
  • Добавлена ​​начальная поддержка RCU и типа Guard для проверки того, привязана ли блокировка чтения к текущему потоку.
  • Добавлена ​​функция Task::spawn() для автоматического создания и запуска потоков ядра.
  • Также был добавлен метод Task::wake_up().
  • Добавлен модуль задержки

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


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

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

*

*

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