Третата версия на пачовете за поддръжка на драйвери за Rust в Linux вече е пусната

Шест месеца след публикуването на втората версия, Мигел Охеда, автор на проекта Rust-for-Linux, обяви предложението за третия вариант за разработване на драйвери на устройства на език Rust в ядрото на Linux.

Поддръжката на Rust се счита за експериментална, но включването й в следващия клон на linux вече е договорено. Разработката е финансирана от Google и организацията ISRG (Internet Security Research Group), която е основател на проекта Let's Encrypt и допринася за популяризирането на HTTPS и развитието на технологии за подобряване на сигурността в Интернет.

Трябва да се помни, че предложените промени позволяват Rust да се използва като втори език за разработване на драйвери и модули на ядрото.

Rust драйвери на linux
Свързана статия:
Втората версия на кръпките за поддръжка на Rust драйвер за Linux е изпратена

Поддръжката на Rust се рекламира като опция, която не е активна по подразбиране и това не води до включването на Rust в необходимите базисни компилационни зависимости. Използването на Rust за разработване на драйвери ще ви позволи да създавате по-добри и по-сигурни драйвери с минимални усилия, без да се притеснявате за достъп до зона от паметта, след като е освободена, дерефериране на нулеви указатели и превишаване на ограниченията на буфера.

Новата версия на пачовете продължава да премахва коментарите, направени по време на обсъждането на първата и втората версия на пачовете и най-забележителните промени, които можем да открием:

Преминава се към стабилна версия на Rust 1.57 като референтен компилатор и е осигурено свързване към стабилизираното издание на езика Rust 2021. Преходът към спецификацията Rust 2021 pразрешено да започне работа, за да избегне използването на такива нестабилни функции в пачове като const_fn_transmute, const_panic, const_unreachable_unchecked и core_panic и try_reserve.

Също така се откроява това развитието на версията alloc продължи от библиотеката Rust, в новата версия, опциите "no_rc" и "no_sync" са внедрени за деактивиране на функционалността който не се използва в кода на Rust за ядрото, което прави библиотеката по-модулна. Продължаваме да работим с основните разработчици на alloc, за да внесем необходимите промени в ядрото в основната библиотека. Опцията "no_fp_fmt_parse", която е необходима за функционирането на библиотеката на ниво ядро, е преместена в базовата библиотека (ядрото) на Rust.

Кодът е изчистен, за да се премахнат възможни предупреждения на компилатора при компилиране на ядрото в режим CONFIG_WERROR. Когато кодът е създаден в Rust, се включват допълнителни режими на диагностичен компилатор и Clippy linter предупреждения.

Те предложиха абстракции за използване на seqlocks (заключване на последователността), извиквания за обратно извикване за управление на захранването, I/O памет (readX / writeX), манипулатори на прекъсвания и нишки, GPIO, достъп до устройства, драйвери и идентификационни данни в ръждив код.

Инструментите за разработка на драйвери са разширени с използването на преместваеми мютекси, битови итератори, опростени обвързвания върху указатели, подобрена диагностика на грешки и независима инфраструктура от шината на данни.

Работата с връзки е подобрена с помощта на типа Ref опростен, базиран на бекенда refcount_t, който използва централния API със същото име за броене на препратки. Поддръжката за типовете Arc и Rc, предоставена в стандартната библиотека за картографиране, е премахната и не е налична в кода, изпълняван на ниво ядро ​​(за самата библиотека са подготвени опции за деактивиране на тези типове).

Към пачовете е добавена версия на драйвера PL061 GPIO, пренаписан в Rust. Характеристика на драйвера е, че неговата реализация почти ред по ред повтаря съществуващия C GPIO драйвер. За разработчиците, които искат да се запознаят със сградните контролери в Rust, е подготвено сравнение ред по ред, което дава представа в кои надграждания в Rust се е превърнал C кодът.

Основната кодова база на Rust приема rustc_codegen_gcc, rustc бекенд за GCC, който имплементира AOT компилация с помощта на библиотеката libgccjit. С правилното развитие на бекенда, това ще ви позволи да съберете кода на Rust, включен в ядрото, използвайки GCC.
В допълнение към ARM, Google и Microsoft, Red Hat прояви интерес към използването на Rust в ядрото на Linux.

И накрая, ако се интересувате да научите повече за него, можете да се консултирате с подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.