Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux пятый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.
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.
В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой, второй, третьей и четвёртой редакций патчей. В новой версии:
- В систему непрерывной интеграции на базе поддерживаемого компанией Intel бота 0DAY/LKP добавлена проверка компонентов для поддержки Rust и началась публикация отчётов о тестировании. Готовится интеграция поддержки Rust в систему автоматизированного тестирования KernelCI. Тестирование на базе GitHub CI переведено на использование контейнеров.
- Модули ядра на Rust избавлены от необходимости определения crate-атрибутов «#![no_std]» и «#![feature(…)]».
- Добавлена поддержка единичных сборочных целей (.o, .s, .ll и .i).
- В рекомендациях по оформлению кода определены правила в отношении разделения комментариев («//») и документирования кода («///»).
- Переработан скрипт is_rust_module.sh.
- Добавлена поддержка статических (глобальных общих переменных) примитивов синхронизации, основанных на реализации «CONFIG_CONSTRUCTORS».
- Упрощено управление блокировками: Guard и GuardMut объединены и один параметризованный тип.
- Предоставлена возможность определения дополнительных параметров при регистрации устройств.
- Добавлена абстракция «RwSemaphore», выступающая в роли обвязки над Си-структурой rw_semaphore.
- Для использования mmap добавлен новый модуль mm и абстракция VMA (обвязка над структурой vm_area_struct).
- Драйвер GPIO PL061 переведён на использование макроса «dev_*!».
- Проведена общая чистка кода.
Burimi: opennet.ru
