Byl vydán nový jazyk programování Rust 1.90, který byl původně vyvinut projektem Mozilla, ale nyní je rozvíjen pod záštitou nezávislé neziskové organizace Rust Foundation. Jazyk se zaměřuje na bezpečnou práci s pamětí a poskytuje prostředky pro dosažení vysokého paralelismu při vykonávání úloh, přičemž se obejde bez použití garbage collectoru a runtime (runtime se omezuje na základní inicializaci a údržbu standardní knihovny).
Metody práce s pamětí v Rustu zbavují vývojáře chyb při manipulaci s ukazateli a chrání před problémy, které vznikají z nízkoúrovňové manipulace s pamětí, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení bufferu atd. Pro distribuci knihoven, zajištění sestavení a správu závislostí se vyvíjí balíčkový manažer Cargo. Pro hostování knihoven je k dispozici repozitář crates.io.
Bezpečné manipulace s pamětí jsou v Rustu zajištěny během kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů, zohlednění doby života objektů (viditelnosti) a hodnocení správnosti přístupu k paměti při vykonávání kódu. Rust také poskytuje prostředky pro 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ě, aplikuje koncept neměnnosti (immutable) referencí a proměnných ve výchozím nastavení a nabízí silnou statickou typizaci pro minimalizaci logických chyb.
Hlavní novinky:
- V Linuxu na počítačích s architekturou x86_64 je pro dynamické spojování crate balíčků ve výchozím nastavení použit linker LLD od projektu LLVM. Použití LLD ve srovnání s linkerem BFD vedlo k zvýšení výkonu spojování velkých spustitelných souborů a projektů s vysokým objemem ladicích informací, stejně jako k urychlení inkrementálního znovu sestavení. Většinou je LLD zpětně kompatibilní s BFD. V případě problémů lze přepnout na BFD nastavením proměnné prostředí RUSTFLAGS s příznakem „-C linker-features=-lld“ nebo přidáním do konfiguračního souboru .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
- V balíčkovém správci cargo je v příkazu „publish“ implementována volba „—workspace“, která umožňuje automaticky publikovat všechny balíčky z vybraného pracovního prostoru (soubor balíčků, který používá jeden soubor Cargo.lock a společný adresář pro výstupy), přičemž se zachovává pořadí balíčků a zohledňují se mezi nimi závislosti.
- Nová sada API byla převedena do stabilního stavu, včetně stabilizovaných metod a implementací typů:
- 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
- Příznak „const“ byl použit ve funkcí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
- Pro cílové platformy založené na knihovně Musl, které jsou na třetí úrovni podpory, je ve výchozím nastavení zahrnuto dynamické spojování: 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.
- Cílová platforma „x86_64-apple-darwin“ byla převedena z prvního stupně podpory na druhý (Apple plánuje ukončit podporu architektury x86_64). První úroveň podpory zahrnuje vytváření binárních sestavení, důkladné testování a zajištění nejvyšší záruky podpory platformy — každá změna v kompilátoru je kontrolována pomocí provádění kompletního testovacího balíčku. Druhá úroveň podpory zahrnuje záruku sestavení, ale žádné záruky při procházení testovacího balíčku.
Dále lze zmínit rozvoj nástrojů Microsoftu pro vývoj Windows ovladačů v jazyce Rust. Na GitHubu již byl zveřejněn soubor crate balíčků pro vytváření ovladačů založených na WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) a UMDF (User-Mode Driver Framework), jakož i služeb Win32 vhodných pro použití ve Windows 11. Cílem projektu je poskytnout vývojářům v jazyce Rust knihovny a funkce, které odpovídají těm, jež jsou nabízeny v nástrojích WDK pro vývojáře ovladačů v jazyce C. V současné fázi nástroje pro vývoj ovladačů v Rustu používají velké množství unsafe volání při komunikaci se subsystémy Windows, ale do budoucna se plánuje připravit bezpečné abstrakce pro struktury jádra a DDI (Device Driver Interface). Výstupy projektu jsou šířeny pod licencemi MIT a Apache 2.0.
Zdroj: opennet.ru
