Нова верзија закрпа за Линук кернел са подршком за Руст језик

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

Подсетимо се да предложене измене омогућавају коришћење Руста као другог језика за развој драјвера и модула кернела. Подршка за Руст је представљена као опција која није подразумевано омогућена и не доводи до тога да Руст буде укључен као обавезна зависност изградње за кернел. Коришћење Руст-а за развој драјвера ће вам омогућити да креирате сигурније и боље драјвере уз минималан напор, без проблема као што су приступ меморији након ослобађања, нулте референце показивача и прекорачење бафера.

Руковање безбедно за меморију обезбеђено је у Русту у време компајлирања кроз проверу референци, праћење власништва над објектом и животног века објекта (обим), као и кроз процену исправности приступа меморији током извршавања кода. Руст такође пружа заштиту од прекорачења целог броја, захтева обавезну иницијализацију вредности променљивих пре употребе, боље обрађује грешке у стандардној библиотеци, подразумевано примењује концепт непроменљивих референци и променљивих, нуди снажно статичко куцање како би се минимизирале логичке грешке.

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

  • Инструментарий обновлён до выпуска 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-блокировок.

Извор: опеннет.ру

Додај коментар