Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux выпуск v5 компонентов для разработки драйверов устройств на языке Rust. Это шестая редакция патчей с учётом первого варианта, опубликованного без номера версии. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.
Recordem que els canvis proposats permeten utilitzar Rust com a segon llenguatge per desenvolupar controladors i mòduls del nucli. El suport de Rust es presenta com una opció que no està activada per defecte i que no comporta la inclusió de Rust entre les dependències de construcció necessàries per al nucli. L'ús de Rust per desenvolupar controladors us permetrà crear controladors més segurs i millors amb el mínim esforç, lliures de problemes com ara accedir a una àrea de memòria després d'alliberar-la, desreferenciar els punters nuls i desbordar la memòria intermèdia.
La seguretat de la memòria es proporciona a Rust en temps de compilació mitjançant la comprovació de referències, el seguiment de la propietat i la vida útil de l'objecte (abast), així com mitjançant l'avaluació de la correcció de l'accés a la memòria durant l'execució del codi. Rust també proporciona protecció contra desbordaments d'enters, requereix la inicialització obligatòria dels valors de les variables abans de l'ús, gestiona millor els errors a la biblioteca estàndard, aplica el concepte de referències i variables immutables per defecte, ofereix una escriptura estàtica forta per minimitzar els errors lògics.
В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой, второй, третьей, четвёртой и пятой редакций патчей. В новой версии:
- Инструментарий обновлён до выпуска 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-блокировок.
Font: opennet.ru