Verze Rust 1.90. Sada nástrojů pro tvorbu Windows-ovladače pro Rust

Programovací jazyk Rust 1.90, založený projektem Mozilla, ale nyní vyvíjený pod záštitou nezávislé neziskové organizace Rust Foundation, byl vydán. Jazyk se zaměřuje na bezpečnost paměti a poskytuje nástroje pro dosažení vysokého paralelismu provádění úloh, a to bez použití garbage collectoru a runtime prostředí (runtime prostředí je redukováno na základní inicializaci a údržbu standardní knihovny).

Metody zpracování paměti Rust šetří vývojáře před chybami při manipulaci s ukazateli a chrání před problémy, které vznikají v důsledku nízkoúrovňového zpracování paměti, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení vyrovnávací paměti atd. Pro distribuci knihoven, poskytování sestavení a správu závislostí projekt vyvíjí správce balíčků Cargo. Úložiště crates.io je podporováno pro hostování knihoven.

Bezpečnost paměti je v Rustu zajištěna v době kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů, sledování životnosti objektů (rozsahů) a hodnocení správnosti přístupu do paměti během provádění kódu. Rust také poskytuje ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, standardně aplikuje koncept neměnných referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb.

Hlavní inovace:

  • В Linux Na počítačích x86_64 se pro dynamické linkování balíčků crate standardně používá linker LLD z projektu LLVM. Ve srovnání s linkerem BFD vedlo použití LLD ke zlepšení výkonu linkování u velkých spustitelných souborů a projektů s velkým množstvím ladicích informací a také k rychlejšímu inkrementálnímu přestavování. Ve většině případů je LLD zpětně kompatibilní s BFD. Pokud se vyskytnou problémy, můžete se vrátit k BFD zadáním příznaku "-C linker-features=-lld" v proměnné prostředí RUSTFLAGS nebo přidáním následujícího kódu do konfiguračního souboru .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
  • Správce balíčků cargo má v příkazu „publish“ novou možnost „--workspace“, která umožňuje automaticky publikovat všechny balíčky z vybraného pracovního prostoru (sada balíčků, které sdílejí jeden soubor Cargo.lock a společný výstupní adresář sestavení), přičemž se zachovává pořadí balíčků a zohledňují se závislosti mezi nimi.
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • u{n}::checked_sub_signed
    • u{n}::overflowing_sub_signed
    • u{n}::saturating_sub_signed
    • u{n}::wrapping_sub_signed
    • impl Kopie pro IntErrorKind
    • impl Hash pro IntErrorKind
    • implementace PartialEq<&CStr> pro CStr
    • imp Parciální rovnice pro CStr
    • imp Parciální rovnice > pro CStr
    • implement PartialEq<&CStr> pro CString
    • imp Parciální rovnice pro CString
    • imp Parciální rovnice > pro CString
    • implementace PartialEq<&CStr> pro krávu
    • imp Parciální rovnice pro krávu
    • imp Parciální rovnice pro krávu
  • Znak „const“ se používá ve funkcích:
    • <[T]>::reverzní
    • f32::podlaha
    • f32::strop
    • f32::trunc
    • f32::frakt
    • f32::kulatý
    • f32::round_ties_even
    • f64::podlaha
    • f64::strop
    • f64::trunc
    • f64::frakt
    • f64::kulatý
    • f64::round_ties_even
  • Dynamické linkování je ve výchozím nastavení povoleno pro cíle založené na Musl na úrovni podpory 64: mips64-unknown-linux-muslabi64, powerpc32-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv390gc-unknown-linux-musl, s7x-unknown-linux-musl a thumbvXNUMXneon-unknown-linux-musleabihf.
  • Cílová platforma „x86_64-apple-darwin“ byla upgradována z úrovně podpory 86 na úroveň 64 (Apple plánuje ukončit podporu architektury xXNUMX_XNUMX). Podpora úrovně XNUMX zahrnuje binární sestavení, důkladné testování a nejvyšší záruku podpory platformy – každá změna kompilátoru je ověřena spuštěním celé testovací sady. Podpora úrovně XNUMX zaručuje kvalitu sestavení, ale nezaručuje úspěšné absolvování testovací sady.

Dále stojí za zmínku vývoj vývojových nástrojů společností Microsoft Windows-drivers v jazyce Rust. Sada balíčků pro vytváření ovladačů založených na WDM již byla zveřejněna na GitHubu (Windows Sada ovladačů), KMDF (Kernel-Mode Driver Framework) a UMDF (User-Mode Driver Framework), stejně jako služby Win32 vhodné pro použití v Windows 11. Cílem projektu je poskytnout vývojářům v Rustu knihovny a funkce podobné těm, které nabízí sada nástrojů WDK pro vývojáře ovladačů v jazyce C. V současné době sada nástrojů pro vývoj ovladačů v Rustu používá při interakci se subsystémy velké množství nebezpečných volání. Windows, ale budoucí plány zahrnují vývoj bezpečných abstrakcí pro struktury jádra a rozhraní ovladačů zařízení (DDI). Práce projektu je distribuována pod licencemi MIT a Apache 2.0.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster