The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

18.09.2025 22:48

Опубликован релиз языка программирования 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.

  1. Главная ссылка к новости (https://blog.rust-lang.org/202...)
  2. OpenNews: Выпуск Rust 1.89. Около 8% src-пакетов в Debian Sid завязаны на Rust
  3. OpenNews: Фишинг-атака на разработчиков пакетов на языке Rust
  4. OpenNews: Организация Rust Foundation запустила инициативу Rust Innovation Lab
  5. OpenNews: Компания Vivo открыла код ядра BlueOS, написанного на языке Rust
  6. OpenNews: Операционная система Munal и утилита rsched на Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63906-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, аноним2 (?), 23:19, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    как его собрать с помощью gcc?
     
     
  • 2.3, Аноним (3), 23:37, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    его даже llvm не собрать вечно
     
     
  • 3.12, 12yoexpert (ok), 00:30, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    его-то собрать, но как раз вечно, потому что из-за постоянного ломания обратной совместимости приходится держать 2-3 версии этого дерьма в системе

    когда его уже выкинут из ff и ещё чего-то там зависимого

     
  • 2.23, Kerr (ok), 01:06, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    GCC точно умеет компилировать код на RUST:
    https://archlinux.org/packages/core/x86_64/gcc-rust
     

  • 1.2, Аноним (2), 23:21, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая новость, но мы на nightly.
     
  • 1.4, Аноним (4), 23:41, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > для динамического связывания crate-пакетов по умолчанию задействован компоновщик LLD от проекта LLVM.

    Этот компоновщик написан на C++, не безопасно же.

     
     
  • 2.6, Аноним (6), 23:50, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда ты уже поймешь что никакой безопасности не существует. А раст это маркетинговый продукт.
     
     
  • 3.11, Аноним (4), 00:27, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D1%80
     
     
  • 4.14, 12yoexpert (ok), 00:37, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    вроде веб-синьор, а ссылку нормально вставить не может
     
     
  • 5.15, Аноним (6), 00:42, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Какой он сеньор? Он твой одноклассник.
     
     
  • 6.18, 12yoexpert (ok), 00:46, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    я так и написал
     

  • 1.5, Аноним (6), 23:49, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Столько лет накручивают версию и все для того чтобы на языке ничего путного не написать.
     
  • 1.7, Аноним (7), 23:58, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лично мне не нравится когда средство разработки предоставляются как услуга (Compiler as a Service). Мне, когда приобретёшь продукт - то он твой полностью. Представьте что вы купили холодильник, который через интернет контролируется производителем. Вы никогда не будете уверены будет ли работать этот холодильник завтра.

    А у этого Rust'а стандартный фреймворк находится на централизированном (единственном) хранилище. Конечно, можно сделать частичную локальную копию этого хранилища, но, извините меня, откуда в него вы будете скачиваются крейты? Из центрального, конечно. Который может быть заблокирован.
    То же и централизированное хранение документации на крейты (docs.rs)

     
     
  • 2.8, Витюшка (?), 00:02, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А репозиторий gcc заблокирован быть не может?
     
     
  • 3.13, 12yoexpert (ok), 00:34, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    всё собранное gcc лежит в пакетах дистров или там же в виде исходников, а вот в случае блокировки магазина библиотек раста в каком-нибудь сбербанкостане ты будешь лососиpoвaть тyнца
     
     
  • 4.17, Аноним (6), 00:43, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какая проблема забанить пакеты дистра?
     
     
  • 5.19, 12yoexpert (ok), 00:47, 19/09/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.16, morphe (?), 00:43, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А у этого Rust'а стандартный фреймворк находится на централизированном (единственном) хранилище

    Что есть стандартный фреймворк? Репозиторий cargo не используется пока ты его не используешь, оттуда ничего по дефолту не качает.

     
  • 2.20, Аноним (20), 00:53, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Такое нынче модно - жизнь по подписке и вендорлок - массы такое схавают и будут просить еще. И корпорации и всякие фонды только рады.
     

  • 1.9, 12yoexpert (ok), 00:25, 19/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    всего три раза слова "безопасно" встречается, стареют
     
  • 1.10, 12yoexpert (ok), 00:26, 19/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > rustflags = ["-Clinker-features=-lld"]

    господи, какой же треш. вот просто каждый символ здесь - эталон вырвиглазного бардака

     
     
  • 2.21, Аноним (21), 00:53, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так специально что бы не пользовались этим....
     
  • 2.22, morphe (?), 00:53, 19/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ты до Rust части не дошёл, это toml обычный ещё...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру