Bol spustený jazyk programovania Rust 1.95, pôvodne založený projektom Mozilla, avšak v súčasnosti rozvíjaný pod ochranou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnú manipuláciu s pamäťou a poskytuje prostriedky na dosahovanie vysokého paralelizmu vykonávania úloh, pričom sa zaobíde bez použitia garbage collectora a runtime (runtime sa obmedzuje na základnú inicializáciu a údržbu štandardnej knižnice).
Metódy práce s pamäťou v Rust sú zamerané na vylúčenie chýb pri manipulácii s ukazovateľmi a ochranu pred problémami vyplývajúcimi z nízkoúrovňovej práce s pamäťou, ako sú prístup k pamäťovým oblastiam po ich uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie buffera a podobne. Na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí sa vyvíja balíkový manažér Cargo. Na hostenie 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:
- Bol pridaný makro „cfg_select!“, ktorý sa môže používať namiesto balíka „cfg-if“ na spracovanie viacerých podmienok kompilácie v štýle bloku „match“, bez nutnosti definovať reťazec podmienkových výrazov s konštrukciou „#[cfg]“. cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* ne-unix, 32-bit */ } } _ => { fn foo() { /* nie unix a nie 32-bit */ } } }
- Stabilizovala sa možnosť uvádzať výrazy „if let“ vo vnútri blokov „match“ na vytváranie podmienečných zrovnaní podľa vzoru. Predtým bola stabilizovaná podpora uvedenia viacerých výrazov „let“ pomocou operátora „&&“ pre bloky „if“ a „while“. match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
- Stabilizovala sa podpora inline assembleru pre architektúry PowerPC a PowerPC64.
- Do oblasti stabilných bol prenesený nový balík API, vrátane stabilizovaných metód a implementácií traitov:
- MaybeUninit: From<[MaybeUninit; N]>
- MaybeUninit: AsRef<[MaybeUninit; N]>
- MaybeUninit: AsRef<[MaybeUninit]>
- MaybeUninit: AsMut<[MaybeUninit; N]>
- MaybeUninit: AsMut<[MaybeUninit]>
- [MaybeUninit; N]: From<MaybeUninit>
- Cell: AsRef<[Cell; N]>
- Cell: AsRef<[Cell]>
- Cell: AsRef<[Cell]>
- bool: TryFrom
- AtomicPtr::update
- AtomicPtr::try_update
- AtomicBool::update
- AtomicBool::try_update
- AtomicIn::update
- AtomicIn::try_update
- AtomicUn::update
- AtomicUn::try_update
- cfg_select!
- mod core::range
- core::range::RangeInclusive
- core::range::RangeInclusiveIter
- core::hint::cold_path
- ::as_ref_unchecked
- ::as_ref_unchecked
- ::as_mut_unchecked
- Vec::push_mut
- Vec::insert_mut
- VecDeque::push_front_mut
- VecDeque::push_back_mut
- VecDeque::insert_mut
- LinkedList::push_front_mut
- LinkedList::push_back_mut
- Layout::dangling_ptr
- Layout::repeat
- Layout::repeat_packed
- Layout::extend_packed
- Príznak „const“ bol použitý v funkciách:
- fmt::from_fn
- ControlFlow::is_break
- ControlFlow::is_continue
- V stabilných verziách nástroja bola odstránená podpora prenosu špecifikácií vlastných cieľových platforiem k kompilátoru.
- Cieľové platformy powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos a aarch64-apple-visionos-sim boli prevedené na druhú úroveň podpory, ktorá predpokladá záruku zostavenia, ale bez záruk pri prechode testovacím balíkom.
Dodatočne môžeme spomenúť nedávno oznámené projekty a udalosti týkajúce sa Rust:
- Spoločnosť Canonical predstavila displejový server Mir 2.26, ktorý poskytuje súbor knižníc na vytváranie kompozitných serverov na báze protokolu Wayland a zahŕňajúci typovú funkcionalitu správcov okien a displejových serverov. Mir je zapojený do takých projektov, ako sú kompozitný správca Miracle, shell pre internetové kiosky Ubuntu Frame a používateľské prostredie Miriway.
Nové vydanie je pozoruhodné pridaním možnosti vývoja komponentov v jazyku Rust. V Rust je realizovaný alternatívny subsystém správy vstupu evdev-rs a bola zahájená práca na frontende wayland-rs pre Wayland napísanom v Rust. Z nie nesúvisiacich so Rust zmenách bolo v Mire zaznamenané podporovanie protokolov Wayland ext_image_copy_capture_v1 a input-triggers.
- Bol vydaný prvý release analyzátora prevádzky ayaFlow, napísaného v Rust a využívajúceho subsystém jadra Linux eBPF na zachytávanie sieťových paketov (IPv4/TCP/UDP) a rámcov Ethernet s minimálnym vplyvom na výkon. Podporuje hĺbkovú inšpekciu protokolov aplikačnej úrovne (L7), ako je extrakcia TLS SNI a DNS dotazov pri analýze šifrovanej prevádzky. Systém podporuje vedenie tabuľky s aktuálnym stavom spojení vo formáte DashMap, ukladanie histórie v SQLite a poskytovanie štatistiky cez REST API pre Prometheus.
- Realizovaná bola možnosť vytvárania viacosových aplikácií v jazyku Rust, ktoré využívajú funkcie std::thread a vykonávajú sa na strane GPU.
Zdroj: opennet.ru
