Rust 1.95 vĂ€ljaanne. Rusti lisamine Mir kuvaseervile. Trahvi analĂŒsaator ayaFlow Rustis

Avaldati Rust 1.95 programmeerimiskeel, mille arendamisega tegeleb praegu iseseisev mittetulundusĂŒhing Rust Foundation, kuigi see pĂ”hines algselt Mozilla projektidel. Keel keskendub mĂ€lu ohutusele ja pakub vahendeid ĂŒlesannete kĂ”rge paralleelsuse saavutamiseks, samal ajal ilma prĂŒgifunktsiooni ja runtime'ita (runtime piirdub pĂ”hikonfiguratsiooni ja standardraamatukogu hooldamisega).

Rust'i mĂ€lu töötlemise meetodid on suunatud pointerite manipuleerimise vigade vĂ€ltimisele ja probleemide kaitsmisele, mis tulenevad madala taseme mĂ€lu töötlemisest, nagu juurdepÀÀs vabastatud mĂ€lupiirkondadele, nullpointerite de-referentseerimine, mĂ€lupuhvri ĂŒletamine jne. Raamatukogude levitamiseks, ehituste tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude majutamiseks toetatakse repotites crates.io.

MĂ€luhĂŒgieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise, objektide eluaja (vaateala) arvestamise ja mĂ€lule juurdepÀÀsu korrektuse hindamise kaudu koodi tĂ€itmise ajal. Rust pakub ka vahendeid tĂ€isarvude ĂŒlevoolude vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste kohustuslikku initsialiseerimist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mĂ”istet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade vĂ€hendamiseks.

Peamised uuendused:

  • Lisatud makro „cfg_select!“, mida saab kasutada „cfg-if“ paketi asemel mitme kompileerimistingimuse töötlemiseks, match-bloki stiilis, ilma „#[cfg]“ konstruktsiooni tingimuslause ahelat mÀÀratlemata. cfg_select! { unix => { fn foo() { unix *0 } } target_pointer_width = «32» => { fn foo() { mitte-unix, 32-bit *0 } } _ => { fn foo() { mitte unix ja mitte 32-bit *0 } } }
  • Tugevdatud on „if let“ vĂ€ljendite mÀÀramise vĂ”imalus match-blokkides, et luua tingimuslikke mustrimeetodeid. Eelnevalt oli tugevdatud mitmete „let“ vĂ€ljendite mÀÀramine „&&“ operaatoriga if ja while blokkides. match value { Some(x) if let Ok(y) = compute(x) => { println!(„{}, {}“, x, y); } _ => {} }
  • Inline-assembleri tugi on stabiilne PowerPC ja PowerPC64 arhitektuuri jaoks.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • MaybeUninit<[T; N]>: From<[MaybeUninit<T>; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>; N]>
    • MaybeUninit<[T; N]>: AsRef<[MaybeUninit<T>]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>; N]>
    • MaybeUninit<[T; N]>: AsMut<[MaybeUninit<T>]>
    • [MaybeUninit<T>; N]: From<MaybeUninit<[T; N]>
    • Cell<[T; N]>: AsRef<[Cell<T>; N]>
    • Cell<[T; N]>: AsRef<[Cell<T>]>
    • Cell<[T]>: AsRef<[Cell<T>]>
    • bool: TryFrom<{integer}>
    • 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
    • <*const T>::as_ref_unchecked
    • <*mut T>::as_ref_unchecked
    • <*mut T>::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
  • MĂ€rgis „const“ on rakendatud funktsioonides:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • Stabiilsetes versioonides ei ole enam toetatud spetsifikaatide edastamine kompilatsioonile enda sihtplatvormide kohta.
  • Sihtplatvormid powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos ja aarch64-apple-visionos-sim on muutunud teise toetuse tasemele, mis hĂ”lmab kogumise garantiid, kuid puuduvad garantii testkomplekti lĂ€bimise osas.

Lisaks vĂ”ib mainida hiljuti kuulutatud projekte ja sĂŒndmusi, mis on seotud Rustiga:

  • EttevĂ”te Canonical tutvustas ekraaniservert Mir 2.26, mis pakub teeki komposiitide loomiseks serverid Waylandi protokolli pĂ”hjal ja hĂ”lmab standardset funktsionaalsust aknahaldurite ja ekraaniserverite jaoks. Mir on kasutusel sellistes projektides nagu komposiitide haldur Miracle, Ubuntu Frame internetikioskide keskkond ja kasutajaliidest Miriway.

    Uus vĂ€ljaanne on tĂ€helepanuvÀÀrne, kuna see lisab vĂ”imaluse arendada komponente Rust keeles. Rust keeles on teostatud alternatiivne sisendihalduse alamsĂŒsteem evdev-rs ja on alustatud tööd Rust keeles kirjutatud frontendi wayland-rs kallal Waylandi jaoks. Rustiga mitteseotud muudatused Miris hĂ”lmavad Waylandi protokollide ext_image_copy_capture_v1 ja input-triggers toetust.

  • Avalikustatud on esimesed ayaflow liikluse analĂŒsaator, mis on kirjutatud Rust keeles ja kasutab Linuxi eBPF alamsĂŒsteemi vĂ”rgupakettide (IPv4/TCP/UDP) ja Etherneti kaadrite pealtkuulamiseks minimaalsete mĂ”judega jĂ”udlusele. Toetatakse rakenduse taseme protokollide sĂŒgavat inspektset (L7), nĂ€iteks TLS SNI ja DNS-pĂ€ringute vĂ€ljavĂ”tte tegemist krĂŒpteeritud liikluse analĂŒĂŒsimisel. SĂŒsteem toetab ka ĂŒhenduste praeguse oleku tabeli pidamist DashMap formaadis, ajaloo salvestamist SQLite's ja statistika edastamist REST API kaudu Prometheusele.
  • Rakendatud on tugi mitme lĂ”imega rakenduste loomiseks Rust keeles, mis kasutavad funktsioone std::thread ja mille töö toimub GPU kĂŒljel.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster