Vydanie Rust 1.90. Nástroje na vytváranie ovládačov pre Windows v Jazyku Rust

Bol zverejnený release programovacieho jazyka Rust 1.90, ktorý bol vyvinutý projektom Mozilla, ale aktuálne je rozvíjaný pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk je zameraný na bezpečnú prácu s pamäťou a poskytuje prostriedky na dosiahnutie vysokej úrovne paralelizácie spracovania úloh, bez využitia garbage collectora a runtime (runtime sa obmedzuje na základnú inicializáciu a podporu štandardnej knižnice).

Metódy práce s pamäťou v Rust zbavujú vývojára chýb pri manipulácii s ukazovateľmi a chránia pred problémami, ktoré vznikajú z nízkoúrovňovej práce s pamäťou, ako je prístup do oblasti pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov, prekročenie hraníc bufra atď. Na distribúciu knižníc, zabezpečenie zostavy a správu závislostí sa vyvíja balíčkový manažér Cargo. Pre umiestnenie knižníc sa podporuje repozitár crates.io.

Bezpečné zaobchádzanie s pamäťou je v Rust zabezpečené už pri kompilácii prostredníctvom kontroly odkazov, sledovania vlastníctva objektov, zohľadňovania životnosti objektov (rozsah viditeľnosti) a posudzovania správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred celočíselnými pretečeniami, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolené a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

Hlavné novinky:

  • V Linuxe na počítačoch s architektúrou x86_64 sa pre dynamické prepojenie crate-balíkov predvolene používa linker LLD z projektu LLVM. Používanie LLD v porovnaní s linkerom BFD viedlo k zvýšeniu výkonnosti prepojenia veľkých spustiteľných súborov a projektov s veľkým objemom ladenia, ako aj k urýchleniu inkrementálnej recompilácie. V drvivej väčšine prípadov je LLD späť kompatibilný s BFD. V prípade problémov je možné sa vrátiť k BFD, ak v premenných prostredia RUSTFLAGS nastavíte príznak „-C linker-features=-lld“ alebo pridáte do konfiguračného súboru .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = [„-Clinker-features=-lld“]
  • V balíkovom manažéri cargo bola v príkaze „publish“ implementovaná možnosť „—workspace“, ktorá umožňuje automaticky publikovať všetky balíky z vybraného pracovného priestoru (súbor balíkov, ktorý používa jeden súbor Cargo.lock a spoločný adresár výsledkov zostavenia), pričom sa zachováva poradie balíkov a zohľadňujú sa medzi nimi závislosti.
  • Do oblasti stabilných bol prenesený nový balík API, vrátane stabilizovaných metód a implementácií traitov:
    • 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
  • Príznak „const“ bol použitý v funkciách:
    • ::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
  • Pre cieľové platformy založené na knižnici Musl, ktoré sú vo treťom stupni podpory, je predvolene zapnuté dynamické prepojenie: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl a thumbv7neon-unknown-linux-musleabihf.
  • Cieľová platforma „x86_64-apple-darwin“ bola presunutá z prvého úrovne podpory na druhý (Apple plánuje ukončiť podporu architektúry x86_64). Prvý úroveň podpory zahŕňa tvorbu binárnych zostáv, dôkladné testovanie a poskytovanie najvyššej záruky podpory platformy — každá zmena v kompilátore je overená vykonaním celého testového súboru. Druhý úroveň podpory zahŕňa záruku zostavy, ale bez záruk pri prechode testovým súborom.

Dodatočne možno spomenúť rozvoj spoločnosti Microsoft, ktorá vytvára nástroje na vývoj Windows ovládačov v jazyku Rust. Na GitHub už bol zverejnený súbor crate balíkov na vytváranie ovládačov na báze WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) a UMDF (User-Mode Driver Framework), ako aj služieb Win32, vhodných na použitie vo Windows 11. Cieľom projektu je poskytnúť vývojárom v jazyku Rust knižnice a funkcie, ktoré sú porovnateľné so zručnosťami, ktoré sú ponúkané v nástrojoch WDK pre vývojárov ovládačov v jazyku C. V súčasnej fáze nástroje na vývoj ovládačov v Ruste používajú mnoho unsafe volaní pri interakcii so subsystémami Windows, ale v budúcnosti sa plánuje vypracovanie bezpečných abstrakcií pre štruktúry jadra a DDI (Device Driver Interface). Vývoj projektu je dostupný pod licenciami MIT a Apache 2.0.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster