Rust 1.95 kiadás. Rust a Mir képernyőszerverhez. AyaFlow forgalomelemző Rust alatt.

Megjelent a Mozilla projekt által indított, de jelenleg a Rust Foundation független nonprofit szervezet által fejlesztett Rust programozási nyelv 1.95-ös verziója. A nyelv a memória biztonságos kezelésére összpontosít, lehetővé téve a feladatok magas párhuzamossággal való végrehajtását, anélkül, hogy szeméttárolóra vagy futtatási környezetre lenne szükség (a futtatási környezet alapvető inicializálásra és a standard könyvtár kísérésére korlátozódik).

A Rust memória kezelésének módszerei arra irányulnak, hogy kiküszöböljék a pointerekkel végzett manipuláció során fellépő hibákat, és megvédjék a memória alacsony szintű használatából adódó problémáktól, mint például a már felszabadított memória területekhez való hozzáférés, a null pointerek dereferálása, a buffer túlfolyás és hasonlók. A könyvtárak terjesztésére, a fordítás biztosítására és a projektek függőségeinek kezelésére a Cargo csomagkezelő fejlődik.

A memória biztonságos kezelése a Rustban a fordítási időben történik, a hivatkozások ellenőrzésén, az objektumok tulajdonjogának nyomon követésén, az objektumok élettartamának (láthatóságának) figyelembevételén és a memória hozzáférésének helyességének értékelésén keresztül a kód futtatásakor. A Rust emellett eszközöket biztosít az egész számok túllépésének elleni védelemhez, kötelezővé teszi a változók értékeinek inicializálását használat előtt, jobban kezeli a hibákat a standard könyvtárban, alkalmazza a változatlan (immutable) hivatkozások és változók fogalmát alapértelmezés szerint, és erős statikus típussal minimalizálja a logikai hibákat.

Főbb újítások:

  • Hozzáadva a «cfg_select!» makró, amely a «cfg-if» csomag helyett alkalmazható a fordítási feltételek blokkszerű kezelésére, anélkül, hogy a «#[cfg]» konstrukcióval láncolni kellene a feltételes kifejezéseket. cfg_select! { unix => { fn foo() { /* unix * } } target_pointer_width = «32» => { fn foo() { 0A /* nem-unix, 32-bit * } } _ => { fn foo() { 0A /* nem unix és nem 32-bit * } } }
  • Stabilizálták az «if let» kifejezések használatát a «match» blokkokon belül, lehetővé téve a feltételek szerinti mintaillesztéseket. Korábban a több «let» kifejezés megadásának támogatása az «if» és «while» blokkokban az «&&» operátorral stabilizálták. match value { Some(x) ha let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }
  • Stabilizálták az inline assembler támogatását a PowerPC és PowerPC64 architektúrákhoz.
  • Új API-k kerültak a stabil kiadások közé, beleértve a metódusok és típusimplementációk stabilizálását:
    • 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
  • A «const» jelző alkalmazása a funkciókban:
    • fmt::from_fn
    • ControlFlow::is_break
    • ControlFlow::is_continue
  • A stabil verziókban megszüntették a saját célplatformspecifikációk átadásának támogatását a fordítónak.
  • A powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos és aarch64-apple-visionos-sim célplatformok a második támogatási szintre kerültek, ami a fordítási garanciát jelenti, de a tesztelési esetek teljesítésekor nincs garancia.

Érdemes megemlíteni a Rust-tal kapcsolatos, nemrégiben bejelentett projekteket és eseményeket:

  • A Canonical bemutatta a Mir 2.26 display szervert, amely egy könyvtárgyűjteményt nyújt összetett rendszerek létrehozásához szerverek a Wayland protokoll alapján, és magában foglalja az ablakkezelők és display szerverek tipikus funkcióit. A Mir olyan projektekben van használatban, mint a Miracle összetevő menedzser, az Ubuntu Frame internetes kioszk shell és a Miriway felhasználói környezet.

    Az új kiadás figyelemre méltó a Rust nyelven történő komponensek fejlesztésének lehetőségével. A Rust-on megvalósított evdev-rs alternatív beviteli kezelő rendszer és elindult a Wayland-hoz készült Rust alapú front-end, a wayland-rs fejlesztése. A Rust-tól független változtatások között a Mir platform támogatja a Wayland protokollokat, mint az ext_image_copy_capture_v1 és az input-triggers.

  • Megjelent az első forgalomelemző, az ayaFlow, amely Rust nyelven készült és a Linux kernel eBPF alrendszerét használja a hálózati csomagok (IPv4/TCP/UDP) és Ethernet keretek elfogására, minimális teljesítményhatással. Támogatja a mély protokollelemzést (L7), például a TLS SNI és DNS lekérdezések kinyerését titkosított forgalom elemzésekor. A rendszer képes követni a kapcsolatok aktuális állapotát DashMap formátumban, tárolni a történetet SQLite-ban és statisztikákat szolgáltatni REST API-n keresztül a Prometheus számára.
  • Lehetőség nyílt több szálon futó Rust alapú alkalmazások készítésére, amelyek használják a std::thread funkciókat és a GPU oldalán futnak.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster