Versioni e reviduara e patcheve për bërthamat Linux që mbështesin gjuhën Rust

Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux обновлённый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована для включения в ветку linux-next. В новом варианте устранены замечания, высказанные в процессе обсуждения первой версии патчей. Линус Торвальдс уже подключился к обсуждению и предложил изменить логику обработки некоторых битовых операций.

Kujtojmë se ndryshimet e propozuara japin mundësinë për të përdorur Rust si gjuhën e dytë për zhvillimin e drejtorive dhe moduleve të bërthamës. Mbështetja për Rust paraqitet si një opsion, i cili nuk është aktiv me parazgjedhje dhe nuk çon në përfshirjen e Rust në listën e varësive të detyrueshme për ndërtimin e bërthamës. Përdorimi i Rust për zhvillimin e drejtorive do të lejojë krijimin e drejtorive të sigurta dhe më të kualitetshme me minimumin e mundimeve, duke eliminuar probleme si manipulimi me hapësirën e memories pas lirimit të saj, dereferencimi i pikave null dhe tejkalimi i kufijve të tamponit.

Trajtimi i sigurt i memories garantohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe marrëveshjes së kohëzgjatjes së objekteve (zona e dukshmërisë), si dhe përmes vlerësimit të saktësisë së qasjes në memory gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga mbushjet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pazëvendësueshëm (immutable) si standard, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

Наиболее заметные изменения в новой версии патчей:

  • Код для распределения памяти избавлен от возможных генераций состояния «panic» при возникновении ошибок, таких как нехватка памяти. В состав включён вариант Rust-библиотеки alloc, в которой переделан код для обработки сбоев, но конечной целью является перенос в основную редакцию alloc всех возможностей, необходимых для ядра (изменения уже подготовлены и переданы в состав стандартной библиотеки Rust).
  • Вместо ночных сборок для компиляции ядра с поддержкой Rust теперь можно использовать бета выпуски и стабильные релизы компилятора rustc. В настоящий момент в качестве эталонного компилятора используется rustc 1.54-beta1, но после выхода релиза 1.54 в конце месяца, в качестве эталонного будет поддерживаться именно он.
  • Добавлена поддержка написания тестов с использованием штатного для Rust атрибута «#[test]» и возможность применения doctests для документирования тестов.
  • Добавлена поддержка архитектур ARM32 и RISCV в дополнение к ранее поддерживаемым x86_64 и ARM64.
  • Улучшены реализации GCC Rust (GCC-фронтэнда для Rust) и rustc_codegen_gcc (бэкенд rustc для GCC), который теперь проходит все базовые тесты.
  • Преложен новый уровень абстракции для использования в программах на языке Rust механизмов ядра, написанных на языке Си, таких как красно-чёрное дерево, объекты с подсчётом ссылок, создание файловых дескрипторов, задачи, файлы и векторы ввода/вывода.
  • В компонентах для разработки драйверов улучшена поддержка модуля «file_operations», макроса «module!», регистрации макросов и рудиментарных драйверов (probe и remove).
  • В Binder реализована поддержка передачи файловых дескрипторов и LSM-хуков.
  • Предложен более функциональный пример драйвера на Rust — bcm2835-rng для аппаратного генератора случайных чисел плат Raspberry Pi.

Дополнительно упоминаются проекты некоторых компаний, связанные с использованием Rust в ядре:

  • Компания Microsoft выразила интерес к участию в работе по интеграции поддержки Rust в ядро Linux и готова в ближайшие месяцы предоставить реализации драйверов для Hyper-V на Rust.
  • Компания ARM работает над улучшением поддержи Rust для систем на базе процессоров ARM. Проекту Rust уже предложены изменения, переводящие 64-разрядные системы ARM в число платформ первого уровня поддержки (Tier-1).
  • Компания Google напрямую обеспечивает поддержку проекта Rust for Linux, развивает новую реализацию механизма межпроцессного взаимодействия Binder на Rust и рассматривает возможность переработки на Rust различных драйверов. Через ISRG (Internet Security Research Group) компания Google обеспечила финансирование работы по интеграции в ядро Linux поддержки Rust.
  • Компания IBM реализована поддержку Rust в ядре для систем PowerPC.
  • Лаборатория LSE (Systems Research Laboratory) разработала SPI-драйвер на Rust.

Burimi: opennet.ru

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