Опубліковано п’яту версію патчів для підтримки драйверів Rust в Linux

Здається, що розробка патча для підтримки драйверів Rust в Linux набрав хороший темп Ну, трохи більше місяця тому було опубліковано видалену пропозицію, оскільки з третьої версії щомісяця надходила нова пропозиція, а тепер вийшла нова пропозиція, це шоста версія.

Мігель Охеда запропонував новий випуск компонентів розробки драйверів пристроїв Rust для розробників ядра Linux. Це шосте видання досі вважається експериментальним але він уже включений у гілку linux-next і достатньо зрілий, щоб почати працювати над створенням шарів абстракції поверх підсистем ядра, а також написання драйверів і модулів.

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

Слід пам'ятати, що запропоновані зміни дозволяють використовувати Rust як другу мову для розробки драйверів і модулів ядра. Підтримка Rust представлена ​​як параметр, який не ввімкнено за замовчуванням і не призводить до того, що Rust буде включено серед необхідних залежностей збірки для ядра.

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

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

У новій версії патчів продовжено видаляти коментарі, зроблені під час обговорення першого, другий, третій, квартал y Кинта видання патчів (на які я залишаю вам відповідні посилання).

Основні новинки шостої пропозиції

З надходженням цієї нової пропозиції набір інструментів оновлено до виходу Rust 1.59.0, разом з яким варіант бібліотеки alloc він також синхронізується з новою версією Rust, усуваючи потенційний стан «паніки», коли виникають помилки, наприклад, брак пам’яті.

Ще одна зміна, яка була внесена, полягає в тому, що зараз, замість надання файлів специфікації платформи заздалегідь створений пункт призначення вони генеруються динамічно на основі конфігурації ядра.

Також зазначається, що параметр ядра HAVE_RUST був доданий, щоб увімкнути його для архітектур, сумісних з Rust, і що абстракції були запропоновані для використання в коді Rust апаратного генератора псевдовипадкових чисел.

З іншого боку, згадується, що можливість використання монтажних вставок стабілізовано ("feature(global_asm)") і додана підтримка створення хост-програм у Rust, які використовуються в процесі збірки ядра.

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

  • Використання кодів помилок без префікса "Error::" (наприклад, "return Err(EINVAL)") дозволено для наближеної обробки кодів помилок у C.
  • Додано тип "CString" для рідних рядків C. Комбіновані типи форматувальника та буфера.
  • Додано ознаки Bool і LockInfo.
  • Спрощена реалізація спін-блоків.

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


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

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

*

*

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