Izdaja programskega jezika Rust 1.76

Objavljena je bila izdaja splošnega programskega jezika Rust 1.76, ki ga je ustanovil projekt Mozilla, zdaj pa se razvija pod okriljem neodvisne neprofitne organizacije Rust Foundation. Jezik se osredotoča na varnost pomnilnika in zagotavlja sredstva za doseganje visoke paralelnosti opravil, hkrati pa se izogiba uporabi zbiralnika smeti in izvajalnega okolja (izvajalni čas je zmanjšan na osnovno inicializacijo in vzdrževanje standardne knjižnice).

Rustove metode ravnanja s pomnilnikom rešijo razvijalca pred napakami pri ravnanju s kazalci in ščitijo pred težavami, ki nastanejo zaradi ravnanja s pomnilnikom na nizki ravni, kot je dostop do območja pomnilnika, potem ko je bilo osvobojeno, dereferenciranje ničelnih kazalcev, prekoračitev medpomnilnika itd. Za distribucijo knjižnic, zagotavljanje gradenj in upravljanje odvisnosti projekt razvija upravitelja paketov Cargo. Repozitorij crates.io je podprt za gostovanje knjižnic.

Varnost pomnilnika je v Rustu zagotovljena v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta, spremljanjem življenjskih dob objektov (obseg) in ocenjevanjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Glavne novosti:

  • V dokumentacijo je bil dodan ločen razdelek, ki opisuje združljivost različnih vrst argumentov in vrnjenih vrst funkcij na ravni ABI. V primerjavi s prejšnjimi različicami je združljivost zagotovljena na ravni ABI tipov "char" in "u32", ki imata enako velikost in poravnavo.
  • Poleg predhodno razpoložljivega klica "any::type_name::". ()«, ki vrne opis niza za vrsto, določeno v parametru »T«, je bila dodana funkcija »type_name_of_val(&T)«, ki vam omogoča, da pridobite informacije o vrsti na podlagi katere koli neimenovane reference. fn get_iter() -> impl Iterator { [32, 1, 2].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter); naj vsota: i3 = iter.sum(); println!("Vsota `{iter_name}` je {sum}."); } Rezultat je: vsota `core::array::iter::IntoIter `je 32.
  • Nov del API-ja je bil premaknjen v kategorijo stabilnega, vključno s stabiliziranimi metodami in implementacijami lastnosti:
    • Arc::unwrap_or_clone
    • Rc::unwrap_or_clone
    • Rezultat::pregled
    • Rezultat::inspect_err
    • Možnost::pregled
    • type_name_of_val
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{from_ref, from_mut}
    • ptr::addr_eq
  • Tretja raven podpore je bila implementirana za platforme {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios in arm64e-apple-darwin. Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja, objave uradnih gradenj ali preverjanja, ali je kodo mogoče zgraditi.

Poleg tega lahko opazimo predstavitev eksperimentalnega razporejevalnika opravil scx_rustland, napisanega v jeziku Rust in izvedenega v uporabniškem prostoru (prenos logike razporejanja opravil iz jedra v uporabniški prostor je izveden z uporabo orodja sched-ext z uporabo BPF). Razporejevalnik je optimiziran za povečanje prioritete interaktivnih nalog pred nalogami, ki zahtevajo CPE. Na primer, pri preizkusu zagona igralne aplikacije hkrati z gradnjo jedra nam je razporejevalnik scx_rustland omogočil doseganje višjih FPS v igri kot pri uporabi standardnega razporejevalnika EEVDF.

Vir: opennet.ru

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