Megjelent a Rust 1.89. Körülbelül 8% src-csomag a Debian Sidben Rust-ra épül

Megjelent a Rust 1.89 programozási nyelv, amelyet a Mozilla projekt alapított, de ma már egy független, nonprofit szervezet, a Rust Foundation védnöksége alatt fejlődik. A nyelv a memória biztonságos kezelésére összpontosít, és lehetőséget biztosít a feladatok magas fokú párhuzamosságának elérésére, mindezt anélkül, hogy szemétgyűjtőt vagy futási időt (runtime) igényelne, a futási idő csupán az alapvető inicializálásra és a standard könyvtár karbantartására korlátozódik.

A Rust memória kezelésének módszerei megszüntetik a fejlesztők hibáit a mutatókkal való manipulálás során, és védelmet nyújtanak az alacsony szintű memória kezelésből adódó problémákkal szemben, mint például a már felszabadított memória területére való hivatkozás, null-pointer dereferálás, pufferméret túllépés stb. A könyvtárak terjesztésére, a build biztosítására és a függőségek kezelésére a Cargo csomagkezelő fejlesztés alatt áll. A könyvtárak elhelyezésére a crates.io tároló támogatott.

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:

  • Lehetőség nyílt a „_” karakter használatára az általános paraméterek konstans jelzésű argumentumaként, lehetővé téve e paraméterek értékeinek a környezeti kontextus alapján történő meghatározását. pub fn all_false() -> [bool; LEN] { [false; _] }
  • Új lint figyelmeztetés került hozzáadásra: „mismatched_lifetime_syntaxes”, mely a funkciós szignatúrákban a nem nyilvánvaló élettartam-meghatározás problémáját hivatott kezelni az „élettartam elhagyása” mechanizmus használatakor (automatikusan határozza meg a hivatkozások élettartamát, lehetővé téve a kézi megadás elkerülését). A figyelmeztetés ellenőrzi, hogy a funkció belépő és kilépő paraméterei ugyanannak a típuscsoportnak a tagjai-e. A csoportok az élettartam expilitációjára való támogatás és a fordító általi automatikus élettartam-levezethetőség alapján képződnek (például a „&’a T” és „ContainsLifetime” típusokban explicit élettartam állhat fenn, de a fordító nem tudja automatikusan meghatározni az élettartamot; míg a „&T”, „&’_ T” és „ContainsLifetime” típusokban mindkettő megengedett, az explicit megadás és az automatikus meghatározás is).
  • Az x86 rendszerek „target_feature” attribútumán belül lehetőség nyílt a sha512, sm3, sm4, kl és widekl kiterjesztett utasításkészleteinek, valamint az avx512 egyes funkcióinak támogatottságának ellenőrzésére. #[target_feature(enable = „avx512bw”)] pub fn cool_simd_code(/* .. */) -> /* … */ { /* … */ }
  • Biztosítva lett a doctest (a dokumentációba beágyazott tesztek) futtatása nemcsak a jelenlegi célplatformon, hanem más, a „cargo” csomagkezelő indításánál megadott platformokon is („cargo test --doc --target other_target”).
  • A 'extern „C”' funkciók esetében, ha a célplatform „wasm32-unknown-unknown”, a WebAssembly-hez a standard C ABI lett megvalósítva.
  • Bizonyos kikötésekkel, amelyek a típusok kompatibilitására vonatkoznak, az i128 és u128 típusok használata megengedett a külső C-függvényekben (extern "C"), amelyeknél korábban lint-figyelmeztetést mutattak a "improper_ctypes_definitions" miatt.
  • Ú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:
    • Számos beépített függvény (Intrinsics) érhető el az x86 processzorokhoz, beleértve az AVX512, SHA512, SM3 és SM4 függvényeket.
    • NonZero
    • File::lock
    • File::lock_shared
    • File::try_lock
    • File::try_lock_shared
    • File::unlock
    • NonNull::from_ref
    • NonNull::from_mut
    • NonNull::without_provenance
    • NonNull::with_exposed_provenance
    • NonNull::expose_provenance
    • OsString::leak
    • PathBuf::leak
    • Result::flatten
    • std::os::linux::net::TcpStreamExt::quickack
    • std::os::linux::net::TcpStreamExt::set_quickack

    A «const» jelző alkalmazása a funkciókban:

    • ::as_mut_slice
    • ::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Megkezdődött a "x86_64-apple-darwin" célplatform fordításának érettségi szintjének első szintről második szintre történő áthozatala (az Apple tervezi az x86_64 architektúra támogatásának megszüntetését). Az első szint támogatja a bináris összeszereléseket, alapos tesztelést és a platform legmagasabb szintű támogatásának garantálását - minden összeállítási változtatást teljes tesztcsomag végrehajtásával ellenőriznek. A második szint támogatja az összeállítás garantálását, de nem garantálja a tesztcsomagon való átjutást.
  • Megvalósult a „loongarch32-unknown-none” és „loongarch32-unknown-none-softfloat” platformok harmadik szintű támogatása. A harmadik szint alapvető támogatást biztosít, de automatikus tesztelés, hivatalos build publikálás és a kód buildelhetőségének ellenőrzése nélkül.

További megjegyzések a Rusttal kapcsolatos eseményekről és projektekről:

  • Megjelent a Rust nyelv állapotáról szóló jelentés a Debianban. Megállapították, hogy a Debian Unstable (Sid) ágon körülbelül 8%-a a main tároló src-csomagjainak legalább egy "librust-*" csomaggal kapcsolatos buildfüggőségeket tartalmaz. A Debian 12-ben hasonló csomagok aránya 4,5% volt. Továbbá megállapítást nyert, hogy több mint 3000 csomag Rust kódot tartalmaz, amelyeket librust-..-dev csomagokba vontak be, míg 150 src-csomag Rustban lefordított futtatható fájlokat vagy könyvtárakat biztosít.

    A Debian számára érdekes csomagok között megemlítjük a sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d és fish projekteket. Az opcionális Rust támogatás megvalósult az APT, a QEMU (virtiofsd), a Linux kernel és a Mesa környezetében, valamint várakozások szerint a LibreOffice-ban is. A crate-csomagok src-csomagokká történő konvertálásához debcargo eszközöket hoztak létre.

  • Bemutatásra került a tmux-rs projekt, amely a tmux terminálmultiplexáló klónját fejleszti, amely C nyelvről Rust nyelvre lett átkonvertálva.
  • A Tyr driver developer from Collabora published an article about kernel-level drivers for GPUs and the principles of developing such drivers in Rust.
  • A universal application written in Rust was demonstrated, capable of running on both CPU and various GPU platforms: CUDA for NVIDIA, SPIR-V for Vulkan-compatible GPUs, Metal for Apple, DirectX 12 for Windows, and WebGPU for browsers.

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