Вторая редакция патчей для ядра Linux с поддержкой языка Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux обновлённый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. В новом варианте устранены замечания, высказанные в процессе обсуждения первой версии патчей. Линус Торвальдс уже подключился к обсуждению и предложил изменить логику обработки некоторых битовых операций.
Напомним, что предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Наиболее заметные изменения в новой версии патчей:
- Код для распределения памяти избавлен от возможных генераций состояния "panic" при возникновении ошибок, таких как нехватка памяти.
В состав включён вариант Rust-библиотеки
alloc, в которой переделан код для обработки сбоев, но конечной целью является перенос в основную редакцию alloc всех возможностей, необходимых для ядра (изменения уже подготовлены и переданы в состав стандартной библиотеки Rust).
- Вместо ночных сборок для компиляции ядра с поддержкой Rust теперь можно использовать бета выпуски и стабильные релизы компилятора rustc.
В настоящий момент в качестве эталонного компилятора используется rustc 1.54-beta1, но после выхода релиза 1.54 в конце месяца, в качестве эталонного будет поддерживаться именно он.
- Добавлена поддержка написания тестов с использованием штатного для Rust атрибута "#[test]" и возможность применения doctests для документирования тестов.
- Добавлена поддержка архитектур ARM32 и RISCV в дополнение к ранее поддерживаемым x86_64 и ARM64.
- Улучшены реализации GCC Rust (GCC-фронтэнда для Rust) и rustc_codegen_gcc (бэкенд rustc для GCC), который теперь проходит все базовые тесты.
- Преложен новый уровень абстракции для использования в программах на языке Rust механизмов ядра, написанных на языке Си, таких как красно-чёрное дерево, объекты с подсчётом ссылок, создание файловых дескрипторов, задачи, файлы и векторы ввода/вывода.
- В компонентах для разработки драйверов улучшена поддержка модуля
"file_operations", макроса "module!", регистрации макросов и рудиментарных драйверов (probe и remove).
- В Binder реализована поддержка передачи файловых дескрипторов и LSM-хуков.
- Предложен более функциональный пример драйвера на Rust - bcm2835-rng для аппаратного генератора случайных чисел плат Raspberry Pi.
Дополнительно упоминаются проекты некоторых компаний, связанные с использованием Rust в ядре:
- Компания Microsoft выразила интерес к участию в работе по интеграции поддержки Rust в ядро Linux и готова в ближайшие месяцы предоставить реализации драйверов для Hyper-V на Rust.
- Компания ARM работает над улучшением поддержи Rust для систем на базе процессоров ARM. Проекту Rust уже предложены изменения, переводящие 64-разрядные системы ARM в число платформ первого уровня поддержки (Tier-1).
- Компания Google напрямую обеспечивает поддержку проекта Rust for Linux, развивает новую реализацию механизма межпроцессного взаимодействия Binder на Rust и рассматривает возможность переработки на Rust различных драйверов. Через ISRG (Internet Security Research
Group) компания Google обеспечила финансирование работы по интеграции в ядро Linux поддержки Rust.
- Компания IBM реализована поддержку Rust в ядре для систем PowerPC.
- Лаборатория LSE (Systems
Research Laboratory) разработала SPI-драйвер на Rust.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://lkml.org/lkml/2021/7/4...)
- OpenNews: Выпуск Rust 1.53. Google профинансирует добавление поддержки Rust в ядро Linux
- OpenNews: В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust
- OpenNews: Rust включён в число основных языков для разработки платформы Android
- OpenNews: Поддержка Rust для ядра Linux столкнулась с критикой Торвальдса
- OpenNews: Представлена библиотека Aya для создания eBPF-обработчиков на языке Rust
Похожие новости:
- [Системное программирование, Серверное администрирование, Софт] Обновление LiteManager 5, удаленное управление Windows, Linux, Mac и Android (в режиме просмотра экрана)
- [Настройка Linux, *nix, Разработка под Linux, Учебный процесс в IT, DevOps] Зачем уметь работать в командной строке?
- [Программирование, Функциональное программирование, Визуализация данных, Kotlin, Разработка под Linux] Продолжаем обрабатывать NDJSON
- [Разработка под Linux] Архитектура контейнеров, часть 1. Почему важно понимать разницу между пространством пользователя и пространством ядра
- [Настройка Linux, Звук] Заметка: Контроль звуковых выходов для программ
- Поставка не самых свежих ядер Linux создаёт проблемы с поддержкой оборудования у 13% новых пользователей
- [Настройка Linux, Open source, Виртуализация, Kubernetes] 13 инструментов для разработчиков, шпаргалка по Linux команде apt, вводный курс по Kubernetes Operators и многое другое
- В дистрибутиве AlmaLinux реализована поддержка архитектуры ARM64
- [Программирование, Java, Функциональное программирование, Kotlin, Разработка под Linux] Современный JSON процессор
- [Информационная безопасность] Как обнаружить вредонос: методология SANS
Теги для поиска: #_rust, #_kernel, #_linux
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 21:26
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux обновлённый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. В новом варианте устранены замечания, высказанные в процессе обсуждения первой версии патчей. Линус Торвальдс уже подключился к обсуждению и предложил изменить логику обработки некоторых битовых операций. Напомним, что предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. Наиболее заметные изменения в новой версии патчей:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 21:26
Часовой пояс: UTC + 5