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

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

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

Безопасността на работата с паметта в Rust се осигурява по време на компилация чрез проверка на указателите, проследяване на собствеността на обектите и отчитане на времето на живот на обектите (обхват), както и чрез оценка на коректността на достъпа до паметта по време на изпълнение на кода. Rust предлага също така средства за защита от аритметични препълвания, изисква задължителна инициализация на стойностите на променливите преди употреба, по-добро управление на грешки в стандартната библиотека, прилага концепцията за неизменяемост (immutable) на указателите и променливите по подразбиране и предлага силна статична типизация за минимизиране на логическите грешки.

В новата версия на пачовете продължава отстраняването на забележките, направени по време на обсъждането на първата, втората и третата редакция на пачовете. В новата версия:

  • Извършен е преход към използването на стабилната версия на компилатора Rust 1.58.0. От необходимите за проекта промени, които все още не са включени в основния комплект инструменти на Rust, се отбелязват флагът "-Zsymbol-mangling-version=v0" (очаква се в Rust 1.59.0) и режимът "maybe_uninit_extra" (очаква се в Rust 1.60.0).
  • Добавени са автоматични проверки за наличието на подходящи инструменти на Rust и разширени възможностите за тестване на поддръжката на Rust в системата.
  • Предложени са нови абстракции за достъп от код на езика Rust до таблиците с идентификатори на устройства ("IdArray" и "IdTable").
  • Добавени са прослойки за достъп до функции, свързани с таймери (clock framework).
  • Драйверите за платформите сега се определят чрез реализация на типажи.
  • Добавен е нов макрос за опростяване на регистрацията на драйвери за платформи, както и е предложен нов шаблон за типови драйвери.
  • Добавени са макроси за структури "dev_*".
  • Добавени са методи "{read,write}*_relaxed" за типа IoMem.
  • Премахнато е свойството FileOpener за опростяване на операциите с файлове.
  • В списъка с аргументи, предавани при регистрация на драйвер, е добавен параметър "ThisModule".
  • Предложен е типов шаблон за създаване на модули на ядрото на езика Rust.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster