Издаден е Rust 1.90. Инструментариум за създаване на Windows драйвери на Rust.

Издаден е релиз на програмния език 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, задавайки флага „-C linker-features=-lld“ в променливата на средата RUSTFLAGS или добавяйки в конфигурационния файл .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = [„-Clinker-features=-lld“]
  • В пакетния мениджър cargo в командата „publish“ е реализирана опцията „—workspace“, позволяваща автоматично публикуване на всички пакети от избраната работна среда (набор от пакети, използващи един файл Cargo.lock и обща директория за резултатите от изграждането), като се запазва реда на пакетите и се отчитат зависимостите между тях.
  • Нов набор от API е преведен в категорията стабилни, включително стабилизирани методи и реализации на типажи:
    • u{n}::checked_sub_signed
    • u{n}::overflowing_sub_signed
    • u{n}::saturating_sub_signed
    • u{n}::wrapping_sub_signed
    • impl Copy for IntErrorKind
    • impl Hash for IntErrorKind
    • impl PartialEq for CStr
    • impl PartialEq for CStr
    • impl PartialEq<Cow> for CStr
    • impl PartialEq for CString
    • impl PartialEq for CString
    • impl PartialEq<Cow> for CString
    • impl PartialEq for Cow
    • impl PartialEq for Cow
    • impl PartialEq for Cow
  • Признак «const» приложен в функциите:
    • ::reverse
    • f32::floor
    • f32::ceil
    • f32::trunc
    • f32::fract
    • f32::round
    • f32::round_ties_even
    • f64::floor
    • f64::ceil
    • f64::trunc
    • f64::fract
    • f64::round
    • f64::round_ties_even
  • За целевите платформи, базирани на библиотеката 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). Първото ниво на поддръжка предполага изграждане на бинарни пакети, провеждане на задълбочено тестване и предоставяне на най-висока гаранция за поддръжка на платформата - всяка промяна в компилатора се проверява чрез изпълнението на пълен тестов пакет. Второто ниво на поддръжка предвижда гаранция за изграждане, но без гаранции при преминаване на тестовия пакет.

Допълнително може да се отбележи развитието на компанията Microsoft на инструменти за разработка на Windows-драйвери на езика Rust. В GitHub вече е публикуван набор от crate-пакети за създаване на драйвери на базата на WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) и UMDF (User-Mode Driver Framework), както и Win32 услуги, подходящи за използване в Windows 11. Целта на проекта е да предостави на разработчиците на Rust библиотеки и функции, аналогични на тези, които се предлагат в инструментария WDK за разработчиците на драйвери на C. В текущия етап инструментарият за разработка на драйвери на Rust използва множество unsafe-викателства при взаимодействие с подсистемите на Windows, но в бъдеще се планира подготовка на безопасни абстракции за структури на ядрото и DDI (Device Driver Interface). Разработките на проекта се разпространяват под лицензиите MIT и Apache 2.0.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster