[ON] Выпуск Rust 1.90. Инструментарий для создания Windows-драйверов на Rust

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6001
ОС: gnu/linux

[ON] Выпуск Rust 1.90. Инструментарий для создания Windows-драйверов на Rust

Сообщение rssbot »

Опубликован релиз языка программирования Rust 1.90, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).



Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.



Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.




Основные новшества:
  • В Linux на компьютерах с архитектурой x86_64 для динамического связывания crate-пакетов по умолчанию задействован компоновщик LLD от проекта LLVM. Применение LLD по сравнению с компоновщиком BFD привело к повышению производительности связывания больших исполняемых файлов и проектов с большим объёмом отладочной информации, а также ускорению инкрементальной пересборки. В большинстве случаев LLD обратно совместим с BFD. В случае возникновения проблем можно вернуть BFD, указав в переменной окружения RUSTFLAGS флаг "-C linker-features=-lld" или добавив в файл конфигурации .cargo/config.toml:

    Код:

    [target.x86_64-unknown-linux-gnu]
    rustflags = ["-Clinker-features=-lld"]
  • В пакетном менеджере cargo в команде "publish" реализована опция "--workspace", позволяющая автоматически опубликовать все пакеты
    из выбранного рабочего пространства (набор пакетов, использующий один файл Cargo.lock и общий каталог результатов сборки), сохраняя порядок следования пакетов и учитывая зависимости между ними.
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
  • Признак "const" применён в функциях:
  • Для целевых платформ на базе библиотеки Musl, находящихся на третьем уровне поддержки, включено по умолчанию динамическое связывание: mips64-unknown-linux-muslabi64,
    powerpc64-unknown-linux-musl,
    powerpc-unknown-linux-musl,
    powerpc-unknown-linux-muslspe,
    riscv32gc-unknown-linux-musl,
    s390x-unknown-linux-musl и
    thumbv7neon-unknown-linux-musleabihf.
  • Целевая платформа "x86_64-apple-darwin" переведена с первого уровня поддержки на второй (Apple планирует прекратить поддержку архитектуры x86_64). Первый уровень поддержки подразумевает формирование бинарных сборок, проведение досконального тестирования и предоставление наивысшей гарантии поддержки платформы - каждое изменение в компиляторе проверяется выполнением полного тестового набора. Второй уровень поддержки подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора.


Дополнительно можно отметить развитие компанией Micrоsoft инструментария для разработки Windows-драйверов на языке Rust. На GitHub уже размещён набор crate-пакетов для создания драйверов на базе WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) и UMDF (User-Mode Driver Framework), а также сервисов Win32, пригодных для использования в Windows 11. Целью проекта называется предоставление для разработчиков на языке Rust библиотек и функций, аналогичных тем, что предлагаются в инструментарии WDK для разработчиков драйверов на языке Си. На текущем этапе инструментарий разработки драйверов на Rust использует большое число unsafe-вызовов при взаимодействии с подсистемами Windows, но в дальнейшем планируется подготовить безопасные абстракции для структур ядра и DDI (Device Driver Interface). Наработки проекта распространяются под лицензиями MIT и Apache 2.0.





Источник: https://www.opennet.ru/opennews/art.shtml?num=63906
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 22.09.2025 08:06, всего редактировалось 2 раза.
Причина: Updated upstream
Спасибо сказали: