Нашри чоруми часпакҳо барои ядрои 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 ҳамчун вобастагии зарурии сохтмон барои ядро ​​дохил карда шавад. Истифодаи Rust барои таҳияи драйвер ба шумо имкон медиҳад, ки драйверҳои бехатартар ва беҳтарро бо саъю кӯшиши кам эҷод кунед, ки аз мушкилоте ба монанди дастрасии хотира пас аз озодшавӣ, истинодҳои нул нишоннамо ва изофаи буфер озод карда шаванд.

Муомилоти аз хотираи бехатар дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект ва мӯҳлати умри объект (миқёс), инчунин тавассути арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.

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

  • Осуществлён переход на использование в качестве эталонного компилятора стабильного выпуска Rust 1.58.0. Из необходимых для проекта изменений, который пока ещё не включены в основной состав инструментария Rust, отмечаются флаг «-Zsymbol-mangling-version=v0» (ожидается в Rust 1.59.0) и режим «maybe_uninit_extra» (ожидается в Rust 1.60.0).
  • Добавлены автоматические проверки наличия подходящего инструментария Rust и расширены возможности по тестированию поддержки Rust в системе.
  • Предложены новые абстракции для доступа из кода на языке Rust к таблицам идентификаторов устройств («IdArray» и «IdTable»).
  • Добавлены прослойки для обращения к функциям, связанным с таймером (clock framework).
  • Драйверы для платформ теперь определены через реализацию типажей.
  • Добавлен новый макрос для упрощения регистрации драйверов платформ, а также предложен новый шаблон типового драйвера.
  • Добавлены макросы для структур «dev_*».
  • Добавлены методы «{read,write}*_relaxed» для типа IoMem<T>.
  • Удалено свойство FileOpener для упрощения операций с файлами.
  • В число аргументов, передаваемых при регистрации драйвера, добавлен параметр «ThisModule».
  • Предложен типовой шаблон для создания модулей ядра на языке Rust.

Манбаъ: opennet.ru

Илова Эзоҳ