Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux выпуск v5 компонентов для разработки драйверов устройств на языке Rust. Это шестая редакция патчей с учётом первого варианта, опубликованного без номера версии. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.
Wir erinnern daran, dass die vorgeschlagenen Änderungen die Möglichkeit bieten, Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen zu verwenden. Die Unterstützung von Rust wird als Option vorgestellt, die nicht standardmäßig aktiviert ist und nicht dazu führt, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört. Die Verwendung von Rust zur Treiberentwicklung ermöglicht es, mit minimalem Aufwand sichere und qualitativ hochwertige Treiber zu erstellen, die von Problemen wie dem Zugriff auf freigegebenen Speicher, Dereferenzierung von Nullzeigern und Bufferüberläufen befreit sind.
Die sichere Verwaltung von Speicher in Rust erfolgt während der Kompilierung durch Überprüfung von Referenzen, das Verfolgen des Eigentums an Objekten und das Management der Lebensdauer von Objekten (Sichtbarkeiten). Außerdem bewertet Rust die Korrektheit des Zugriffs auf den Speicher zur Laufzeit. Rust bietet auch Mechanismen zum Schutz vor Überläufen bei Ganzzahlen, verlangt die obligatorische Initialisierung von Variablen vor ihrer Verwendung, behandelt Fehler in der Standardbibliothek besser und wendet das Konzept der Unveränderlichkeit (immutable) für Referenzen und Variablen standardmäßig an. Zudem bietet es eine starke statische Typisierung zur Minimierung logischer Fehler.
В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой, второй, третьей, четвёртой и пятой редакций патчей. В новой версии:
- Инструментарий обновлён до выпуска 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-блокировок.
Quelle: opennet.ru
