Linux-ის ბირთვის პატჩების მეხუთე გამოცემა Rust ენის მხარდაჭერით

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

შეგახსენებთ, რომ შემოთავაზებული ცვლილებები შესაძლებელს ხდის Rust-ის გამოყენებას, როგორც მეორე ენას დრაივერებისა და ბირთვის მოდულების შემუშავებისთვის. Rust-ის მხარდაჭერა წარმოდგენილია როგორც ვარიანტი, რომელიც არ არის ჩართული ნაგულისხმევად და არ იწვევს Rust-ის ჩართვას, როგორც ბირთვის საჭირო build დამოკიდებულებას. Rust-ის გამოყენება დრაივერის განვითარებისთვის საშუალებას მოგცემთ შექმნათ უფრო უსაფრთხო და უკეთესი დრაივერები მინიმალური ძალისხმევით, ისეთი პრობლემებისგან, როგორიცაა მეხსიერებაზე წვდომა გათავისუფლების შემდეგ, ნულოვანი მაჩვენებლის გაუქმება და ბუფერის გადაჭარბება.

მეხსიერების უსაფრთხოება უზრუნველყოფილია Rust-ში კომპილაციის დროს, მითითების შემოწმების, ობიექტის საკუთრების და ობიექტის სიცოცხლის ხანგრძლივობის (ფარგლების) თვალყურის დევნების გზით, ასევე კოდის შესრულებისას მეხსიერების წვდომის სისწორის შეფასებით. 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

ახალი კომენტარის დამატება