Rust 1.89 väljalaskmine. Umbes 8% src-pakettidest Debian Sid'is on seotud Rustiga.

Avalikustatud programmeerimiskeele Rust 1.89 versioon, mille on loonud projekt Mozilla, kuid mida praegu arendab sõltumatu mittetulundusühing Rust Foundation. Keele fookus on mälu ohutus ja see pakub tööriistu ülesannete kõrge paralleelse täitmise saavutamiseks, ilma et oleks vaja prügikorjajat ja runtime'i (runtime piirdub põhialuste initsialiseerimise ja standardraamatukogu hooldamisega).

Rustis olevad mäluhaldusmeetodid vabastavad arendajad probleemidest, mis on seotud osutitega, ning kaitsevad madala taseme mälutöötlusest tulenevate probleemide, nagu vabanenud mälu alale juurdepääs, nullosutite de-referentseerimine, mälupiiride ületamine jne. Raamatukogude levitamiseks, projekti koostamise ja sõltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.

Rust tagab turvalise mälutöötluse kompilatsiooni ajal, kontrollides viiteid, jälgides objektide omandit, arvestades objektide elutsüklit (nähtavust) ja hinnates mälule juurdepääsu õigsust koodi käitamise ajal. Rust pakub ka meetmeid enamike täisarvude ületamiste vältimiseks, nõuab muutujate väärtuste algväärtustamist enne kasutamist, käsitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tüüpimist loogiliste vigade minimeerimiseks.

Põhilised uuendused:

  • Antud on võimalus kasutada sümbolit „_” üldiste parameetrite argumentidena märgiga „const”, et tuletada nende parameetrite väärtusi ümbritseva konteksti põhjal. pub fn all_false<const LEN: usize>() -> [bool; LEN] { [false; _] }
  • Lisatud uus lint-hoiatuse „mismatched_lifetime_syntaxes” lahendamiseks, et kohtuda mitteilmselge eluea määratlemise probleemiga funktsioonide allkirjades, kasutades „eluea elimineerimise” mehhanismi (automaatne eluea tuvastamine linkides, võimaldades vältida selle käsitsi määramist). Hoiatus kontrollib, et funktsiooni sisend- ja väljundparameetrid kuuluvad ühte ja samasse tüüpide rühma. Rühmad moodustatakse, tuginedes eluea selge määramise ja kompilaatori automaatse eluea tuletamise toele (näiteks tüüpides „&’a T” ja „ContainsLifetime<‘a>” võib eluea määramine olla selge, kuid kompilaator ei pruugi automaatselt eluea tuletada, samas kui tüüpides „&T”, „&’_ T” ja „ContainsLifetime<‘_>” on lubatud nii selge määramine kui ka automaatne tuletamine).
  • Attribuudis „target_feature” x86 süsteemide jaoks on rakendatud võimalus kontrollida laiendatud käsu komplektide sha512, sm3, sm4, kl ja widekl ning ka eraldi funktsioonide avx512 toetust. #[target_feature(enable = „avx512bw”)] pub fn cool_simd_code(/* .. */) -> /* … */ { /* … */ }
  • Tagatud on doctesti (dokumentatsiooni sisse ehitatud testid) käivitamine mitte ainult praeguse sihtplatvormi jaoks, vaid ka muude platvormide jaoks, mis on määratud paketihalduri „cargo” käivitamisel („cargo test —doc —target other_target”).
  • C funktsioonide „extern „C”” koostamisel sihtplatvormile „wasm32-unknown-unknown” on rakendatud C ABI standard WebAssembly jaoks.
  • Mõningate tüübikooskõlastuse kohustuslike tingimustega on lubatud kasutada tüüpe i128 ja u128 välistes C funktsioonides (extern „C”), mille puhul on varem esitatud lint-hoiatus „improper_ctypes_definitions”.
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
    • Paljusid kompilaatorisse sisseehitatud funktsioone (Intrinsics) x86 protsessori jaoks, sealhulgas AVX512, SHA512, SM3 ja SM4 funktsioone.
    • NonZero<char>
    • 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

    Märkus 'const' rakendatud funktsioonides:

    • <[T; N]>::as_mut_slice
    • <[u8]>::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Alustati sihtplatvormi „x86_64-apple-darwin” üleviimise protsessi esimesest toetuse tasemest teisele (Apple kavatseb lõpetada x86_64 arhitekti toetamise). Esimene toetuse tase eeldab binaarsete kogudeks koostamist, detailset testimist ja kõrgeima toe garantii andmist platvormile — iga kompilaatori muudatus kontrollitakse täieliku testikomplekti läbimisega. Teine toetuse tase tähendab kokkulepet kogumise osas, kuid testikomplekti läbimisel ei anta toetust.
  • Kehtestatud on kolmas toetuse tase platvormidele „loongarch32-unknown-none” ja „loongarch32-unknown-none-softfloat”. Kolmas tase tähistab põhitoetust, kuid ilma automatiseeritud testimise, ametlike kogude avaldamise ja koodi komplekteerimise võimaluse kontrollita.

Lisaks on märkimisväärsed Rusti seotud sündmused ja projektid:

  • Avalikustatud Rusti pakettide seisundi aruanne Debianis. Märgitakse, et Debian Unstable (Sid) haru puhul umbes 8% src-pakettidest peavad olema seotud vähemalt ühe paketti „librust-*” ehitus sõltuvusteks. Debian 12 puhul oli selliseid pakette 4.5%. Samuti on tõdetud, et enam kui 3000 paketti sisaldavad Rusti keeles kirjutatud koodi, mis on eraldatud paketiks librust-..-dev, ning 150 src-paketid tarnivad kompileeritud täitmisfailid või Rusti teegid.

    Debianile huvi pakkuvatest pakettidest on mainitud sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d ja fish. Rusti valikuline toetus on rakendatud APT-s, QEMU (virtiofsd), Linuxi tuumas ja Mesas, ning oodatakse ka LibreOffice’is. Crate-pakettide muundamise jaoks src-pakettide Debianisse on rakendatud debcargo tööriistakomplekt.

  • Esitatud on projekt tmux-rs, mis arendab terminali multiplexeri tmuxi klooni (konsooliakende haldur), mis on kirjutatud Rustis C keelest.
  • Collabora ettevõtte draiveri Tyr arendaja avaldas artikli GPU level-i draiverite seadmetest ja Rusti keeles selliste draiverite arendamise põhimõtetest.
  • Esitletud on universaalne rakendus Rust keeles, mis suudab töötada nii CPU-l kui ka erinevatel GPU platvormidel: CUDA NVIDIA-le, SPIR-V Vulkan'i toetavatele GPU-dele, Metal Apple'ile, DirectX 12 Windows'ile, WebGPU brauseritele.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster