Восьмая версия патчей для ядра Linux с поддержкой языка Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux выпуск v8 компонентов для разработки драйверов устройств на языке Rust. Это девятая редакция патчей с учётом первого варианта, опубликованного без номера версии. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next, претендует на интеграцию в осенний выпуск 5.20/6.0 и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let's Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.
В новой версии:
- Инструментарий и вариант библиотеки alloc, избавленный от возможных генераций состояния "panic" при возникновении ошибок, обновлены до выпуска Rust 1.62. По сравнению с ранее используемой версией в инструментарии Rust стабилизирована поддержка функциональности const_fn_trait_bound, используемой в патчах к ядру.
- Код привязок выделен в отдельный crate-пакет "bindings", что упрощает пересборку в случае внесения изменений только в основной пакет "kernel".
- Реализация макроса "concat_idents!" переписана в форме процедурного макроса, не привязанного к функциональности concat_idents и допускающего применение ссылок на локальные переменные.
- Переписан макрос "static_assert!", что позволило использовать "core::assert!()" в любом контексте вместо констант.
- Макрос "build_error!" адаптирован для работы при выставлении для модулей режима
"RUST_BUILD_ASSERT_{WARN,ALLOW}".
- Добавлен отдельный файл с настройками "kernel/configs/rust.config".
- Обрабатываемые в макроподстановках файлы "*.i" переименованы в "*.rsi".
- Прекращена поддержка сборки Rust-компонентов с уровнями оптимизации, отличными от применяемых для кода на языке Си.
- Добавлен модуль fs, предоставляющий обвязки для работы с файловыми системами. Предложен пример простой файловой системы, написанной на языке Rust.
- Добавлен модуль workqueue для работы с системными очередями (предоставляет обвязки над структурами ядра work_struct и workqueue_struct).
- Продолжено развитие модуля kasync с реализацией методов асинхронного программирования (async). Добавлен пример работающего на уровне ядра TCP-сервера, написанного на Rust.
- Добавлена возможность обработки прерываний на языке Rust при помощи типажей [Threaded]Handler и типов [Threaded]Registration`.
- Добавлен процедурный макрос "#[vtable]", упрощающий работу с таблицами указателей на функции, такими как структура file_operations.
- Добавлена реализация двунаправленных связных списков "unsafe_list::List".
- Добавлена начальная поддержка RCU (Read-copy-update) и тип Guard для проверки привязки блокировки на чтение к текущему потоку.
- Добавлена функция Task::spawn() для создания и автоматического запуска потоков ядра. Также добавлен метод Task::wake_up().
- Добавлен модуль delay, позволяющий использовать задержки (обёртка над msleep()).
Предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://lkml.org/lkml/2022/8/1...)
- OpenNews: Линус Торвальдс не исключил возможность интеграции поддержки Rust в ядро Linux 5.20
- OpenNews: Шестая версия патчей для ядра Linux с поддержкой языка Rust
- OpenNews: Проект Kerla развивает Linux-совместимое ядро на языке Rust
- OpenNews: Поддержка Rust для ядра Linux столкнулась с критикой Торвальдса
- OpenNews: В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust
Похожие новости:
- В Rust будет прекращена поддержка старых Linux-систем
- Выпуск модуля LKRG 0.9.4 для защиты от эксплуатации уязвимостей в ядре Linux
- Уязвимость в ядре Linux, позволяющая обойти ограничения режима Lockdown
- В дистрибутиве Asahi Linux реализована начальная поддержка устройств Apple с чипом M2
- Проект по портированию механизма изоляции pledge для Linux
- Релиз дистрибутива Rocky Linux 9.0, развиваемого основателем CentOS
- Google представил сборку Rocky Linux, оптимизированную для Google Cloud
- Обновление сборки DogLinux для проверки оборудования
- Для ядра Linux предложена реализация функции memchr, работающая до 4 раз быстрее
- В GCC утверждено включение поддержки языка Rust
Теги для поиска: #_rust, #_linux, #_kernel
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 04:28
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux выпуск v8 компонентов для разработки драйверов устройств на языке Rust. Это девятая редакция патчей с учётом первого варианта, опубликованного без номера версии. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next, претендует на интеграцию в осенний выпуск 5.20/6.0 и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let's Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета. В новой версии:
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 04:28
Часовой пояс: UTC + 5