Третья редакция патчей для ядра Linux с поддержкой языка Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux третий вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let's Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.
Напомним, что предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой и второй версий патчей. Наиболее заметные изменения:
- Осуществлён переход на использование в качестве эталонного компилятора стабильного выпуска Rust 1.57 и обеспечена привязка к стабилизированной редакции языка Rust 2021. Ранее патчи были завязаны на бета-ветку Rust и использовали некоторые возможности языка, входящие в категорию нестабильных. Переход на спецификацию Rust 2021 позволил инициировать работу по уходу от использования в патчах таких нестабильных возможностей, как const_fn_transmute, const_panic, const_unreachable_unchecked и core_panic и try_reserve.
- Продолжено развитие входящего в состав патчей варианта Rust-библиотеки alloc, изменённой для избавления функций распределения памяти от возможных генераций состояния "panic" при возникновении ошибок, таких как нехватка памяти. В новой версии реализованы опции "no_rc" и "no_sync" для отключения функциональности, не используемой в Rust-коде для ядра, делающие библиотеку более модульной. Продолжается работа с основными разработчиками alloc, нацеленная на перенос необходимых для ядра изменения в основной состав библиотеки. В базовую библиотеку Rust (core) перенесена опция "no_fp_fmt_parse", необходимая для работы библиотеки на уровне ядра.
- Проведена чистка кода для избавления от возможных предупреждений компилятора при сборке ядра в режиме CONFIG_WERROR. При сборке кода на языке Rust включены дополнительные диагностические режимы компилятора и предупреждения lint-ера Clippy.
- Предложены абстракции для использования в коде на языке Rust блокировок seqlock (sequence locks), callback-вызовов для управления питанием, I/O Memory (readX/writeX), обработчиков прерываний и потоков, GPIO, доступа к устройствам, драйверам и учётным данным.
- Расширены срества для разработки драйверов с задействованием перемещаемых мьютексов, битовых итераторов, упрощённых обвязок над указателями, улучшенной диагностики сбоев и инфраструктуры, не зависимой от шины данных.
- Улучшена работа со ссылками при помощи упрощённого типа Ref, базирующегося на бэкенде refcount_t, использующем одноимённый API ядра для подсчёта ссылок. Поддержка типов Arc и Rc, предоставляемых в штатной библиотеке alloc, удалена и не доступна в коде, выполняемом на уровне ядра (для самой библиотеки подготовлены опции, отключающие данные типы).
- В состав патчей добавлен вариант драйвера PL061 GPIO, переписанный на Rust. Особенностью драйвера является то, что его реализация практически построчно повторяет имеющийся драйвер GPIO на языке Си. Для разработчиков, желающих познакомиться с созданием драйверов на Rust, подготовлено построчное сравнение, позволяющее понять в какие конструкции на Rust преобразован код на Си.
- В основную кодовую базу Rust принят [url= https://github.com/rust-lang/rustc_codegen_gcc]rustc_codegen_gcc[/url], бэкенд rustc для GCC, реализующий возможность упреждающей (AOT) компиляции с использованием библиотеки libgccjit. При должном развитии бэкенда он позволит собирать задействованный в ядре Rust-код при помощи GCC.
- Помимо компаний ARM, Google и Microsoft, интерес к использованию языка Rust в ядре Linux выразила компания Red Hat. Напомним, что Google напрямую обеспечивает поддержку проекта Rust for Linux, развивает новую реализацию механизма межпроцессного взаимодействия Binder на Rust и рассматривает возможность переработки на Rust различных драйверов. Компания Microsoft приступила к реализации драйверов для Hyper-V на Rust. Компания ARM работает над улучшением поддержи Rust для систем на базе процессоров ARM. Компания IBM реализовала поддержку Rust в ядре для систем PowerPC.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://lore.kernel.org/lkml/2...)
- OpenNews: Вторая редакция патчей для ядра Linux с поддержкой языка Rust
- OpenNews: Для ядра Linux предложен драйвер GPIO, написанный на Rust
- OpenNews: Проект Kerla развивает Linux-совместимое ядро на языке Rust
- OpenNews: Поддержка Rust для ядра Linux столкнулась с критикой Торвальдса
- OpenNews: В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust
Похожие новости:
- Выпуск языка программирования Rust 1.57
- Выпуск дистрибутива 4MLinux 38.0
- Выпуск инсталлятора Archinstall 2.3.0, применяемого в дистрибутиве Arch Linux
- Проект elfshaker развивает систему контроля версий для ELF-файлов
- Выпуск атомарно обновляемого дистрибутива Endless OS 4.0
- Представлен дистрибутив Amazon Linux 2022
- Умер Алексей Турбин, участник команды ALT Linux Team
- Модераторы сообщества Rust в знак протеста объявили об отставке
- В Германии планируют перевести 25 тысяч ПК в госучреждениях на Linux и LibreOffice
- Выпуск Stratis 3.0, инструментария для управления локальными хранилищами
Теги для поиска: #_rust, #_linux, #_kernel
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 09:21
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux третий вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let's Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета. Напомним, что предложенные изменения дают возможность использовать Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру. Использование Rust для разработки драйверов позволит с минимальными усилиями создавать безопасные и более качественные драйверы, избавленные от таких проблем как обращение к области памяти после её освобождения, разыменование нулевых указателей и выход за границы буфера. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой и второй версий патчей. Наиболее заметные изменения:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 09:21
Часовой пояс: UTC + 5