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

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

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

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

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

  • Инструментариумът е актуализиран до изданието на Rust 1.59.0. Вариант на библиотеката alloc също е синхронизиран с новата версия на Rust, като се отървава от възможното генериране на състояние на „паника“ при възникване на грешки, като липса на памет. Възможността за използване на асемблерни вмъквания ("feature(global_asm)") е стабилизирана.
  • Добавена е поддръжка за създаване на Rust хост програми, използвани в процеса на компилиране на ядрото.
  • Вместо да доставят предварително генерирани файлове със спецификация на целевата платформа, те се генерират динамично въз основа на конфигурацията на ядрото.
  • Добавен параметър на ядрото HAVE_RUST, който да бъде активиран за архитектури, които поддържат Rust.
  • Предлагат се абстракции за използване в кода на Rust на хардуерен генератор на псевдослучайни числа.
  • Използването на кодове за грешки без префикса "Error::" (например, "return Err(EINVAL)") е разрешено за приближаване на обработката на кодове за грешки в C.
  • Добавен тип "CString" за собствени C-низове. Обединени типове Formatter и Buffer.
  • Добавени функции Bool и LockInfo.
  • Опростена реализация на спин-блокировки.

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

Добавяне на нов коментар