An ochdamh dreach de phìosan airson an kernel Linux le taic don chànan 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 и развитию технологий для повышения защищённости интернета.

Anns an dreach ùr:

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

Tha na h-atharrachaidhean a tha san amharc ga dhèanamh comasach Rust a chleachdadh mar dhàrna cànan airson draibhearan agus modalan kernel a leasachadh. Tha taic meirge air a thaisbeanadh mar roghainn nach eil air a chomasachadh gu bunaiteach agus nach eil a’ ciallachadh gu bheil Rust air a ghabhail a-steach mar eisimeileachd togail riatanach airson an kernel. Le bhith a’ cleachdadh Rust airson leasachadh dhràibhearan leigidh sin leat draibhearan nas sàbhailte agus nas fheàrr a chruthachadh le glè bheag de dh’ oidhirp, saor bho dhuilgheadasan leithid ruigsinneachd cuimhne às deidh an saoradh, ro-aithrisean puing null, agus cus bufair.

Bidh Rust a’ sparradh sàbhailteachd cuimhne aig àm cruinneachaidh tro sgrùdadh iomraidh, sealbhachadh nithean agus lorg fad-beatha nithean (scopes), agus le bhith a’ measadh dè cho ceart ‘s a tha slighean cuimhne aig àm ruith. Bidh Rust cuideachd a’ toirt dìon an aghaidh tar-shruthan iomlan, ag iarraidh gun tèid luachan caochlaideach a thòiseachadh mus tèid an cleachdadh, gu bheil làimhseachadh mhearachdan nas fheàrr aige san leabharlann àbhaisteach, a’ cleachdadh bun-bheachd iomraidhean agus caochladairean neo-sheasmhach gu bunaiteach, agus a’ tabhann clò-sgrìobhadh làidir statach gus mearachdan loidsigeach a lughdachadh.

Source: fosgailtenet.ru

Cuir beachd ann