Inguqulelo entsha yeepetshi zeLinux kernel ngenkxaso yolwimi lweRust

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

Khumbula ukuba utshintsho olucetywayo lwenza kube lula ukusebenzisa iRust njengolwimi lwesibini ekuphuhliseni abaqhubi kunye neemodyuli zekernel. Inkxaso yomhlwa inikezelwa njengokhetho olungenziwanga ngokungagqibekanga kwaye alubangeli ukuba iRust ibandakanywe njengokuxhomekeka kolwakhiwo olufunekayo kwikernel. Ukusebenzisa iRust kuphuhliso lomqhubi kuya kukuvumela ukuba wenze abaqhubi abakhuselekileyo nabangcono ngomzamo omncinci, simahla kwiingxaki ezinjengofikelelo lwememori emva kokukhulula, ukuchaswa kwesalathiso esingenanto, kunye nokugqithiswa kwe-buffer.

Ukuphathwa okukhuselekileyo kwimemori kubonelelwa kwiRust ngexesha lokuqokelela ngokujonga ireferensi, ukugcina umkhondo wobunini bento kunye nobomi bento (ububanzi), kunye nokuvavanya ukuchaneka kofikelelo lwememori ngexesha lokwenziwa kwekhowudi. Umhlwa ukwabonelela ngokhuseleko ngokuchasene nokuphuphuma kwenani elipheleleyo, kufuna ukuqaliswa okunyanzelekileyo kwamaxabiso aguquguqukayo ngaphambi kokusetyenziswa, iphatha iimpazamo ngcono kwithala leencwadi elisemgangathweni, isebenzisa ingqikelelo yeembekiselo ezingenakuguquguquka kunye nezinto eziguquguqukayo ngokungagqibekanga, ibonelela ngochwethezo olomeleleyo ukuze kuncitshiswe iimpazamo ezinengqiqo.

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

  • Инструментарий обновлён до выпуска Rust 1.59.0. С новой версией Rust также синхронизирован вариант библиотеки alloc, избавленный от возможных генераций состояния «panic» при возникновении ошибок, таких как нехватка памяти. Стабилизирована возможность использования ассемблерных вставок («feature(global_asm)»).
  • Добавлена поддержка создания на языке Rust хостовых программ, используемых в процессе компиляции ядра.
  • Вместо поставки заранее созданных файлов со спецификацией целевых платформ обеспечена их динамическая генерация на основе конфигурации ядра.
  • Добавлен параметр ядра HAVE_RUST, включаемый для архитектур, на которых поддерживается Rust.
  • Предложены абстракции для использования в коде на языке Rust аппаратного генератора псевдослучайных чисел.
  • Разрешено использование кодов ошибок без префикса «Error::» (например, «return Err(EINVAL)») для приближения к обработке кодов ошибок на Си.
  • Добавлен тип «CString» для собственных Си-строк. Объединены типы Formatter и Buffer.
  • Добавлены типажи Bool и LockInfo.
  • Упрощена реализация spin-блокировок.

umthombo: opennet.ru

Yongeza izimvo