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

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

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

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

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

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

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

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