Rust для Linux включає кілька вдосконалень для підтримки

Протягом останніх місяців Розробники Linux сперечаються можливість дозволити використання мови Rust щоб написати нові драйвери пристроїв для ядра.

Минулого року розробники ядра Linux вони, схоже, досягли згоди з цього питання, Прихильники Rust посилаються на роботу, яка показує, що приблизно дві третини вразливостей ядра, яким призначені CVE в Android і Ubuntu, пов’язані з проблемами безпеки пам’яті.

Після цієї заяви Лінус Торвальдс, інженер-програміст, провідний творець і розробник ядра Linux, сказав в інтерв’ю, що обговорення на цю тему було б набагато важливішим, ніж тривалий пост Google про мову.

Коли його запитали про пропозицію використовувати Rust, він зазначив, що «Рішення тут просте: просто використовуйте C ++ замість Rust».

Після того у березні була запущена перша підтримкаe, що дозволило розмістити драйвери Rust в дереві Linux-Next для подальшого тестування перед їх остаточним включенням до основного ядра.

Відразу за ним був переопублікований «запит на коментар» у списку розсилки ядра щодо перспективи коду Rust для ядра Linux.

Мігель ОхедаРозробник ядра Linux розпочав пропозицію запиту на коментарі (RFC) у списку розсилки ядра Linux.

У дописі зі списку розсилки викладено переконання розробників, які беруть участь у додаванні коду Rust до ядра, переваги, як-от покращений захист пам’яті тощо.

«Дехто з вас останніми тижнями та місяцями помітив, що робиться серйозна спроба ввести другу мову в ядро. Нарешті ми прийшли, з RFC, який додає підтримку Rust до ядра Linux», — сказав Мігель Ожея. «Ми знаємо, що введення нової мови в ядро ​​пов’язане з величезними витратами та ризиками», – додав він.

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

«Ми хотіли б подякувати Rust за співпрацю з нами над цими параметрами, щоб ядро ​​могло їх використовувати», — сказав Мігель.

При оновленні компілятора команда вдалося видалити деякі нестабільні функції зі списку: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic і try_reserve.

Крім цього, наголошується, що були додані деякі параметри модульності більше, щоб виділити, щоб вимкнути деякі непотрібні функції: no_rc і no_sync.

Upstream, для того, щоб варіант використання ядра добре підтримувався, а точніше, «мікс» необхідних для ядра параметрів, ядро ​​Upstream також додало no_fp_fmt_parse.

З іншого боку, Rust увімкнув серію додаткової діагностики для компілятора Rust і Clippy. Однією з відмінностей від C є те, що діагностику Rust дещо легше вимкнути в коді, що є більш суворим у загальному випадку.

також реалізовано абстракції та оновлення драйверів. Команда додала абстракції для блокувань потоків, зворотних викликів керування живленням, пам’яті io (readX / writeX), мікросхем irq та менеджерів потоків високого рівня, чіпів gpio (включаючи чіпи irq), периферійних пристроїв, периферійних пристроїв amba та драйверів.

Підтримка з контролер доповнений незалежною від шини інфраструктурою, Відкликані об’єкти, відкликані м’ютекси, ефективні бітові ітератори, краща діагностика паніки та спрощені обгортки вказівників. Крім того, він покращив і спростив об’єкти Ref (сумісний з refcount_t) і замінив усі екземпляри Rust.

І новий драйвер для пристроїв gpio PL061 був реалізований і відправлений як патч RFC.

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

Фуенте: https://lkml.org/lkml


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

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

*

*

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