Le vaega lona valu o patches mo le fatu Linux ma le lagolago mo le gagana Rust

Мигель Охеда (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 и развитию технологий для повышения защищённости интернета.

I le lomiga fou:

  • Инструментарий и вариант библиотеки 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()).

O suiga ua fuafuaina e mafai ai ona fa'aoga Rust e fai ma gagana lona lua mo le atina'eina o ta'avale ma fa'aoga fatu. O le lagolago a le Rust ua tu'uina atu o se filifiliga e le mafai ona fa'aletonu ma e le i'u ai i le fa'aofiina o le Rust o se fa'alagolago mo le fatu. O le fa'aaogaina o le Rust mo le atina'eina o aveta'avale o le a fa'ataga ai oe e fai ni ta'avale saogalemu ma sili atu ona lelei ma sina taumafaiga itiiti, e sa'oloto mai fa'afitauli e pei o le fa'aogaina o le mafaufau pe a mae'a fa'asa'oloto, fa'aletonu le fa'asinomaga, ma fa'alavelave fa'aletonu.

O le fa'aogaina o le manatua-saogalemu o lo'o tu'uina atu i le Rust i le taimi fa'aopoopo e ala i le siakiina o fa'asinomaga, le siakiina o le mea e umia ma le mea faitino i le olaga atoa (lautele), fa'apea fo'i ma le iloiloga o le sa'o o le manatua avanoa i le taimi o le fa'atinoina o tulafono. E maua ai foi e le ele le puipuiga mai le tele o numera, e manaʻomia ai le faʻatagaina o le faʻatulagaina o tau fesuiaʻi aʻo leʻi faʻaaogaina, e sili atu ona lelei le faʻaogaina o mea sese i totonu o le faletusi masani, faʻaaogaina le manatu o faʻamatalaga e le mafai ona suia ma fesuiaiga e ala i le le mafai, ofoina atu le malosi o le taina e faʻaitiitia ai mea sese.

puna: opennet.ru

Faaopoopo i ai se faamatalaga