Četvrto izdanje zakrpa za Linux kernel sa podrškom za Rust jezik

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

Podsjetimo da predložene izmjene omogućavaju korištenje Rusta kao drugog jezika za razvoj drajvera i modula kernela. Podrška za Rust je predstavljena kao opcija koja nije omogućena prema zadanim postavkama i ne dovodi do uključivanja Rusta među potrebne ovisnosti o izgradnji za kernel. Korišćenje Rusta za razvoj drajvera omogućiće vam da kreirate sigurnije i bolje drajvere uz minimalan napor, bez problema kao što je pristup memorijskom području nakon što se oslobodi, dereferenciranje nul pokazivača i prekoračenje bafera.

Sigurnost memorije je obezbeđena u Rustu u vreme kompajliranja kroz proveru referenci, praćenje vlasništva nad objektom i životnog veka objekta (opsega), kao i kroz procenu ispravnosti pristupa memoriji tokom izvršavanja koda. Rust također pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli po defaultu, nudi snažno statičko kucanje kako bi se minimizirale logičke greške.

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

  • Осуществлён переход на использование в качестве эталонного компилятора стабильного выпуска 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.

izvor: opennet.ru

Dodajte komentar