لينڪس ڪنيل لاء پيچ جو پنجون ايڊيشن زنگ ٻوليء جي مدد سان

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

ياد رهي ته تجويز ڪيل تبديليون ان کي ممڪن بڻائين ٿيون Rust کي ٻي ٻولي طور استعمال ڪرڻ لاءِ ڊرائيور ۽ ڪنيل ماڊلز کي ترقي ڪرڻ لاءِ. مورچا سپورٽ هڪ اختيار جي طور تي پيش ڪيو ويو آهي جيڪو ڊفالٽ طور تي فعال نه ڪيو ويو آهي ۽ اهو نتيجو نه آهي ته زنگ کي شامل ڪيو پيو وڃي ڪنيل لاء گهربل تعمير انحصار جي طور تي. ڊرائيور ڊولپمينٽ لاءِ رسٽ استعمال ڪرڻ توهان کي اجازت ڏيندو ته گهٽ ۾ گهٽ ڪوشش سان محفوظ ۽ بهتر ڊرائيور ٺاهي، مسئلن کان آزاد، جهڙوڪ ميموري جي رسائي آزاد ٿيڻ کان پوءِ، نول پوائنٽر ڊيريفرنس، ۽ بفر اووررن.

ميموري-محفوظ هينڊلنگ ريفرنس چيڪنگ، اعتراض جي ملڪيت جي ٽريڪ رکڻ ۽ اعتراض جي زندگي (اسڪوپ) جي ذريعي گڏ ڪرڻ واري وقت تي زنگ ۾ مهيا ڪئي وئي آهي، انهي سان گڏ ڪوڊ جي عمل جي دوران ميموري رسائي جي صحيحيت جي تشخيص ذريعي. زنگ انٽيجر اوور فلوز جي خلاف پڻ تحفظ فراهم ڪري ٿو، استعمال ڪرڻ کان اڳ متغير قدرن جي لازمي شروعات جي ضرورت آهي، معياري لائبريري ۾ غلطين کي بهتر نموني سان سنڀاليندو آهي، ڊفالٽ طور ناقابل قابل حوالن ۽ متغيرن جي تصور کي لاڳو ڪري ٿو، منطقي غلطين کي گھٽائڻ لاءِ مضبوط جامد ٽائپنگ پيش ڪري ٿو.

В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой, второй, третьей и четвёртой редакций патчей. В новой версии:

  • В систему непрерывной интеграции на базе поддерживаемого компанией 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_*!».
  • Проведена общая чистка кода.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو