Надходить восьма версія патчів для підтримки драйверів Rust у Linux

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

Це дев’ятий випуск патчів (з урахуванням першої випущеної версії без номера версії). Підтримка Rust вважається експериментальною, але він уже включений у гілку linux-next, претендує на інтеграцію в осінньому випуску 5.20/6.0, і є достатньо просунутим, щоб почати працювати над створенням рівнів абстракції поверх підсистем ядра, а також над написанням контролерів і модулів.

Розробка фінансується Google і ISRG (Internet Security Research Group), яка є засновником проекту Let's Encrypt та сприяє HTTPS та розробці технологій для підвищення безпеки в Інтернеті.

Запропоновані зміни дозволяють використовувати Rust як другу мову для розробки драйверів і модулів ядра. Підтримка Rust представлена ​​як параметр, який не ввімкнено за замовчуванням і не призводить до того, що Rust буде включено серед необхідних залежностей збірки для ядра. Використання Rust для розробки драйверів дозволить вам створювати кращі та безпечніші драйвери з мінімальними зусиллями, без проблем, як-от доступ до області пам’яті після її звільнення, розіменування нульових покажчиків і переповнення буфера.

Безпека пам’яті забезпечується в Rust під час компіляції шляхом перевірки посилань, відстеження володіння об’єктом і тривалості життя (області) об’єкта, а також шляхом оцінки правильності доступу до пам’яті під час виконання коду.

Що нового в цьому восьмому випуску?

У цій новій пропозиції, яка була випущена, згадується, що варіант бібліотеки alloc, що виключає можливу генерацію стану «паніки» через помилки, оновлено до версії Rust 1.62. Порівняно з попередньою версією, набір інструментів Rust стабілізував підтримку функції const_fn_trait_bound, яка використовується в патчах ядра.

Окрім цього код прив'язки розділено на групу блоків "прив'язки". окремо, що полегшує перезбірку, якщо змінено лише основний пакет ядра.

Файл реалізація макросу "concat_idents!", Переписаний як процедурний макрос, не прив’язаний до функціональності concat_idents і дозволяє використовувати посилання на локальні змінні.

Крім того, згадується, що макрос "static_assert!" було переписано, щоб дозволити "core::assert!()" використовується в будь-якому контексті замість констант, тоді як макрос "construction_error!" адаптовано для роботи при встановленні режиму "RUST_BUILD_ASSERT_{WARN,ALLOW}" для модулів.

додано модуль fs який містить посилання для роботи з файловими системами. Пропонується приклад простої файлової системи, написаної на Rust, а також доданий модуль черги завдань для роботи з системними чергами.

З інших змін які виділяються з цієї нової пропозиції:

  • Додано окремий файл конфігурації "kernel/configs/rust.config".
  • Файли «*.i», оброблені під час заміни макросів, перейменовано на «*.rsi».
  • Видалено підтримку створення компонентів Rust з рівнями оптимізації, відмінними від тих, що використовуються для коду C.
  • Розвиток модуля kasync продовжувався впровадженням методів асинхронного програмування (async).
  • Додано приклад TCP-сервера на рівні ядра, написаного на Rust, і додано можливість обробки переривань у Rust.
  • Додано макрос процедури, щоб полегшити роботу з таблицями вказівників на функції, такими як структура file_operations.
  • Додано реалізацію двонаправленого пов’язаного списку «unsafe_list::List».
  • Додано початкову підтримку для RCU та типу Guard, щоб перевірити, чи блокування читання прив’язано до поточного потоку.
  • Додано функцію Task::spawn() для автоматичного створення та запуску потоків ядра.
  • Також додано метод Task::wake_up().
  • Додано модуль затримки

В кінці кінців якщо вам цікаво дізнатись більше про це, Ви можете перевірити деталі У наступному посиланні.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.