Izdaja Rust 1.89. Približno 8% src-paketov v Debian Sid temelji na Rust

Objavljen je izdanak programskog jezika Rust 1.89, koji je izvorno razvijen od strane Mozilla projekta, a sada ga razvija neprofitna organizacija Rust Foundation. Jezik se fokusira na sigurnu upotrebu memorije i pruža sredstva za postizanje visokog paralelizma u izvršavanju zadataka, pri čemu se oslanja na osnovnu inicijalizaciju i podršku standardnoj biblioteci bez upotrebe sakupljača smeća i runtime-a.

Metode upravljanja memorijom u Rust-u oslobađaju developere od grešaka pri manipulaciji pokazivačima i štite od problema koji nastaju zbog niskonivojskog rada s memorijom, kao što su pristupanje memorijskim područjima nakon njihova oslobađanja, dereferenciranje null pokazivača, izlazak izvan granica bafera, itd. Za distribuciju biblioteka, omogućavanje gradnje i upravljanje ovisnostima razvija se paket menadžer Cargo. Za hostovanje biblioteka podržava se repozitorij crates.io.

Sigurno upravljanje memorijom u Rust-u osigurano je tokom kompajliranja pomoću provjere referenci, praćenja vlasništva nad objektima, uzimanja u obzir vremena života objekata (vidljivost) i procjene ispravnosti pristupa memoriji tokom izvršavanja koda. Rust takođe pruža sredstva za zaštitu od prelivanja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije korišćenja, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabli kao podrazumijevano, te nudi jaku statičku tipizaciju za minimiziranje logičkih grešaka.

Glavne novosti:

  • Omogućeno je korišćenje simbola „_“ kao argumenta generičkih parametara sa oznakom „const“ za izvod vrednosti ovih parametara na osnovu okruženja. pub fn all_false() -> [bool; LEN] { [false; _] }
  • Dodato je novo lint upozorenje „mismatched_lifetime_syntaxes“ radi rešavanja problema nejasnog određivanja vremena trajanja u potpisima funkcija prilikom korišćenja mehanizma „lifetime elision“ (automatski određuje vreme trajanja referenci, omogućavajući izostavljanje ručnog navođenja). Upozorenje proverava da li su ulazni i izlazni parametri funkcije pripadaju istoj grupi tipova. Grupe su formirane na osnovu podrške za jasno navođenje vremena trajanja i mogućnosti automatskog izračunavanja vremena trajanja od strane prevodioca (na primer, u tipovima „&’a T“ i „ContainsLifetime“ može se eksplicitno prisustvovati vreme trajanja, ali prevodilac ne može automatski odrediti vreme trajanja, dok u tipovima „&T“, „&’_ T“ i „ContainsLifetime“ je dozvoljeno kako jasno navođenje, tako i automatsko određivanje).
  • U atributu „target_feature“ za x86 sisteme implementirana je mogućnost provere podrške za proširene setove instrukcija sha512, sm3, sm4, kl i widekl, kao i pojedinačne funkcije avx512. #[target_feature(enable = „avx512bw“)] pub fn cool_simd_code(/* .. */) -> /* … */ { /* … */ }
  • Omogućen je pokretanje doctest-a (testovi ugrađeni u dokumentaciju) ne samo za trenutnu ciljanju platformu, već i za druge platforme navedene prilikom pokretanja menadžera paketa „cargo“ („cargo test --doc --target other_target“).
  • Za funkcije ‘extern „C”‘ prilikom kompilacije za ciljanju platformu „wasm32-unknown-unknown“ implementiran je standardni C ABI za WebAssembly.
  • Z nekatere omejitve, ki se nanašajo na združljivost tipov, je dovoljena uporaba tipov i128 in u128 v zunanjih C funkcijah (extern "C"), za katere je bilo prej prikazano lint opozorilo „improper_ctypes_definitions“.
  • У розряд стабільних переведено нову порцію API, зокрема стабілізовані методи та реалізації типажів:
    • Številne vgrajene funkcije (Intrinsics) za procesorje x86, vključno z funkcijami za AVX512, SHA512, SM3 in SM4.
    • 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

    Priznak „const“ primenjen u funkcijama:

    • ::as_mut_slice
    • ::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Začel se je postopek prenosa ciljnega sistema „x86_64-apple-darwin“ z prve na drugo raven podpore (Apple načrtuje ukinitev podpore za arhitekturo x86_64). Prva raven podpore pomeni oblikovanje binarnih zbiranj, izvajanje temeljitega testiranja in zagotavljanje najvišje garancije podpore platformi — vsakokratna sprememba v prevajalniku se preveri z izvajanjem popolnega nabora testov. Druga raven podpore pomeni garancijo gradnje, a brez garancij med prehodom testnega nabora.
  • Uvedena je bila tretja raven podpore za platformi „loongarch32-unknown-none“ in „loongarch32-unknown-none-softfloat“. Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja, objave uradnih zbiranj in preverjanja možnosti gradnje kode.

Dodati je mogoče povezane dogodke in projekte, vezane na Rust:

  • Objavljeno je poročilo o stanju paketov v jeziku Rust v Debianu. Opaženo je, da je v veji Debian Unstable (Sid) približno 8 % src-paketov v glavnem repozitoriju povezano z gradbenimi odvisnostmi od vsaj enega paketa „librust-*“. V Debian 12 je bilo takšnih paketov 4,5 %. Prav tako je bilo opaženo, da več kot 3000 paketov vključuje kodo v jeziku Rust, ki je bila izločena v pakete librust-..-dev, 150 src-paketov pa ponuja natisnjene izvršne datoteke ali knjižnice Rust.

    Med paketi, zanimivimi za Debian, so omenjeni sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d in fish. Dodatna podpora za Rust je bila uvedena v APT, QEMU (virtiofsd), jedru Linux in Mesu, pričakuje se tudi v LibreOffice. Orodje debcargo je bilo uvedeno za pretvorbo crate-paketov v src-pakete Debian.

  • Predstavljen je projekt tmux-rs, ki razvija klon multiplexerja terminala tmux (upravljalnik oken za konzolo), predelanega iz C v Rust.
  • Razvijalec gonilnika Tyr iz podjetja Collabora je objavil članek o napravi, ki deluje na ravni jedra gonilnikov za GPU in načelih izdelave takšnih gonilnikov v jeziku Rust.
  • Demonstrirana je bila univerzalna aplikacija v jeziku Rust, ki lahko deluje tako na CPU kot na različnih platformah GPU: CUDA za NVIDIA, SPIR-V za GPU s podporo Vulkan, Metal za Apple, DirectX 12 za Windows, WebGPU za brskalnike.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster